返回 FEED
AGENT1749025080000

用 125 个 AI Agent 协作筛 115 份简历:$65 跑完全流程

Jarod Xu 公开了一次小实验:把 Notion 招聘库接上 Claude Code,用 dynamic workflow 让 100 多个 AI agent 并行去读简历、按统一标准打分、互相"挑刺",最后吐出一份可以直接拿来约面的排名报告。

结果:115 份简历,125 个 agent,13 分钟,$65。

但成本不是重点。更值得看的是这套流程暴露出的方法论问题:什么时候该用一群 agent 而不是单个、怎么防止 AI 打分通货膨胀、以及"卓越"到底该怎么被写进一个可执行的标准里。

Dynamic Workflow:把"机械活"和"判断"分开

平时用 AI 是一问一答:给 prompt、拿回答、不满意再追问。处理单个任务很好用,但碰到"对 115 个对象做同一件事"就别扭——要么手动复制 115 次,要么让一个对话顺序处理,越跑越慢、越跑越乱。

Dynamic workflow 是另一种模式:用一段代码编排一群 AI agent 的协作。 它的核心特点是把"机械活"和"判断"明确分给不同的执行者:

  • 控制流(循环、分发、汇总、配额)交给代码,保证可复现、可审计
  • 主观判断("这份简历够不够好")交给 AI agent

工程上具体表现为四种能力:可以构建脚本+Agent 混合的不同模式(典型的是扇出 fan-out,一句 parallel(...) 就能拉起几十上百个独立 agent);支持多阶段流水线(第一阶段产出喂给第二阶段,中间可插入代码做筛选/排序/去重);强制结构化输出(每个 agent 返回严格符合 schema 的 JSON,后续代码直接消费);

一次问答 = 找一个专家聊一下午。Dynamic workflow = 临时组建一个 125 人的评审团,给每人发一份标准、分配一份材料、并行评审、再交叉复核、最后汇总成榜单。 组建、分发、汇总这套流程是写死在脚本里的。

这次招聘初筛是这种模式的典型场景:对象多(115 份)、标准统一、判断主观、要求公平

三个关键设计决策

决策一:标准与代码彻底分离

把评价标准写成独立的 Markdown 文件(criteria/ 目录),而不是埋在代码里。任何同事——包括不懂代码的——改这些 MD 就能改变筛选行为。

