第33章:编排 Agent:从子智能体到终端编排工具

"工作流把计划搬进代码。用 subagent 和 skill 时,编排者是 Claude 自己;工作流脚本自己握住循环、分支和中间结果,Claude 的上下文里只留最终答案。"

—— Anthropic,《Orchestrate subagents at scale with dynamic workflows》

第 32 章讲的是单个 agent 内部的执行编排:计划、任务列表、走查文档。这一章往外走一层:一个上下文窗口装不下的任务,怎么让多个 agent 分头去做。

「多 agent」这个词被用坏过。给 agent 起名「产品经理」「架构师」「测试工程师」,让它们像公司部门一样互相传文档,这条路在实践里成批失败。原因不复杂:角色是人类的分工方式,LLM 没有「职业壁垒」,同一个模型既能写 PRD 又能写代码;信息在角色之间单向交接,传的是结论,丢的是推理过程,每个节点局部正确,整体漂移。

活下来的分工方式不靠角色头衔:任务记录是共享的,谁做了什么随时追加,接手的 agent 读到完整历史。这一章先看三家 CLI(Claude Code、Codex、OpenCode)各自怎么实现子 agent,再看一批跑在终端里的编排工具。

33.1 为什么需要多个 agent

两个动机。

第一个是上下文隔离。主会话的上下文窗口是稀缺资源,OpenAI 在自己的 Harness Engineering 实践(第 10 章)里反复强调这一点。让子 agent 去读三千行代码、跑测试、翻文档,把结论带回来,海量中间产物留在子 agent 自己的窗口里,主会话保持干净。

第二个是并行。互不依赖的工作单元同时开工,比如同时审查五个模块。子 agent 各有各的窗口,互不干扰。

并行带出一个工程问题:两个 agent 同时改同一个工作区,会互相踩。这一章后面所有工具给的答案是同一个:git worktree,每个 agent 一份独立的工作目录和分支。

33.2 Claude Code:subagent、agent teams 和动态工作流

Claude Code 的编排能力分三层,一层比一层重。

Subagent。 在项目的 .claude/agents/ 目录下放一个 markdown 文件,写清楚这个 agent 的职责、思维规则和输出格式,一个子 agent 就定义好了。主 agent 需要时派出去,它在独立的上下文窗口里干活,干完只把结果带回主线程。子 agent 定义是文件,可以进 git,可以团队共享,和 skill 是同一个思路:能力即文件(第 6 章)。社区流传最广的例子之一,是用七个 subagent 文件配上研究员、编辑、项目经理这类角色。

Agent Teams。 2026 年年中上线的多实例协作,早期要开实验开关。一个会话当 team lead,负责拆任务、分配、收尾;几个 teammate 是独立的 Claude Code 实例,各有各的上下文窗口。所有成员共享一个任务列表,谁领了什么、干到哪一步,一目了然;成员之间可以直接通信,不用事事经过 lead。要看大家干活,用 tmux 或 iTerm2 分屏,每个队友的终端摊开一格。有两个控制开关:delegate mode 把主 agent 限制成只做协调,不直接写代码;plan approval 让 lead 在队友动手前先审计划。

它和 subagent 的分工一张表说清:

Subagent Agent Teams
上下文 独立,结果汇总回主线程 独立,不汇总
通信 只向主 agent 报告 成员之间可以直接通信
协调 主 agent 集中控制 共享任务列表,自组织
适用 单一、独立的子任务 多层面、需要讨论的任务

Dynamic Workflows。 2026 年 5 月底随 Opus 4.8 发布的研究预览,针对的是前两层的共同瓶颈:编排者始终是 Claude 本身,每个子 agent 的结果都要回到 Claude 的上下文窗口,协调几十上百个并行任务时装不下。动态工作流的解法是让 Claude 把整个编排过程写成一段 JavaScript 脚本,循环、分支、中间结果收集都固化在代码里,交给独立的运行时执行。标志性案例是 Bun 作者 Jarred Sumner 用它在 11 天里把 Bun 运行时从 Zig 迁到 Rust,75 万行代码,99.8% 的原有测试通过。

编排逻辑从提示词搬进定义文件,再搬进可执行代码,这条线在第 第 17 章还会从另一个角度看到。

33.3 Codex:subagent 加 worktree

