(6)Subagent:给活干不完的模型派分身
写在前面
链二还剩最后一块。前面五篇讲的都是"一个 agent 怎么把活干好",但有些活天生不是一个人干得完的。
最典型的是理解一个陌生的大仓库:几十万行代码,要把相关的部分都看一遍。一个上下文装不下,串行看又太慢。生产系统给出的答案是 subagent:主 agent 派出分身,各自带独立上下文去干活,干完把结论带回来。
这篇讲 subagent 到底解决什么问题、11 家系统各自怎么编排,以及一个反直觉的事实。

subagent 解决的核心问题是上下文,不是算力
先纠正一个直觉。很多人以为派分身是为了"快"(并行),其实第一性收益是隔离。
探索一个仓库会产生海量的中间产物:读了几百个文件、搜了几十次字符串、走过一堆死胡同。这些过程如果全发生在主对话里,主上下文瞬间被污染,真正重要的任务状态反而被稀释了(链一讲过的信噪比问题)。subagent 的做法是让分身在自己的上下文里随便折腾,折腾完只回传一份摘要。脏活在分身那里,干净的结果回到主线。

并行的加速是真实存在的红利,但它是第二位的。判断该不该用 subagent,先问上下文会不会被污染,再问要不要快。

IMPORTANT: subagent 的本质是上下文的分治:过程留在分身,结论回到主线。这与链一是同一条经济学,只是换了执行者。
六种编排形态
11 家系统的实现摆在一起,论文归纳出六种形态,从简到繁:

- 单 agent:不派分身(Mini-SWE-Agent、Aider,pi 的核心也是);
- 顺序委派:一个 task 工具,派一个分身,等它干完拿结果(Mistral Vibe);
- 并行子会话:多个分身并发跑,各带各的历史(OpenHands、OpenCode);
- 线程树:分身还能派分身,形成一棵树,继承多少历史可配置(Codex);
- 递归组合:任意 agent 无限嵌套地生成子 agent,父级冻结的系统提示词原样传给子级,共享缓存(Claude Code);
- 注册表加协议:agent 定义成命名资源,跨进程、跨机器调用(Gemini CLI、OpenClaw)。
要说明:这六种是并列的分类学,不是演化史。没有哪家是从第一种一步步升级到第六种的,它们是同一批需求在不同产品约束下的不同取舍。
协调者-工人是趋同进化
六种形态是按"怎么派活"(派生机制和拓扑)分的,换个维度看"谁说了算",还有一个角色模式反复出现:一个主 agent 负责拆解分派,若干工人各领一块,这就是协调者-工人。它不属于六种之一,而是横切的形状,顺序委派、并行子会话、线程树、递归组合都能长出它。
论文的观察:四家厂商自家的系统(Claude Code、Codex、Gemini CLI、Mistral Vibe),加上 OpenHands、Hermes、OpenCode,代码库各自独立开发,最后都收敛到同一个分层形状:一个主 agent 负责拆解和分派,若干工人 agent 各领一块。
Anthropic 自己的多智能体研究系统给过量化数据:协调者加并行工人的架构,在他们内部评测里比单 agent 基线提升了 90.2%。但这个数字要带两个限定:一是对照基线是单次对话,不是优化过的单 agent 流水线;二是消耗约 15 倍 token。
还有一个使用场景的限定,来自同一篇研究:编程任务里真正可并行的部分,比研究类任务少。所以实际系统里,多智能体主要用在广度探索阶段(并行搜代码、并行查资料),实现阶段大多还是收回到单线程。为并行而并行,只会拿到 15 倍的账单,拿不到 90% 的提升。

反直觉的事实:管分身不用协议
最后这个事实值得单独一节。
小红书和博客圈聊多智能体,常听到"用 MCP、A2A 把 agent 连起来"。但论文的发现是:所有系统管自家分身,用的都是进程内原语,没有一家用标准协议。跨进程的个别案例(pi 用 JSONL 管道,Hermes 的蜂群用 SQLite 当黑板),用的也不是标准协议,是更朴素的东西。
协议去哪了?对外。ACP(Agent Client Protocol)最常见的角色是让编辑器驱动 agent,就像驱动语言服务器;比较新的用法是一个 harness 把别家 harness 当可替换的后端跑(OpenHands 可以把 Claude Code、Codex 当插件调用)。跨厂商的 A2A(Agent-to-Agent,让不同厂商的 agent 互相发现、协作的协议),11 家里只有 Gemini CLI 一家实现,需求尚未被验证。
一句话总结:对内,进程内调用最简单直接;对外,协议才有网络效应。分身不是网络,是手脚。

pi 里的 subagent
pi 又一次是个好标本:它的核心里压根没有 subagent,分身是官方给的一个扩展示例,约一千行代码。每次派活就是启动一个独立的 pi 进程,跑完把 JSONL 输出流解析回来,支持单个、并行池、链式三种用法。
进程级隔离,最彻底的分身边界,实现却最朴素。这很 pi。

写在最后
链二到此收尾:文本变动作、接口即成绩、工具按需加载、生态靠协议、重活派分身。行动的可靠性,这一整条链都是在回答"模型怎么把活干好"。
但效率的每一分提升,都在给下一篇文章交学费。分身能跑起来,意味着失控的规模也变大了。下一篇进链三:自主性需要约束,从 AutoGPT 的公开翻车讲起。

参考资料
- Harness Engineering: Anatomy, Architecture, and Evolution of Coding Agents(六种编排见 §11,协议内外之辨见 Observation 11)
- How we built our multi-agent research system - Anthropic Engineering(90.2% 与 15× token 的出处,含基线与场景限定)
- 本系列第 5 篇:(5)MCP 为什么出现:工具的膨胀与割裂