ESC
↑↓ 选择↵ 打开esc 关闭⌘K 唤起
← Home NO.20
第 20 期 · AGENT 工程 · 收录于 2026 年 8 月 15 日

拆解臃肿智能体

A工
Anthropic 工具技能还是子代理 · Claude
视频 45:06 原文约 4.2 万字 预计阅读 29 分钟 来源视频 ↗ 中英对照全文
双人对谈 · 本期速读电台 00:00 / 38:07
TL;DR · 三句话
  1. 一个原本好用的 agent(agent=能自己理解任务、自主调用工具、多步完成目标的 AI 程序;这里是库存管理 agent「Stock Pilot」),因为上线后被持续硬塞新能力却不升级架构,system prompt(系统提示词)膨胀到约 400 行、挂了 12 个 tool(其中 3 个其实是对 subagent 的封装),导致「原本被它加速的环节反而出现倒退」、eval 分数下滑;解法是用 tool / skill / subagent 三种 agentic 原语(搭 agent 的三类最基础积木)把它重新拆解。→ 详细
  2. 核心方法论是「上下文工程」三连招:① system prompt 只留「不管交给 Claude 什么任务、它都得时刻记在脑子里」的信息;② 把「只在某些时候才需要」的业务逻辑搬进 skill(一包可被随时拉进上下文的信息)做渐进式披露;③ tool 优先复用 Claude Code 那套类人原语(bash / 文件系统 / 写跑代码 / 网页搜索),而非到处自建死板 tool 或一上来就直奔 MCP。→ 详细
  3. 改造后 system prompt 从 400 行缩到 15 行、tool 从 12 个简化为 bash / read / write 三个、只保留一个「预测」subagent(用 CMA 的原生 callable agents 而非把它包成 tool);eval 分数从实测 62%(README 标称 83%)爬到约 92%,单任务 token 用量从 20 万+ 大幅下降,成本和耗时同步下降。→ 详细

主讲人 Will,来自 Anthropic 的 Applied AI 团队,本场是在伦敦 Code with Claude 大会上的单人动手实操(hands-on)分享。他亲口描述工作性质:「我基本上一半时间做内部工程工作,另一半时间和客户一起搭建 agent」——所以每条踩坑与原则都来自内部 + 真实客户的双重实践。→ 详细 本场目标明确:模拟一个「已经膨胀到一定复杂度、开始出现性能退化的 agent」,一步步过一遍「作为工程师和架构师,要做哪些决策,在保留新增能力的同时把期望的性能找回来」。全程围绕 tool、skill、subagent 三种原语,核心就是那句反复出现的灵魂三连:什么时候用 tool?什么时候用 skill?什么时候用 subagent? → 详细 典型剧情(Will 让全场代入):你搭个 agent 解决某个具体问题、上线后跑得特别好——「我相信在座很多人其实都干过这种事」;正因太好用,上线几周后有人来加新能力,再过几周又来新业务需求,于是不断往上加。→ 详细 「这个模式不断重复、重复,等你回过神来」——system prompt 已长到好几百行、挂着几十个 tool 和 subagent;而正是这种复杂度,让「原本被 agent 加速的环节反而出现了倒退(regression)」。加法加过头,反成减法。→ 详细 Will 特意安慰「你并不孤单」——「这种情况在客户身上挺常见的,其实我们自己(Anthropic)也一样会碰到」。→ 详细 案例是 Stock Pilot,一个「为一家中型零售商量身设计」的库存管理 agent→ 详细,能做五件事:① 标记低库存(flag low stock);② 需求预测(forecast demand);③ 挑供应商(pick suppliers);④ 开采购单(file POs);⑤ 给员工写周报。Will 强调「这些能力单看每一项都不复杂」——问题不在功能,而在「我们随时间把一项项能力硬塞(bolt on)上去,却没同步升级架构」。→ 详细 演进是部「复杂度堆叠史」:先收到「加点预测能力」需求,团队「基本上就是直接起一个预测器当作 subagent」;后来又收到「加写报告」需求,于是「又为写报告加了一个 subagent」——两次随手「加 subagent」,就是后面复杂度失控的种子。→ 详细 今天的架构由一个单一编排器(orchestrator,居中调度、决定何时调哪个工具/子代理的"总指挥"AI) 驱动。→ 详细 关键的"改造前"基线数字:system prompt「已长到大约 400 行」;有 12 个不同的 tool,其中 3 个其实是对 subagent 的封装(wrapper),而这些 subagent「拥有完全隔离的 context window(各自一块互不可见的"记忆/工作区")」。→ 详细 repo 里有个 before 文件夹复刻了这个臃肿版本,一句话概括病灶:「一个 orchestrator、一个超长 system prompt、一大堆 tool、一大堆 subagent」——直接结果是「eval 分数开始往下掉(dip)」。→ 详细 Eval 全景:12 个任务横跨 5 类评分器——R1R9 为单轮回归任务、F1F3 为多轮失效模式;grader 含 exact_match / set_match / numeric_tolerance / llm_judge / composite 等;底部记分公式与 before/after 基线区间12 个 eval 任务,「横跨 5 种不同类型的评分器(grader)」;同事 Geary 本场前刚专门讲过 eval,所以这里只快速带过。→ 详细 两套 ID 命名:R 开头 = regression(回归),是「更贴近真实场景的单轮(single-turn)任务」——「给模型一个任务,模型理解、调用一些 tool、返回回复,我们本质上就在评估这个回复」;F 开头 = failure mode(失效模式),评估「更复杂的多轮(multi-turn)任务」。→ 详细 → F grader 分两大类:① 确定性(deterministic)——评「轮数、延迟、token 消耗」这类客观可量化、会「持续追踪随时间变化」的指标;② 非确定性(non-deterministic)——用「LLM 当裁判(LLM as a judge)」去评「人格、语气、风格、输出质量」这类没标准答案的软性特征。→ 详细

