模式矩阵 /模式白皮书/C5
C5 · Sub-Agent Isolation · 子代理隔离
| 字段 | 值 |
|---|---|
| 双轴坐标 | 协作 Collaboration × 层级 Hierarchy(分) |
| 成本档 | ☷(跨切关注点,叠加在其他协作模式上) |
| 课程对应 | 并入 07-02 / 07-01 讲(是独立模式) |
| 目录归属 | 全集 33 模式之一 · 协作模块 5 模式之一 |
| 一句话 | 子 agent 在独立 context 中执行,返回前必须压缩成 schema 化 artifact,主 agent 只看 artifact 不看 raw trajectory。 |
它解决什么问题
主 agent 派 sub-agent 干活,sub-agent 跑完把全部工作过程 dump 回来,主 agent 的 context 立刻被淹没。50 份合同每份 3000 字的详细分析回传就是 15 万字,主 agent 接到后推理质量断崖式下降。问题的根子是主 agent 不该看 sub-agent 的 raw 工作过程,只该看工作结论——就像律所的 PM 不会要求每个律师汇报读了哪一行字,只看"哪几份异常加它们的关键问题"。
子代理隔离解决的是 enterprise multi-agent 系统的 context pollution。它让每个 sub-agent 跑在自己的隔离 context 里,返回前强制 reduce 成结构化 artifact,主 agent 只消费 artifact。这件事的工程价值独立到值得单独成一个模式:它是层级委派、扇出聚合这些协作模式能在生产环境跑稳的内功,没有它,主 agent 第三个任务必爆 context、多 agent 跑久了必然 cascade。
为什么坐标是「协作 × 层级」
- 纵轴 · 协作:让 sub-agent 拥有独立的 context 和权限,是在协作中加边界的设计。它不是单纯的派工,而是给协作加上隔离纪律——主 agent 和 sub-agent 之间的信息流被刻意切断成"只传精炼结论"。
- 横轴 · 层级:parent agent 调度 sub-agent,sub-agent 在自己的沙箱里跑,是层级加隔离的结构。它跟层级委派共格(都在协作 × 层级交点),但姿态不同——层级委派强调派工,子代理隔离强调隔离加摘要返回。
核心机制
子代理隔离由四件工程要素构成:
- Context 隔离:sub-agent 启动时不继承 parent 的 history,只收到自己的 system prompt、具体的 task instruction、自己的 tool set。它看不到主 agent 跑过什么、其他 sub-agent 在做什么。
- Artifact schema 化返回:sub-agent 返回的不是自由文本总结,是结构化 artifact(pydantic model 或 JSON schema)。推荐三层结构——verdict(success / partial / failure)、top findings(3-5 条)、citations(可选)。这让主 agent 能用确定性代码直接 parse,不用再花 token 解析。
- 失败 boundary 隔离:一个 sub-agent timeout 或抛异常,主 agent 收到的是 verdict=failure 的 artifact,而不是被异常炸掉。N 个 sub-agent 中 1 个挂掉只损失 1/N。
- 并行互不干扰:N 个 sub-agent 各跑各的 context,互相看不到中间状态,也不直接通信——要交换信息必须经过主 agent。
适合的生产场景
- 子任务产出多、主 agent context 紧的批量任务:合同审阅、文档扫描、大规模代码检索,每个 sub-agent 处理一份、只回传精炼结论。
- 需要防止任务间相互污染的场景:每份合同应该被独立 fresh review,不被其他合同的细节 prime(避免 anchoring bias),独立 context 是必需的。
- 数据 scope 不能跨的场景:一个 sub-agent 看到的敏感数据不能流到另一个 sub-agent 或污染主 agent,隔离 context 提供了天然的数据边界。
- 需要防 prompt 污染的场景:sub-agent 的试错失败 trace、越界尝试不应该拖累主 agent 或其他 sub-agent 的后续推理。
容易出错的地方
- sub-agent 继承主 agent history:在 demo 阶段看着没事,等第三个任务跑完后主 agent history 累计几万 token,每个 sub-agent 都背这些 token 起跑——成本爆炸加质量下降。sub-agent 必须用本地 messages 完全独立起跑。
- 返回自由文本而非 schema artifact:自由文本让主 agent 端可用性差 10 倍——不能用确定性代码 parse、不能做 confidence 排序、不能做 verdict 分流。必须强制 schema 化。
- sub-agent 之间直接通信:为了省事让 sub-agent A 调 sub-agent B,会立刻把层级拓扑变成网状拓扑,cascade failure 风险飙升。要交换信息必须经过主 agent。
- 失败没有 boundary:sub-agent 抛异常没被捕获,主 agent 收到 raw exception 导致 reasoning loop 被中断、整个任务失败。失败时要返回 schema 化的 failure artifact。
- 子任务输出本身就小还套隔离:子任务产出小于 500 token、或主 agent 确实需要看中间细节时,隔离是多余开销。它的价值在产出多、context 紧、能 schema 化输出三者同时成立时。
关键指标
- 主 agent context 占用(健康区留足推理空间):所有 sub-agent artifact 加起来占主 agent context 的比例。50 份合同 artifact 控制在 1 万字以内、给主 agent 留 4 万 token 自己推理是一个好的目标。
- artifact 合规率(健康区 > 95%):sub-agent 返回符合 schema 的比例。偶尔输出自由文本绕过 schema 会触发重派和延迟。
- 失败级联率(健康区 < 5%):一个 sub-agent 失败拖垮其他 sub-agent 的概率。四件要素全做到位才能把这个指标压在健康线,缺一件就可能飙升。
- artifact 压缩比(健康区高):raw trajectory 字数与 reduce 后 artifact 字数之比,反映隔离对 context 的节省效果。
最小骨架
IsolatedSubAgent.execute(task):
local_context = [system_prompt, task] # 不传入 parent history → Context 隔离
try:
raw = run_loop(task, local_context) # 独立 LLM call + 独立 tool set
except: return Artifact(verdict="failure") # 失败 boundary
return reduce_to_artifact(raw) # 强制压成 verdict/findings/citations
SupervisorWithSubAgents.execute(task):
artifacts = 并行 gather( # N 个并行,各自独立 context → 互不干扰
sub.execute(dispatch_subtask(task, sub)) for sub in sub_agents
)
return synthesize_from_artifacts(artifacts) # 主 agent 只看 artifact 不看 raw trajectory
四个工程要点对应四件要素:本地 messages 起跑实现 context 隔离;reduce_to_artifact 实现 schema 化返回;try/except 加 timeout 实现失败 boundary;并行 gather 加各自独立 context 实现互不干扰。
企业落地一例
某律所的合同审阅 Agent,第一版主 agent 派 sub-agent 扫描 50 份合同,sub-agent 把每份 3000 字的详细分析全部回传,主 agent 接到 15 万字后 context 完全爆炸。第二版加上四件隔离要素:每份合同分一个独立 sub-agent(context 隔离)、返回前强制 reduce 成固定 schema 的 artifact(verdict、top_3_concerns、recommendation 三字段必填)、每份合同独立 fresh review 不被其他合同 prime、某个 sub-agent 挂掉不影响其他 49 份、主 agent context 永远控制在 5 万 token 以内(50 份 artifact 加起来不到 1 万字,留 4 万给主 agent 推理)、低 confidence 的合同直接 mark 升人工。改完之后 50 份合同 1 小时跑完,主 agent 拿 1 万字 artifact 做 high-level 综合,律师 review 报告不到 1 小时。Claude Code 的 Task tool 是这个模式最完整的工业实现——子 agent 在完全独立的 context 跑(无主 agent history、独立 LLM call、独立 tool set),跑完只返回 final summary,主 agent 看不到子 agent 的中间 thinking 和 tool calls,50 次 grep 调用不会进主 agent 的 context。
与其他模式的关系
- 层级委派(C1):共格且互为表里。层级委派是招式(supervisor 派 worker),子代理隔离是内功(worker 隔离 context 加 schema artifact 加失败 boundary)。没有隔离的层级委派必定 context 爆炸加 cascade failure,两者必须配套。
- 扇出聚合(C2):扇出的每个并行 branch 都依赖隔离——独立 context,gather 阶段只看 reduced 结果。隔离是扇出能跑通大规模并行的工程基础。
- Hierarchical Retention(记忆模块):同源思想。信息按层级分发、越上层越精简,子代理隔离是这个作用域分层原则在多 agent 协作层的落地。
- 上下文分诊(感知模块):同源思路。主 agent 不预加载子 agent 的中间状态,需要时按需取(通常不需要,artifact 就够),类似延迟加载。
一句话记住它
子代理隔离看上去是 context 优化,本质是把组织管理里的信息分层精神编码进 agent 系统——CEO 看 manager 的 summary 不看每个员工的细节,主 agent 看 sub-agent 的 artifact 不看 raw trajectory,这是 multi-agent 系统从 demo 到生产的最后一公里。
本页属于 ADPS 33 模式白皮书。返回 模式矩阵与白皮书目录, 或查看配套 可运行代码目录。