子 Agent 委派模式:隔离上下文与并行执行
子 Agent 委派模式:隔离上下文与并行执行
1. 概念定义
子 Agent 委派(Sub-Agent Delegation)是一种多 Agent 设计模式。Lead Agent 遇到复杂任务时,不是自己一步步处理,而是动态生成一个或多个子 Agent,每个子 Agent 负责一个子任务。
关键特征:
- 隔离上下文:子 Agent 无法看到 Lead Agent 或其他子 Agent 的上下文
- 专用工具集:每个子 Agent 可以配置不同的工具(如专用 bash Agent)
- 独立终止条件:每个子 Agent 有自己的超时和结束条件
- 并行执行:多个子 Agent 可以同时运行,缩短总体任务时间
2. 典型架构
3. 并发控制
子 Agent 的并发执行需要严格控制:
- 最大并发数:通常 3-5 个,避免资源耗尽和 Token 爆炸
- 线程池架构:调度线程池(负责任务分发)+ 执行线程池(负责实际运行)
- 超时机制:每个子 Agent 有独立的超时(如 15 分钟),超时后强制终止
- 结果归集:子 Agent 完成后将结果返回 Lead Agent 合成
4. 上下文隔离的必要性
不隔离上下文的问题:
- 注意力分散:子 Agent 看到 Lead Agent 的完整对话历史,容易偏离当前子任务
- Token 浪费:每个子 Agent 的请求都携带大量无关上下文
- 状态污染:子 Agent 可能误操作 Lead Agent 的状态
5. 陷阱与规避
5.1 过度委派
Lead Agent 可能将简单任务也委派给子 Agent,增加不必要的延迟。
规避:在 Lead Agent 的系统提示中明确”什么应该委派、什么应该自己做”。
5.2 结果合成困难
多个子 Agent 的输出格式不一致,Lead Agent 难以整合。
规避:定义子 Agent 结果的标准化 schema,包含 deliverables、status、errors 字段。
5.3 并发竞争
并行子 Agent 同时读写共享资源(如文件系统)。
规避:每个子 Agent 分配独立的工作目录,Lead Agent 负责最终整合。
6. 适用场景
- 长程研究:同时探索多个信息源
- 多文件编辑:并行修改多个不相关的文件
- 数据管道:独立的 ETL 步骤可并行执行
- 内容生成:文字、图片、代码生成可分工
参考来源
- LangGraph Multi-Agent 文档
- OpenAI Swarm — 轻量多 Agent 教育框架
案例补充:CodeWhale 子 Agent 角色分类学
本补充基于 CodeWhale 源码分析,首次覆盖于 2026-06-01。
CodeWhale 提供了最系统化的子 Agent 角色分类(taxonomy),定义了 6 种角色 + 1 种自定义:
| 角色 | 写入权限 | Shell 策略 | 典型场景 |
|---|---|---|---|
general | 是 | 是 | 默认,多步任务 |
explore | 否 | 只读 | 代码探索,查找调用点 |
plan | 最小 | 最小 | 设计策略,不执行 |
review | 否 | 只读 | PR 审计,分级评分 |
implementer | 是 | 是 | 最小修改,落地变更 |
verifier | 否 | 测试导向 | 运行测试,报告结果 |
custom | 取决于 allowlist | 取决于 allowlist | 锁定工具集的派发 |
关键设计模式:
- 输出契约:每个子 Agent 必须输出五段式结果(SUMMARY/CHANGES/EVIDENCE/RISKS/BLOCKERS),父 Agent 直接从 EVIDENCE 段读取工作集
- 完成哨兵:子 Agent 完成后,运行时将摘要注入父会话的
<codewhale:subagent.done>哨兵,父模型无需额外工具调用即可读取 - 上下文 Fork 策略:
fork_context: true让子 Agent 继承父的前缀 + 状态快照,保持 DeepSeek 前缀缓存复用的同时获得上下文 - 会话边界:每个
SubAgentManager实例分配session_boot_id,防止将旧会话的遗留记录误认为活跃工作 - 并发上限与 Batch 模式:默认 10,硬上限 20,超出时父 Agent 应 batch 处理