第 18 章 · 多 Agent 工厂与规模化
本篇目标:把 1 个 Agent 的 Harness 扩成 10+ 并发、成本可控、无人值守的产线。 社区 一个 Agent 的 Harness 是配置,十个 Agent 的 Harness 是编排平台。
18.1 从 1 到 10,多了哪些东西
社区 单 Agent 与多 Agent Harness 的对照(amux 等编排平台的共同骨架):
| 挑战 | 单 Agent Harness | 多 Agent Harness |
|---|---|---|
| 任务分配 | 你敲一句 prompt | Kanban 板 + 原子任务认领(REST API) |
| Git 隔离 | 一个分支 | 每 Agent 一个 worktree,各自从 main 切出 |
| 恢复 | 手工重启 | 用量上限后自动恢复;宿主重启后 worker 回归;stall 告警 |
| 协调 | 不需要 | 会话间消息、共享任务板、session peek |
| 监控 | 盯着终端 | Web dashboard,全会话 SSE 实时状态 |
| 成本 | 看 API 账单 | 按 session 记账,dashboard 内可见 |
| 上下文 | 一份 AGENTS.md |
root + 每 session steering + 共享 memory(REST) |
| 运行位置 | 笔记本,合盖即停 | 自托管常驻机 / 自己的 always-on 服务器 |
| 夜间运行 | 「屏幕 + 祈祷」 | 无人值守 + 健康监控 + 卡住告警 |
判据 22:并发的头号失败模式永远是共享可变状态,不是模型能力。先解决 worktree 隔离与任务原子认领,再谈更聪明的编排。
18.2 确定性节点与智能体节点分离
社区 Stripe「Minions」每周交付约 1300 个 AI 生成 PR,其关键设计是把流水线拆成两类节点:
| 节点类型 | 例子 | 执行者 | 特点 |
|---|---|---|---|
| 确定性节点 | 跑 linter、push commit、建分支、跑测试 | 普通代码 | 快、可重放、零模型成本 |
| 智能体节点 | 实现功能、修 CI、写测试 | LLM | 慢、贵、有方差 |
这条分离是规模化最重要的一条架构原则:能让脚本做的事,绝不让模型做。它同时降低 token 成本、延迟与不确定性,也让故障定位简单一个数量级。
一手案例:OpenAI 的 agent-first 实验
官方 Ryan Lopopolo, Harness engineering: leveraging Codex in an agent-first world, 2026-02-11:
| 事实 | 数值 / 原文 |
|---|---|
| 约束 | 0 lines of manually-written code(应用逻辑、测试、CI、文档、可观测性、内部工具全部由 Codex 生成) |
| 规模 | 五个月约 100 万行代码,约 1,500 个 PR,最初 3 名工程师、人均 3.5 PR/天,扩到 7 人后吞吐反而上升 |
| 效率 | 估计约为手写耗时的 1/10 |
| 起点 | 2025-08 下旬空仓库首个提交;连最初的 AGENTS.md 也是 Codex 写的 |
| 信条 | "Humans steer. Agents execute." |
四条对本系列直接构成印证的经验:
- 早期慢不是模型不行,是环境欠规格:原文 "the environment was underspecified",缺的是工具、抽象与内部结构。这正是第 03 章 information parity 与第 06 章定责二分法的规模化版本。
- 给地图,不给百科全书:"give Codex a map, not a 1,000-page instruction manual"——短
AGENTS.md当目录,设计文档、规格、执行计划、技术债记录放进结构化docs/。与第 07、10 章的指针化原则一致。 - 约束不变量,不微观管理实现:"By enforcing invariants, not micromanaging implementations"——固定分层、边界处解析数据形状、结构化日志、文件大小限制,靠 CI 与自定义 linter 强制。第 08 章的 hook / coverage test 就是这条的单 Agent 版。
- 熵需要垃圾回收:Codex 会复制仓库里已有的坏模式,团队一度每周花 20% 时间清 "AI slop";后来把 golden principles 编码进仓库,让后台任务定期扫描偏差、更新质量评分、开定向重构 PR。这是第 07 章「月度复审删除规则」的自动化形态。
还有一个与本系列的直连点:原文把「让 Codex 自审 → 请求更多 agent review → 响应反馈 → 循环直到所有 reviewer 满意」明确称为 Ralph Wiggum Loop——与第 14 章 DSH 的 ralph 工具(每轮换全新子 Agent 推进同一目标)是同一思想的不同实现。
⚠️ 原文自己给出的边界必须一并引用:"This behavior depends heavily on the specific structure and tooling of this repository and should not be assumed to generalize without similar investment." 这些数字是单个团队在强 Harness 投入下的结果,不是行业基准,也不是你可预期的产出。
社区 amux 指南还提到 Stripe「Minions」每周约 1300 个 AI 生成 PR,以及「确定性节点 vs 智能体节点」的分离;本教程未定位到 Stripe 一手公告,仅作为架构线索。
18.3 成本与容量模型
生产 Harness 必须把成本当成一等约束,而不是月底看账单。
| 成本来源 | 可控手段 | 对应章 |
|---|---|---|
| 常驻工具与提示词开销 | 按需准入、Skills、PTC、极简模式 | 09 / 10 |
| 多轮中间结果回灌 | return 只回聚合、工具结果落盘 |
09 |
| 重试与死循环 | max_steps、max turns、stall 检测 | 02 / 16 |
| 推断性 sensor | 能确定性就别用 LLM judge | 08 / 15 |
| 全用最强模型 | 模型分层:规划用强模型,执行/校验用中档 | 14 |
| 重复计算 | 缓存、相同输入去重、模型路由 | 09 |
| 无人值守空转 | 时间窗告警 + cost budget 硬上限 | 16 |
一个可落地的最小预算表:
单任务预算 = 常驻开销 × 轮次 + 工具结果 token + 输出 token + judge 开销
日预算 = 单任务预算 × 并发数 × 日均任务数
硬约束 = 日预算上限 + 单任务 max_turns + 每 session token 记账 + 超限熔断
官方 自动化鉴权的一条实操提醒:headless 自动化的受支持路径是 ANTHROPIC_API_KEY 或长生命周期 OAuth token,订阅登录不是受支持的无人值守路径;夜间任务要按计量 API key + 月度花费上限来预算,别假设订阅覆盖。DSH 侧同理:Harness 免费,模型调用按量计费 原文。
18.4 可观测性:从「看终端」到「看窗口」
| 层级 | 记什么 | 回答什么问题 |
|---|---|---|
| Event | 每次 model call / tool call 的 status、start、finish、duration | 这一次 run 发生了什么 |
| Trace | workflow span / node span / tool call span(OTel) | 时间花在哪一步 |
| Session | token 计量、错误数、执行次数、成本 | 哪个 session 在烧钱 |
| Window | 10 分钟错误率、1 小时成本、24 小时执行量 | 是不是事故 |
| Audit | who / to what / succeeded,脱敏 | 谁动了什么 |
社区 一句运维判据值得记住:「一次失败是噪音,十分钟十二次是事故。」 单事件阈值会误报也会漏报,生产告警必须落在时间窗上,并在上线前用最近 24 小时数据 backtest。
官方 DSH 侧对应 subsystems/session-telemetry、token-meter、append-only 事件日志与 Trajectory;但告警系统需要自建(第 16 章已标注为 推断)。
18.5 规模化的六个反模式
| 反模式 | 后果 | 替代 |
|---|---|---|
| 多个 Agent 共用一个工作目录 | 互相覆盖、diff 不可归因 | 一 Agent 一 worktree |
| 把调度逻辑写进某个 Agent 的提示词 | 单点、不可重放 | 外部任务板 + 原子认领 |
| 所有节点都用最强模型 | 成本线性爆炸 | 确定性节点 + 模型分层 |
| 用 LLM 判断「格式对不对」 | 贵、慢、漂移 | linter / typecheck |
| 合盖即停的笔记本跑夜间任务 | 「屏幕 + 祈祷」 | always-on 宿主 + 健康监控 |
| 没有按 session 记账 | 月底才知道超支 | 实时 token/USD 看板 + 熔断 |
18.6 本章产出与验收
核心产出:一张 10 并发产线架构图(任务板 / worktree / 恢复 / 监控 / 记账 / 审计),加一份日预算模型与一次超限熔断演练记录。
验收点:
- 能解释确定性节点与智能体节点为何必须分离
- 能画出 worktree 隔离与合并队列的关系
- 能给出自己场景的单任务预算公式与三个硬约束
- 能说明为什么告警必须按时间窗而非单事件
- 能指出 18.5 里自己架构已经踩了哪几条
延伸阅读
| 来源 | URL | 等级 |
|---|---|---|
| amux, The Complete Guide(1→10 对照 / 规模案例) | https://amux.io/guides/harness-engineering | 社区 |
| Heym, Harness Engineering(alerts / cost / audit) | https://heym.run/blog/harness-engineering | 社区 |
| 码森林, 生产级 Harness 三级递进 | https://www.masenlin.com/archives/harness-engineering-cai-shi-ai-bian-cheng-de-zhong-ji-sha-qi | 社区 |
| 官方文档 · 会话遥测 / Token 计量 | https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/session-telemetry | 官方 |
| Claude Code · WorktreeCreate / WorktreeRemove hooks | https://code.claude.com/docs/en/agent-sdk/hooks | 官方 |
| FDE-Wiki · 专题二十 AI 系统可观测性与 SRE | https://fde-wiki.github.io/topic20 | 社区 |
| FDE-Wiki · 专题五十四 容量规划与成本建模 | https://fde-wiki.github.io/topic54 | 社区 |