这套标准文件包括:

  • 00-philosophy.md — 总纲:我们在找什么样的人 + "宁缺毋滥"铁律
  • 01-young-pedigree.md — 年轻 × 好底子(权重 20%
  • 02-ai-agent-fluency.md — AI Agent 原生能力(权重 35%
  • 03-grit-problem-solving.md — 解决问题 & 克服困难(权重 30%
  • 04-talent-lens.md — 顶级人才透镜(权重 15%
  • scoring.md — 合成公式 + 分档 + 5% 配额规则

四个维度的设计取向

  • AI 原生能力 35%:2026 年会不会真正把 Claude Code / Codex 这类 agentic 工具变成工作方式,是生产力分水岭。反关键词堆砌——简历里写"熟悉 Claude Code"但拿不出项目佐证,按弱信号处理。
  • 解决问题硬证据 30%:找"硬骨头"的痕迹——从 0 到 1 独立做出的东西、克服真实困难的叙事,而不是教程级复刻。
  • 年轻 × 好底子 20%:学历是"潜力的代理变量",是门槛不是目的。名校 + 平庸产出会被压分;**非名校但能自学做出真东西的"破格者"**反而加分。
  • 顶级人才透镜 15%:故意主观——想象 Claude 团队或 Elon Musk 在看这份简历,会不会"想立刻发条消息说我们聊聊"。捕捉前三项打分表抓不到的 agency / taste / velocity。

决策二:把"宁缺毋滥"做成硬约束

scoring.md 里写死铁律:进入 S 档的人数 ≤ 全体的 5%。所有 agent 打完分后,代码会全局裁剪:即使很多人原始评分够 S,最终也只放行前 5%,其余降级。

这是为了对抗一个已知问题:AI 打分天然偏宽容。你不给硬约束,它会把一半人评成"优秀"。

决策三:加一道"对抗性复核"防虚高

光打分不够。单个打分 agent 容易被简历里的亮眼关键词带节奏("发表顶刊""自研框架")。排名靠前的候选人,会再经过一组"魔鬼代言人" agent——任务就是尽力反驳"这个人配得上顶级",对证据不足的高分做向下校准。

完整工作流

整个流程分六步,打分/复核 = Agent,合成/裁决 = 代码

  1. 代码:【准备】 Notion 招聘库 → CLI 拉取 → 每位候选人生成独立数据文件
  2. Agent:【Phase 1 · 打分】 115 个 agent 并行,每个读 6 个标准 MD + 自己那份候选人数据 → 主动访问其 GitHub / 作品集核验证据 → 输出 4 维分数 + 依据 + 亮点 + 风险
  3. 代码:【确定性合成】 加权总分 → 排序 → 算 5% 配额 → 挑出 top 送复核
  4. Agent:【Phase 2 · 对抗性复核】 "魔鬼代言人"逐一审查 top 候选
  5. 代码:【确定性裁决】 校准后分数重排 → 应用 5% 铁律 → 最终分档 S / A / B / C / D
  6. 代码:【输出】 结构化排名报告

这个分工是刻意的:凡是数学(加权、排序、配额)交给代码保证可复现;凡是判断(够不够好)交给 AI。

执行实况

跑了什么:115 份"初筛简历"状态的候选人,覆盖 Agent Researcher / Agent Engineer / Growth 等岗位。125 个 agent(115 打分 + 10 对抗复核)。全程约 13 分钟(并发上限约 14,分 8 波跑完)。

结果分布

档位人数
S(顶级)0
A(优秀)0
B(合格)6
C(普通)26
D(不推荐)83

5% 的配额(5 个名额)一个都没用上——不是配额机制把人砍掉了,而是绝对阈值先把所有人挡在了 A 档之外。

排名顶部长什么样:清一色是真正动手"造过 agent"的人,而不是"听说过 AI"的人

  • 第 1 名:知名研究型高校在读硕士,从零自建了一个 Claude Code 风格的多 agent 工作台——包含 agent 主循环、工具调用解析、上下文压缩、子 agent 派生、安全门控等模块,全部是可验证的真实代码
  • 第 2 名:在读硕士,部署上线了一个真实可访问的多 Agent 系统(垂直领域应用),叠加学术产出
  • 其后还有:用 Go 从零写 agent 编排引擎的、参考 Claude Code 实现轻量 coding agent 并上线产品的、七天用 AI 工具独立做出一款带本地 LLM 的游戏的

共同点:强信号几乎都不在简历正文里,而在 GitHub 和作品集里。 这正是为什么让每个打分 agent 都去主动访问链接做证据核验,而不是只读简历文本。

三个洞察

洞察一:对抗性复核真的拦下了"虚高"

最典型的是前两名。打分阶段它们的加权分都到了 82 分(够冲 A 档甚至摸 S 档的边)。但"魔鬼代言人"复核后,把它们压到了 75 分左右,理由非常具体:

"真造了一个可验证的多-agent 工作台,AI 原生能力是硬信号——但项目仅约 3 周龄、单人、0 star、无测试,概念上是复刻而非原创攻坚,简历除学历一行外几乎无其他底子证据:是扎实的潜力股,但不配顶级。"

"真实可验证的 AI-native builder,但所谓顶刊产出全凭招聘备注、无任何可独立核实的证据,核心系统后端代码私有无法确认个人贡献边界——用未证实的学术光环冲顶级,属于被关键词带节奏。"

它没有否定这些人的价值,而是把"被光环放大的分数"挤回到证据能支撑的水平。 一个打分 agent 容易上头,但让另一组 agent 专门唱反调,虚高就压下来了。

洞察二:S:0 / A:0 不是 bug,是一面镜子

第一直觉会觉得"全军覆没"是不是标准定错了。但仔细看:

  • 大量候选人简历信息密度极低,关键维度(AI 经验、可验证作品)直接缺失
  • 不少应聘 Agent 岗位的人,简历里零 agentic 工具痕迹、无 GitHub
  • 还混进了猎头的商务邮件、LinkedIn 的系统通知——这些脏数据也被如实识别并打了 0 分,顺带帮发现了招聘库需要清洗

严格的标准把"信号"和"噪声"清晰地分了层。 真正的 builder(前 6 名)和"优秀的普通人"(中间档)被干净地区分开——宁可漏报,不可通胀

待团队讨论的开放问题:当前 A 档线(78 分)对"在校生只有 GitHub、还没有大厂战绩"这类人是不是偏苛刻?复核 agent 自己在评语里把前两名称为"扎实的潜力股",却因为加权分卡在线下落进了 B 档。这个阈值要不要为高潜力学生松一档,值得看完真实面试质量后再定。 而这件事的好处在于:调整只需要改一个 Markdown 文件里的一个数字,不用动任何代码。

洞察三:"标准即代码"让讨论变得具体

过去讨论招聘标准,容易停留在"我觉得要找有冲劲的人"这种没法落地的层面。这次因为标准是写下来的、带权重和锚点的,讨论一下子变具体了:

  • AI 能力该占 35% 还是 40%?
  • "破格者"到底加多少分?
  • 配额是 5% 还是 8%?

每一个分歧都对应 MD 里一处可以修改的地方。标准从"口头共识"变成了"可版本管理的资产"。

成本与 ROI

这次到底花了多少钱(模型:Claude Opus 4.8):

项目Tokens单价金额
未命中 input2,306,691$5.00/M$11.53
缓存写入6,536,462$6.25/M$40.85
缓存读取12,806,404$0.50/M$6.40
output248,312$25.00/M$6.21
合计≈ $65

折算下来:$0.57 / 候选人(约 ¥4 / 人),全部 115 人共约 ¥468。

反直觉的发现:成本大头是"缓存写入"

很多人会以为 115 个 agent 读的是同样的 6 个标准文件,缓存应该能帮大忙。但实际不然。

prompt 缓存是按前缀精确匹配、且每个会话独立的。125 个 agent 是 125 个独立会话,每个的任务描述都不同(读的是不同候选人的数据),所以 agent A 写入的缓存,agent B 命中不了。缓存真正生效的地方是每个 agent 自己内部的多轮工具调用(读标准 → 访问 GitHub → 访问作品集 → 输出,后面每轮重读前面的内容)。

这带来一个架构层面的认知:扇出(fan-out)模式会放大"缓存写入"成本(每个 agent 都要建一份自己的缓存),代价是换来了"判断不串味"和"省掉上下文二次方累积"。这是个权衡,对追求判断质量的场景是划算的。

ROI 怎么算

直接对比人工:一位面试官认真读一份简历 + 查 GitHub + 写评语,保守算 5–10 分钟。115 份就是 10–19 小时的专注工作,且越到后面标准越漂移。

而这套工作流:

  • ¥4 / 人,十几分钟出全量排名
  • 每个人都有四维打分 + 文字依据 + 风险点 + 对抗复核结论,比草草扫一眼的人工初筛更结构化
  • 标准绝对统一,第 1 份和第 115 份用的是同一把尺
  • 可复现、可审计——为什么某人是 B 不是 A,有完整链路

更重要的是 ROI 不止省时间:它把面试官的注意力重新分配了——不用再在 83 份明显不合适的简历上耗精力,直接聚焦到前 6 名真正的 builder 上。这才是初筛环节最大的价值。

还能更便宜吗

能,但不一定需要。如果未来要常态化、高频跑(比如每天几百份),可以:

  • 打分阶段换 Sonnet,只有对抗复核用 Opus——预计省 70–80%,质量损失很小
  • 精简标准 MD、或先用便宜模型粗筛再上 Opus 细评

但在"招聘"这种低频、高价值、要看准人的场景,¥468 跑完一整批、还能反复迭代标准——直接用最强模型,别为省这点钱牺牲判断质量。

写在最后

这次实验真正让人兴奋的,不是"AI 能筛简历"——那不新鲜。而是 dynamic workflow 这种"代码编排 AI 群体"的模式,让一些过去只能靠人肉和感觉的工作,第一次变得可结构化、可复现、可迭代

招聘只是一个切口。同样的模式——把标准抽象成可读文件 + 扇出并行处理 + 对抗性复核 + 确定性汇总——可以迁移到很多"对大量对象做统一主观判断"的场景:内容审核、代码评审、用户反馈分类、竞品分析……

标准还是 v0.1,一定不完美。但它现在是一份可以被讨论、被修改、被版本管理的资产了。