Codex 的编排能力在 OpenAI 自己的大规模实践中打磨过。他们记录过一次实验:三个工程师,五个月,零行手写代码,做出一个约百万行的生产产品,全程由 Codex 完成,合并了约 1500 个 PR。人只负责描述任务、审 PR、给反馈,单人吞吐量维持在每天 3.5 个 PR,单次任务经常无人值守跑六个小时以上,过夜出结果。

支撑这种玩法的是三个能力:

33.4 OpenCode:把 agent 写进配置文件

OpenCode 的做法最透明:agent 是配置。opencode.json 或 markdown 文件里定义一个 agent,mode 字段三选一:primary(主会话可用)、subagent(只能被 Task 工具调用)、all(两者都行)。

内置的 subagent 覆盖了最常见的场景:general 是通用代理,有完整工具权限,可以并行跑多个实例干多步任务;Explore 是只读探索代理,找文件、搜关键字、答代码库问题,不能改文件;Scout 也是只读,负责外部文档和依赖研究,比如把某个依赖仓库克隆到托管缓存里对照源码。

两个细节值得抄。一是每个 agent 可以单独指定 model,主 agent 用强模型,子 agent 挂便宜快速的模型,成本立刻分化。二是 hidden: true 把子 agent 从 @ 自动补全里藏起来,用户在界面上点不到它,只允许其他 agent 通过 Task 工具程序化调用。权限也是按 agent 单独配的。

33.5 终端里的编排工具

CLI 内置的编排覆盖不到一种场景:你不想只开一个会话,想同时跑三五个、十几个 agent,各领各的任务。这时需要终端编排工具。下面四个,从底座到地图。

tmux:底座。 2007 年诞生的终端复用器,agent 编排的地基。模型很简单:一个 server 托着所有会话,断线随时 detach,回来一条命令 reattach,现场原样;窗口里随便分屏。这一领域的工具几乎都长在它上面:claude-squad 的每个实例是一个 tmux 会话,orchestrators 清单里一串工具的名字里都带着 mux。它只有一个问题:tmux 认识 pane,不认识 agent。哪个 pane 里的 agent 停下来等人了,它没有任何表示。

herdr:会看 agent 的运行时。 herdr(github.com/herdrdev/herdr,40.8k star,Rust)的自我定位一句话:the runtime your coding agents live on。一个后台 server 拥有 agent 的终端:关掉客户端、断掉 SSH,里面的终端照跑;机器重启后恢复布局,受支持的 agent 会话还能接回去。ctrl+b q 离开,敲一下 herdr 回来。每个 pane 标着 working、blocked、idle,agent 停下来要答案,herdr 直接告诉你,不用挨个 pane 找哪个卡住了。它不包装也不替换 Claude Code、Codex、Cursor、OpenCode 这些 agent,只当它们终端的房东。真正的差异在 agent-native:agent 自己通过 CLI 和 socket API 驱动 herdr,自己开 pane,互相发 prompt,等另一个 agent 真的 blocked 才继续。生态已经长出来:手机上的 collie、macOS 控制台 herdrm、审查侧栏 herdr-reviewr。

luvus:任务控制台。 luvus(github.com/RizRiyz/luvus,Rust)2026 年 6 月发布,比 herdr 再进一步。除了终端 pane 管理、agent 状态感知(连 token、成本、上下文占用都显示)和 Git、GitHub 面板,它把编排要用的东西也装了进来:建 worktree,管依赖任务,任务队列和路径租约按项目隔离,给 agent 派活,跑质量门,合并成品。Commander 从底部输入框向指定的几个 agent pane 群发 prompt。Claude、Codex、Grok 的会话可以带着完整上下文 fork 出一份。接口层是 UHP(Universal Harness Protocol),方法注册表带版本号,别人可以在上面造自己的编排器。

awesome-agent-orchestrators:地图。 前三个是工具,这是一个 awesome 清单(github.com/andyrewlee/awesome-agent-orchestrators,2k star),把编排工具分成几大类:终端并行 agent、桌面与 Web、Multi-Agent Swarms、自主循环 Runner、自主任务 Runner、基础设施原语、个人助理,另有一类 Resting 收录停止维护的项目。清单有网站版 agent-orchestrators.com,收录 221 个工具。这个领域月月出新东西,选型前先看这张地图。

33.6 本章小结

至此编排的话题讲完。下一章回到单个任务的质量环节:代码审查。