🎯 于你何益 为你定制 · 非通用结论

这一期几乎是为你量身定制的——它讲的「一个好用的 agent 被持续硬塞新能力、却不升级架构,最后膨胀到 400 行 prompt + 12 个 tool(其中 3 个是 subagent 封装),性能反而倒退」,就是你 Holdwell 多-Agent PRD 工厂要时刻提防长成的样子(三驾马车 + 碰撞协议也挡不住"能力越塞越多"的惯性)。Will 不是给你讲理论,他给的是一套可照搬的诊断 → 拆解 → 验证流水线,外加一条「subagent 该砍就砍」的反直觉判断。下面按你的项目逐条对。

Holdwell 多-Agent PRD 工厂

1 ·「regression(倒退)」这个词本身就是你该装的报警器

  • 怎么做的:Will 的整场动机是一句话——「正是这种复杂度,让那些原本被 agent 加速的环节,现在反而出现了倒退」。他不是凭感觉说"变慢了",而是有 12 个 eval 任务在跑,实测从标称 83% 掉到真实 62%(12 个里只过 7 个),用一个客观分数捕捉到了"越加越烂"。
  • 你可以怎么做:你的工厂痛点清单里写着「agent 产出的可观测/可验证」——这正是你没有那个 62% 数字。挑 3–5 个你最在意的 PRD 产出场景(比如"给一个中等复杂度需求生成 PRD"),各写一条期望产出,跑一遍现在的工厂存档,先拿到你自己的那个基线分。没有基线,你永远说不清新改的一版 agent 定义到底让工厂变好了还是变坏了。

