让智能体分工写代码:单个 PR 成本从 $3.59 降到 $2.14,一个 5 小时额度从 10 个 PR 做到 16 个
速览卡
- 分类:编程搭建
- 结果:同样中等努力度下,单个 PR 成本从 $3.59 降到 $2.14(降约 40%);每个 PR 占 5 小时额度从约 10% 降到约 6%,一个额度窗口能做的 PR 从约 10 个变约 16 个
- 状态:已实现(作者自测账本;美元数为 API 价折算标尺,实付为 20 欧元/月固定费;PR 更大:平均新增行数从 248 行变 392 行)
- 成本:Pro 固定月费内,无额外支出
- 耗时:搭好分工约一晚上
一句话
别让最贵的模型从头干到尾:主会话只做决策,写代码交给 Sonnet 子智能体、摸清任务交给 Haiku、提交交给 Haiku——作者实测每个 PR 便宜约 40%,省额度不是因为小模型便宜,而是主会话不再被测试输出和修复过程撑大。
原作者怎么做的
- 定分工(4 个子智能体,全部写在
~/.claude/agents/的 Markdown 文件里):
- implementer:Sonnet 5.5,中等努力度,Read/Write/Edit/Grep/Glob/Bash——写代码、写测试、跑检查,直到通过。
- scoper:Haiku 5.5,中等努力度,只读 + 计划模式、最多 12 轮——接陌生任务先出简报(目标、验收标准、相关文件、测试、拆分可能),每条结论必须指向文件。
- shipper:Haiku 5.5,低努力度,Read/Bash——只做提交、推送、开 PR;预检不过(无关文件、缺 changelog、分支是 master)就停下报告,绝不自己修、不 force-push。
- reviewer:Opus 5.5,只在作者要求或改动触及安全、并发、数据迁移、公开 API 时才出场;日常评审由主会话自己做,第二遍 Opus 评审“几乎和写代码一样贵”。
- 用一份用户级 CLAUDE.md 把分工钉死:任务够清楚就交给 implementer;小改动(几十行、主会话已完全知道怎么写)留在主会话——写交接文档和审 diff 的成本不比直接写低;implementer 只执行不重新设计,计划与代码冲突且需要大判断时必须报回;主会话审 diff 时不信 implementer 的“测试通过了”口头结论,必须自己看 diff、读关键代码、跑全量相关测试。
- 固定会话流程:给 issue 号 → 不熟的任务先跑 scoper(主会话抽查它点名的文件,联网核查留在主会话)→ 主会话定方案 → 把计划、验收标准、文件、已定决策、验证命令交给 implementer → 主会话读 diff、跑全套测试,有问题用 SendMessage 发回同一个 implementer(保住它的上下文,别新开一个)→ 作者要 PR 时交给 shipper。
- 立计量规矩:给状态栏脚本加几行,每当 5 小时或 7 天额度百分比变化,就往
~/.claude/usage-log.jsonl写一行(时间、会话、模型、两个百分比、会话成本);再把每个会话与记录里的gh pr create调用对上,算出每个 PR 的成本。作者同时声明了三处可能让数字变好的处理:并行会话的额度增长只算一次;排除一个发布日会话(8 个 PR、25% 额度、$10.67,全是微小版本 bump,算进去会显得更好看);scoper 和 shipper 是几天前才加的,大部分行只有 implementer 在干活。
结果
- 对照组(改分工前、纯 Opus 5.5 中等努力度、开单个 PR 的会话):24 个会话、24 个 PR,平均每个 PR 新增 248 行,成本 $3.59(已实现,作者按同一方法重算)
- 实验组(Opus 主会话 + 子智能体):10 个会话、13 个 PR(3 个会话各开 2 个 PR),平均每个 PR 新增 392 行,成本 $2.14(已实现,作者按同一方法重算;Claude Code 直接显示的 10 个会话合计为 $30.05、80% 额度,折合 $2.31/PR,作者说明自己的算法比 Claude Code 显示低几个百分点,只用于两组比较)
- 降幅:单个 PR 成本降约 40%($3.59 → $2.14);单个 PR 占 5 小时额度从约 10% 降到约 6%,一个窗口能做的 PR 从约 10 个变约 16 个(已实现,作者自测)
- 省在哪:主会话平均请求数从 75 降到 54,单次请求上下文从 119k token 降到 107k token——作者原以为省在 Sonnet 便宜,实测把子智能体 token 全按 Opus 价算也只贵 5%;真正省的是主会话不再反复重读测试输出和修复过程(已实现,作者自测)
- 附带变化:写作时 Sonnet 5.5 缓存读取价从 $0.20/百万 token 降到 $0.10/百万 token,作者重算后 10 个会话为 $27.31(原 $27.84),即 $2.10/PR——帮助很小,因为子智能体只占会话 token 的一小部分(作者自述)
提示词结构
(按原文做法还原的分工骨架,非原文逐字提示词)
```
主会话只做四件事:[理解任务] + [定方案与拆分] + [审 diff、跑全套测试] + [拍板完成]。
implementer(Sonnet):接 [issue 号] + [验收标准] + [相关文件] + [已定决策与边界] + [验证命令];只执行、不重新设计;冲突需要大判断时报回。
scoper(Haiku,计划模式、只读、12 轮封顶):出 [目标] + [验收标准] + [相关文件与测试] + [拆分可能];每条结论附文件路径;主会话抽查后再定方案。
shipper(Haiku,低努力度):只做 [预检] + [按名暂存] + [提交] + [推送] + [开 PR];预检不过就停下报告,不修、不 force-push。
reviewer(Opus):仅 [作者要求] 或 [安全/并发/迁移/公开 API] 时出场;日常不叠加第二遍评审。
小改动不分工:[几十行且已完全清楚] 就主会话直接写,交接成本高于收益。
```
中国读者怎么迁移
国内用 Claude Code / Cursor / Codex 的读者都能搬:先给最常见的三类子任务(跑测试、查代码、提交)各写一个模型字段明确的智能体文件,再在 CLAUDE.md 里写死“什么分工、什么不分工、主会话必须自己审 diff”。别先升级套餐——作者的账本说明,额度多半是被主会话反复重读测试输出吃掉的,不是模型不够贵。
风险与限制
- 美元数是标尺不是账单:作者实付每月 20 欧元固定 Pro 费;$3.59/$2.14 是 Claude Code 按 API 价算出的会话成本,只能用于两组比较,不许写成“每月省了多少钱”。
- 样本小且单人:对照 24 个会话、实验 10 个会话,两个副业项目(Draft Omen、Book Corners),不同项目、不同改动规模下数字会变。
- 额度百分比无小数:Claude Code 只报整数百分比,“<1%”表示当周计数器没动;并行会话会互相污染日志,作者只做了“每次增长算一次”的处理,仍非严格隔离。
- 分工本身有成本:写交接、审 diff、来回修都要 token;小改动、判断重的改动(架构重构、安全、复杂迁移)作者明确主张留在主会话。
- 价格已变:Sonnet 缓存读取价在写作时下调,照搬时以你当时的价目为准;Pro 额度规则也可能调整。
原文链接
https://www.andreagrandi.it/posts/claude-code-subagents-to-save-usage/