~ / writing / n°024

Subagent 不是更小的 Agent:搞错这点,你的多智能体只会越跑越慢

封面:不是更小的 Agent

你每天都在用 Subagent,可十个人里有九个把它想错了:当成”缩小版的 Agent”。

不是。它跟大小没关系,是主 Agent 临时借来的一块干净内存,用完就还。

这个误会不解开,你搭的多智能体系统不会更聪明,只会更慢、更贵。下面把边界讲清,再给一张”什么时候该拆、什么时候别拆”的判断表。

它不是”小一号的 Agent”,是另一种东西

大部分人是按”老板和下属”的直觉在理解这俩词:Agent 是大的,Subagent 是小的,大的指挥小的。

这套组织架构的想象,恰恰是错的源头。Agent 和 Subagent 的差别根本不在”谁大谁小、谁管谁”,而在三件事:有没有独立的上下文窗口、职责是不是被收窄、调度上是不是干完就散

说白了:主 Agent 是攥着总目标、守着主线内存、最后把结论缝起来的那个;Subagent 是它临时雇来干一摊脏活、干完汇报就解散的临时工。

上下文窗口(context window),就是模型一次能”记住”的那块内存——你给它的指令、它读过的文件、工具吐回来的结果,全挤在这一块里,满了就开始往外掉东西。

把 Subagent 当”小 Agent”,是把一道内存管理题,错当成了组织架构题。 方向一错,后面怎么用都别扭。

(先把边界说清:这里讲的 Subagent,主要按 Claude Code、Anthropic Agent SDK 这类”主 Agent 派生独立上下文”的实现来谈。别的框架叫法未必一样,但判断内核不变——上下文要不要隔离。)

真正分开它俩的,是这三条线

旧理解是层级包含,正确理解是并列独立;三条真区别:独立上下文窗口、职责提前收窄、调度用完即散

第一条,也是最本质的:独立的上下文窗口。 Claude Code(Anthropic 出的命令行 AI 编程工具)官方文档把话说得很直白:“Each subagent runs in its own context window with a custom system prompt, specific tool access, and independent permissions.”(每个 subagent 跑在自己的上下文窗口里,有自己的系统提示、特定的工具权限和独立的许可。)注意那个 “its own”——它和主线不共享内存。

第二条:职责被提前收窄,能碰的工具和权限也一起圈死。 Claude Code 内置的几个 subagent 就是活样本:Explore 只能读不能写、跑最便宜的 Haiku 模型、主打一个快和省;Plan 专管规划;General-purpose 才是通用那个。一个 Subagent 通常只干一件事,连能碰的工具都被提前圈好。

第三条:调度上从属,干完只汇报,然后就没了。 Agent SDK(Anthropic 给开发者搭 Agent 的工具包)的原话是:“Each subagent runs in its own fresh conversation. Intermediate tool calls and results stay inside the subagent; only its final message returns to the parent.”(每个 subagent 跑在自己全新的对话里,中间的工具调用和结果都留在它内部,只有最后一条消息回到主 Agent。)

Subagent 干完活,交回主线的只有最终结果;中间翻过的几十页,全烂在它自己那块内存里,散场就没了。

它最先解决的麻烦:上下文污染

旧的主 Agent 内存被搜索结果塞爆,新的主 Agent 把脏活丢给旁边小房间的 Subagent,干完只汇报结果

知道了这三条,“为什么要有 Subagent”就不用解释了——它是来解决一个具体麻烦的:上下文污染。

主 Agent 要回答一个问题,中间得搜 20 次资料。每搜一次,几千字的原始网页就塞进那块内存。搜到第 20 次,你最早那个问题早被挤出窗口了,模型自己都快忘了在查什么。

Subagent 就是干这个的:把”搜 20 次”这种又脏又占地方的活,丢进一块独立内存里办,办完只把最终结果带回主线,原始垃圾留在原地销毁。

Anthropic(做 Claude 的那家 AI 公司)在自己的多智能体研究系统里就是这么干的:一个主 Agent 负责规划,并行派出 3-5 个 subagent 各查一摊,最后单独跑一遍核对引用的环节去汇总。效果是实打实的——在它内部的研究类评测上,这套多智能体设置比单个 Claude Opus 4 高出 90.2%

上下文窗口是会被烧光的预算,Subagent 就是替你把账单留在别处的那个人。

该拆的信号:能并行、要隔离、可复用

该拆三信号:能并行、要隔离、可复用——核心是任务并行与上下文隔离

那到底什么时候该派 Subagent?别凭感觉,对着下面四条对号入座,中一条就值得考虑:

判断该不该拆,第一问从来不是”这活大不大”,而是”这块上下文,要不要留在主线上”。

别拆的信号:串行、紧耦合、契约说不清

别拆三信号:串行强依赖、契约讲不清、紧耦合——拆错 token 烧 15 倍

反过来,下面这几种情况,硬拆只会更糟:

拆得越细不等于跑得越快;契约一句话讲不清的活,拆出去就是给自己埋雷。

不是”任务大小”,是”上下文该不该隔离”

回到开头那个误会。Subagent 从来不是”小一号的 Agent”,它是一种管理上下文的手段——给主 Agent 临时续一块干净内存,让脏活、并行的活、需要隔离的活,都在别处办完,只把结论带回来。

还有第三种常被忽略的答案:单个 Agent 就够。 任务线性、上下文装得下、不需要并行、最后只交一个东西——这种就别拆。不是功能不够,是成本不值得。Subagent 是手段,不是目标。

所以下次要不要拆,别再盯着任务体量看了。

该问的是:这块上下文,配不配拥有它自己的一块内存。


引用出处

DAVID YIN · 2026 · 06 · 03 · 杭州
← Older · N°025
我用 AI 学了三年,现在我发现我什么都没学会