2 · system prompt 只留「时刻要记的」,业务逻辑全搬进 skill(你正好相反)

  • 怎么做的:黄金原则原话——「system prompt 里应该只放那些,不管你交给 Claude 什么任务、它都必须时刻记在脑子里的信息;skill 特别适合打包那些 Claude 只在某些时候需要、而不是一直需要的信息」。Stock Pilot 的反例就是"把所有策略和流程规程不断往 system prompt 追加",最终 400 行;改造后压到 15 行,业务逻辑全部换成 skill 按需加载。判据极干净:这条信息是不是"不管干啥都得记着"?不是 → 进 skill。
  • 你可以怎么做:拿你三驾马车的 agent 定义(.Codex/agents/*.toml)逐个过这把尺子。每个角色定义里凡是"只有写某类需求才用得到"的规程(某条 ERP 业务规则、某条产品线的填写规范、某个 entity 的字段约定),都该是按需加载的材料、而不是常驻在角色 prompt 里把它撑长。你「跨线对齐」这个痛点尤其关键——实体定义天生就是"渐进式披露"的料:别想着把六条线的实体全塞进某个总 prompt,把它们做成一组可被任意角色按需拉取的共享文件,反而填得动、也不污染上下文。

3 · R8 的"矛盾策略"幻觉,精准复刻你"跨线对齐"的风险

  • 怎么做的:R8 失败的根因是「两条不同的策略,分别写在 system prompt 里相距很远的两个地方,结果彼此矛盾」——agent 把基线(12 单位/天)和促销乘数(3.1x)都查对了,落笔却把 3.1 写成 1.35,整道预测全错。Will 的定性是全片核心:「这不是模型本身的问题,而是我们给模型周围铺设的信息出了问题」。
  • 你可以怎么做:你最头疼的「跨线对齐」本质就是同一个病——同一件事有两套说法散落在不同产品线 / 角色的材料里,模型在两套之间被搞糊涂。与其靠人去对齐,不如把"哪条策略是唯一真相"收进一个单一权威定义(一个概念只在一处定义),让所有角色都从这一处取;R8 告诉你,矛盾不会报错、只会悄悄算错一个数,比崩溃更难抓。

4 · subagent 的两个唯一时机 + 「该砍就砍」——直接回答你"工厂里哪些角色该是独立 agent"

  • 怎么做的:Will 把 subagent 收敛到只有两个正当时机:①「想用大量 Claude 算力群攻一个问题」(deep research、代码库探索这种可并行的);②「需要一个全新、不带前文 context 的干净大脑来审视」(写代码的人不该自己 review 自己,要找别人)。除此之外的反直觉建议更狠:「前沿模型已经足够聪明,能跨越更多信息进行管理,你根本不需要那么多 subagent……很多客户在做的是干脆把能力吸收进主编排器」。Stock Pilot 五个能力,最后只保留一个「预测」subagent(因为它符合时机②:不想让对话上下文污染预测过程),其余全部内联回主 agent。
  • 你可以怎么做:拿这把尺子审你的三驾马车——好消息是你的碰撞协议本来就建立在时机②上(UX 与 tech 独立初稿、互不可见,正是"隔离的干净脑子")。要警惕的是将来的惯性:再想加新角色 / 新 subagent 时,先问它属于"群攻"还是"干净脑子"哪个时机,都不属于就把能力内联进现有角色。Will 的 F2 失败——「subagent 把任务做对了,但 subagent 和 orchestrator 之间出现沟通断层」——就是你多角色协作"跨线对齐"难的根因。角色只留真正需要隔离的那几个,其余能力内联,工厂会更稳。

5 · 流程纪律的强制执行:把 hill climbing 焊进 eval,而不是焊进流程文档

  • 怎么做的:Will 的 workshop 是死循环四步——跑 eval 拿基线 → 对失败分诊(triage) → 更新设计 → 重跑 eval「朝着 eval 改善的方向往上爬(hill climbing)」。关键纪律藏在收尾第三招:「随着产品能力扩展,要确保 evals 同步更新,让它始终覆盖你真正在意、会在 agent 里去衡量的东西」——eval 不是一次性验收,是跟着 agent 一起长的活物。
  • 你可以怎么做:你想要的"碰撞协议强制执行",最硬的形态不是在 SOP 里写一句"必须评审",而是一个会失败的 eval:某个环节产出如果漏了该有的产物(比如碰撞环节没交齐补强/修正/第 3 案),eval 直接判 FAIL。把评审要求翻译成一两个可判定的 eval 断言,纪律就从"靠人自觉"变成"过不了线就红"。这也顺手治了你"agent 产出难验证"——闭环证据 = 那个能重复跑、会涨会跌的分数。

app_incubator

6 · tool 优先复用「类人原语」+ 四级选型,给你的 7-Agent 链路定起手式

  • 怎么做的:核心心法是「复用我们作为人类拥有的那套基础能力」——文件系统、网页搜索、写代码跑代码、待办清单,「这是构建 agent 永远的起点,然后再按需把它们去掉(先全给、再做减法)」。tool 选型有明确四级优先级:① 先用 Claude Code 原语 → ② 再建只有自己 agent 能用的本地自定义 tool → ③ 最后才接 MCP。反模式说得很直白:「很多人一上来就直奔 MCP,结果陷进一大堆功能相互重叠、杂乱无章的 MCP server」。
  • 你可以怎么做:你的 app_incubator 挂着 Figma / Chrome / Notion 三个 MCP——拿四级优先级回头审一遍:这三个里哪些能力其实用 Claude Code 的 bash + 代码执行直接调 CLI/API 就能做(Will 说的新趋势「直接用代码执行调 tool,而不是走 MCP,因为 MCP 会污染 context、占用大量空间」)?你的痛点是「把'该做什么'前移到 agent」——给链路里每个 agent 配齐"文件系统 + 代码执行"这套底座原语,它就能自己写脚本去探查设计稿、生成校验,而不是等你把"该做什么"喂给它。

7 · 文档分析别塞原始数据,让 agent 写脚本去算(设计稿即契约的省 token 解法)

  • 怎么做的:Will 最爱的例子——「给 Claude 一个 bash tool,让它写一段简短 Python 脚本、跑完再基于结果推理,这比直接把整个 CSV 上传到 context window 有效得多」。量化收益惊人:某任务 token 从 20 万+ 大幅下降,成本和执行时间同步下降。原理是"写代码跑代码读结果"用的 token 远少于"把所有数据塞进脑子再调动全部脑力"。
  • 你可以怎么做:你的"设计稿即工程强制契约"意味着 agent 要反复读 Figma 导出的结构化数据——别整段塞进上下文。让校验 agent 写脚本去比对设计稿字段和代码实现(diff 出哪里没对上),只把 diff 结果读回来推理。这对"激活/首屏体验"这类需要逐像素/逐字段核对的场景尤其省——上下文干净了,agent 反而看得更准。

你本人(怎么搭 agent · 元能力)

8 ·「换更聪明的脑子即可升级,架构不动」——这是你做任何 agent 的北极星

  • 怎么做的:Will 对"为什么复用类人原语"给的本质解释——「每当我们发布更强的新模型,就能直接把更好版本的 Claude 替换进来,而 Claude 用这些基础能力的水平也会比以前更好」。比喻很妙:「就像大会结束后的你 vs 刚进会场的你,工具还是同一批,但脑子大了一点,用同样工具也能做得更出色」。
  • 你可以怎么做:你同时扛 Holdwell 工厂、app_incubator、StockHelp、CoS、小红书一堆 agent——精力是你的元约束。这条心法是省精力的杠杆:凡是你能用"类人原语 + skill 按需加载"搭出来的 agent,下次 Opus 升级你几乎零改动就白嫖一波性能;凡是你硬编码了一堆死板 tool / 把逻辑焊进 prompt 的,每次升级都得返工。搭的时候多想一步"这个能力是原语还是定制",本质是在给未来的自己省返工时间。

更深三角度

  • 该反着用:Will 是 Anthropic 工程师 + 服务付费客户,他有 CMA(Claude Managed Agents)兜底基础设施、扩容、内存、安全,所以他能"只专注 agent 架构"。你是一个人在本地跑 agent,没有 CMA 这层托管——所以他那句"把烂摊子甩给平台"你享受不到,但反过来对你是好事:你本来就不需要"成百上千用户同时用"的扩容,你的 agent 越简单、越接近一个本地 agent loop,越是你能扛得动的形态。别看他用了 CMA 就觉得自己的本地方案 low——他自己说"本地搭、本地跑很快很简单就能搞定",复杂度是被"托管 + 多用户"逼出来的,那不是你的问题。
  • 和你现在做法冲突:你的 Holdwell 工厂 2026-06 已经收口成"三驾马车 + 碰撞协议",方向和 Will 全片的箭头一致——砍 subagent、把能力吸收进主编排、prompt 从 400 行压到 15 行。但张力还在:你可能默认"角色越多 = 分工越清晰 = 越专业",他用 62%→92% 的实测说"前沿模型已经聪明到不需要那么多分身了"。不替你下结论——但值得你诚实问一句:现在的三个角色是不是都真需要隔离的干净脑子?以后想加第四个时,先拿这个问题过一遍。
  • 对你的镜子:你一直在"给工厂加能力"(加能力、加角色、加环节),但 Will 这一期的整个隐喻是——一个 agent 最危险的时刻,恰恰是它"太好用"之后。"几周后有人来加新能力、再几周又来"——这正是你作为唯一的 PM + 架构师,会本能地"满足每个新需求"的惯性。真正的架构师动作不是"还能加什么",而是定期问"我这次加的,配得上它带来的复杂度吗?不配的话,哪个该被吸收、哪个该被删?"。加法谁都会,你稀缺的判断力体现在减法上。

One Human Company 新号(2026-07 回填)

1 · 这期是一篇现成的 C 类验证体母题:「Anthropic 说 prompt 越短越好,我把 AI 员工的岗位说明书砍了一刀」

  • 怎么做的:Will(Anthropic Applied AI 工程师)用实测数字讲了一个反直觉结论——把 400 行 system prompt 压到 15 行、12 个 tool 砍到 bash/read/write 三个、subagent 只留一个,eval 分数反而从实测 62% 爬到 92%,单任务 token 从 20 万+大幅下降、一组任务成本从约 $6.50 降到 $1.06。他的判断句是「这不是模型本身的问题,而是我们给模型周围铺设的信息出了问题」。
  • 你可以怎么做:候选标题——《Anthropic 说 prompt 该从 400 行砍到 15 行,我把自家 AI 员工的说明书也砍了》。拿 drizzle tech 流水线里最臃肿的一个角色 prompt 照他的尺子砍一遍(只留"不管干啥都得记着"的,其余进 skill),跑同一个任务前后各一次,晒行数、token、产出质量三组对比数。闸门自检:删掉你的实测部分只剩"Anthropic 建议短 prompt"就是资讯搬运,不成立——所以必须带你自己的前后数字才发。可抄物现成:那句判据卡「这条信息是不是不管干啥都得记着?不是 → 搬出 prompt」。

2 · 「subagent 该砍就砍」是你 B 支柱最独占的一集:AI 公司的裁员复盘

  • 怎么做的:Will 把 subagent 收敛到只有两个正当时机——"群攻大问题"和"要一个不带前文 context 的干净脑子来 review",其余场景他的原话是「前沿模型已经足够聪明,你根本不需要那么多 subagent,很多客户在做的是干脆把能力吸收进主编排器」。案例 agent 五个能力最后只留一个预测 subagent。
  • 你可以怎么做:你的 9+1 角色流水线正好撞在枪口上。做一次公开的"编制审计":逐个角色问"你是真需要隔离的干净脑子,还是只是看起来更有组织?",把被合并/裁掉的角色写成一篇 B 类《我给自己的 AI 公司裁了 N 个员工》——裁员理由、合并后翻没翻车、省了多少 API 账单,全是你独占的第一手管理账。这个"两时机判据"本身就是可抄物(一张裁员决策卡)。能过闸门:没有你的裁员实录这篇不存在。

3 · A 类角度:eval 基线分就是你决策复盘的"证据格式"

  • 怎么做的:Will 的流水线是死循环四步——跑 eval 拿基线(README 标称 83%,实测只有 62%)→ 分诊 → 改设计 → 重跑爬坡到 92%。没有那个 62%,一切"我优化了 agent"都是嘴上说说。
  • 你可以怎么做:给正在 building 的第一个 App 的关键链路先写 3-5 条 eval,把"标称 vs 实测"的落差写进 A 类复盘——你的每篇"为什么做/翻了什么车"从此都带一个会涨会跌的分数,这比任何形容词都硬。自检:分数是你自己跑出来的,天然过闸门。

对你的镜子:Will 说 agent 最危险的时刻是"太好用之后"——别人不断来加需求,你本能地全接。你的新号也一样:4 支柱定完之后最大的风险不是没内容,而是什么热点都想蹭。他的架构师问法值得抄成你的选题问法:「这篇加进来,配得上它稀释掉的定位吗?」

所以呢

  • 思维模型 ·「先全给、再做减法」(start broad, then subtract)【耐用】:搭任何系统(agent、工厂、甚至你的副业组合)的起手式不是"从零一个个加直到够用",而是"给一套足够通用的底座原语,再按实测砍掉不需要的"。加法靠想象(永远想不全),减法靠 eval(数据告诉你哪个没用)。这条不依赖任何具体模型/平台,十年后照样成立。
  • 思维模型 ·「上下文工程 > 模型选择」【会过期】:Will 反复说"不是模型的问题,是我们给模型周围铺设的信息出了问题"——这在 2026 年是真知灼见,但它有保质期:随着模型上下文窗口变大、自己越来越会忽略噪声,"prompt 太长会糊涂"这个前提会逐步弱化,"砍 subagent"的临界点也会一路左移。别把今天的"前沿模型够聪明"当成永久结论,每次大版本升级都该重新跑一遍你的 eval、重新问"现在还需要这个分身吗"
  • 判断更新:你过去可能觉得"多-Agent = 更强",这一期该把它修正成——多-Agent 是有复杂度税的,subagent 只在"群攻"或"要干净脑子 review"两种时机才值回票价,其余时候,一个配齐类人原语 + skill 按需加载的单 agent loop,往往又快又便宜又准。
  • 这周一个赌注:给 Holdwell 工厂的一个最常用 PRD 场景,写 3 条 eval 断言 + 跑一次现有存档,拿到你自己的那个"62%"基线分。只要这一个数字落地,你"agent 产出难验证""碰撞纪律靠自觉"两个痛点就有了第一块可爬的坡——剩下的全是 hill climbing。
接着读