第 11 章 / 共 12 章

Subagent:让多个 AI 角色协作

Subagent 是 AI 学习路线的第十一章。

前面几章已经让 AI 具备了从单次任务到复杂工作流的能力。到了 Subagent 阶段,我们要解决复杂任务分工问题:怎样把一个大任务拆给多个专职 AI 角色,让它们分别处理需求、代码、测试、安全、文档和发布检查,再由主 Agent 汇总结果并做最终判断。

当任务很复杂时,单个 Agent 同时承担所有职责,容易出现上下文拥挤、关注点分散、遗漏检查、结果混乱等问题。Subagent 的价值,是把不同职责拆开,让每个角色专注在自己的任务范围内。

这一章要解决的问题是:

如何组织多个 AI 角色协同完成复杂任务,并控制分工、上下文、汇总和冲突处理。

学完这一章,你应该能做到三件事:

  • 设计主 Agent 和多个 Subagent 的分工
  • 控制每个 Subagent 的上下文范围和输出格式
  • 汇总多个 Subagent 结果,并处理冲突和质量问题

1. Subagent 是什么#

Subagent 可以理解成由主 Agent 调度的专职 AI 角色。

典型结构:

用户目标
主 Agent 拆分任务
Subagent A:需求分析
Subagent B:代码阅读
Subagent C:测试设计
Subagent D:安全审查
主 Agent 汇总结果
输出最终结论

每个 Subagent 只负责一部分任务,例如:

  • 需求分析
  • 代码阅读
  • 实现方案
  • 测试设计
  • 安全审查
  • 文档整理
  • 发布检查

主 Agent 负责拆任务、分发上下文、收集结果、解决冲突和输出最终答案。

2. 为什么需要 Subagent#

复杂任务常常包含多个专业视角。

示例:实现一个支付功能,需要关注:

  • 产品需求是否清楚
  • 接口设计是否合理
  • 数据库事务是否安全
  • 支付回调是否幂等
  • 前端交互是否完整
  • 测试场景是否覆盖
  • 安全风险是否可控
  • 发布和回滚是否准备好

如果一个 Agent 同时处理所有内容,容易出现:

  • 上下文过长
  • 重点分散
  • 某些风险被遗漏
  • 输出结构混乱
  • 反复切换角色
  • 结果难以审查

Subagent 能带来几个收益:

  • 分工更清楚
  • 专注度更高
  • 并行执行更方便
  • 上下文可以隔离
  • 结果可以互相审查
  • 主 Agent 更容易做最终判断

Subagent 适合复杂、多角色、多视角的任务。

3. 主 Agent 调度#

主 Agent 是协调者。

它负责:

  • 理解用户目标
  • 判断需要哪些 Subagent
  • 拆分任务
  • 为每个 Subagent 准备上下文
  • 定义输出格式
  • 收集结果
  • 检查结果质量
  • 处理冲突
  • 输出最终结论

示例:

用户目标:请 review 这次支付功能改动。
主 Agent 拆分:
1. 代码阅读 Subagent:理解改动范围和核心逻辑。
2. 安全审查 Subagent:检查权限、幂等、签名和敏感信息。
3. 测试 Subagent:检查测试覆盖和缺口。
4. 文档 Subagent:检查接口文档是否需要更新。

主 Agent 不能只收集文本,还要判断每个结果是否可用。

4. 子 Agent 分工#

Subagent 分工要清楚。

常见角色包括:

  • 需求分析 Subagent
  • 代码阅读 Subagent
  • 实现 Subagent
  • 测试 Subagent
  • 安全审查 Subagent
  • 文档 Subagent
  • 发布检查 Subagent

4.1 需求分析 Subagent#

职责:

  • 提取业务目标
  • 梳理用户流程
  • 拆分功能点
  • 找出异常场景
  • 输出待确认问题

输出:

业务目标:
用户流程:
功能点:
异常场景:
待确认问题:

4.2 代码阅读 Subagent#

职责:

  • 阅读相关文件
  • 找出关键入口
  • 解释调用链路
  • 标注风险代码
  • 输出影响范围

输出:

入口文件:
关键函数:
调用链:
影响范围:
风险点:

4.3 测试 Subagent#

职责:

  • 设计测试点
  • 检查测试覆盖
  • 标注缺失场景
  • 区分 P1、P2、P3
  • 给出回归建议

输出:

已有覆盖:
缺失测试:
高风险场景:
回归范围:

4.4 安全审查 Subagent#

职责:

  • 检查权限
  • 检查敏感信息
  • 检查注入风险
  • 检查幂等和重放
  • 检查高风险工具调用

输出:

安全风险:
影响:
证据:
修复建议:

5. 上下文隔离#

上下文隔离是 Subagent 的关键能力。

每个 Subagent 只应该拿到完成任务所需的信息。

这样做有几个好处:

  • 降低上下文长度
  • 减少无关干扰
  • 保护敏感信息
  • 提高专注度
  • 降低结果混乱概率

示例:

测试 Subagent 需要:
- 需求说明
- 接口定义
- 已有测试文件
- 改动 diff
它不一定需要:
- 生产密钥
- 部署机器信息
- 用户隐私数据

主 Agent 要负责筛选上下文,避免把所有材料无差别塞给每个 Subagent。

6. 结果汇总#

Subagent 完成任务后,主 Agent 需要汇总结果。

汇总时要做几件事:

  • 去重
  • 合并相同问题
  • 按严重程度排序
  • 标注来源角色
  • 检查证据是否充分
  • 区分事实、推断和建议
  • 输出统一格式

示例:

最终 Findings:
1. [P1] 支付回调缺少幂等校验
来源:安全审查 Subagent、代码阅读 Subagent
证据:callbackHandler 中直接更新订单状态,未检查 transactionId 是否已处理
影响:重复回调可能导致重复发货
建议:增加 transactionId 唯一约束和幂等检查

主 Agent 的价值,体现在最终判断和整合质量上。

7. 互相审查#

Subagent 之间可以互相审查结果。

常见方式:

  • 测试 Subagent 检查实现方案是否可测试
  • 安全 Subagent 审查代码阅读结果中的风险
  • 文档 Subagent 检查需求分析是否缺字段
  • Review Subagent 检查实现 Subagent 的代码改动

示例流程:

实现 Subagent 给出方案
测试 Subagent 设计验证场景
安全 Subagent 检查高风险点
主 Agent 汇总并决定是否可执行

互相审查能降低单个角色遗漏风险。

8. 并行执行#

Subagent 可以并行执行。

适合并行的任务:

  • 多个方案调研
  • 多个模块代码阅读
  • 多个角色审查同一 diff
  • 多个数据源检索
  • 文档、测试、安全分头检查

并行执行要注意:

  • 输入上下文要提前准备
  • 输出格式要统一
  • 结果要能合并
  • 冲突要能处理
  • 成本和并发要受控

示例:

主 Agent 同时派发:
1. Subagent A 调研方案一。
2. Subagent B 调研方案二。
3. Subagent C 调研方案三。
最后主 Agent 对比成本、风险、实现复杂度和维护性。

并行能提升效率,但更需要结果汇总能力。

9. 角色边界#

角色边界用于防止 Subagent 越权。

示例:

测试 Subagent:
职责:设计测试点、检查测试覆盖。
边界:不修改业务代码,不执行部署,不做最终上线判断。
安全 Subagent:
职责:检查安全风险。
边界:不直接修改生产配置,不读取无关敏感数据。

边界清楚后,主 Agent 更容易控制流程。

建议为每个 Subagent 定义:

  • 职责
  • 输入
  • 输出
  • 可用工具
  • 禁止动作
  • 完成条件

10. 冲突处理#

多个 Subagent 可能给出不同结论。

常见冲突:

  • 一个认为风险高,另一个认为风险低
  • 一个建议修改代码,另一个建议只补测试
  • 一个认为资料不足,另一个给出明确结论
  • 不同 Subagent 引用不同来源

冲突处理方法:

  • 要求提供证据
  • 回到源码或资料验证
  • 标注不确定项
  • 让第三个审查角色复核
  • 请求人工决策
  • 在最终结果中说明差异

示例:

冲突点:
安全 Subagent 认为支付回调缺少签名校验。
代码阅读 Subagent 认为网关层已经校验。
处理:
需要读取网关中间件配置确认签名校验是否覆盖该路径。

冲突不可怕,关键是不能把冲突混成确定结论。

11. Subagent 实战练习#

可以按下面顺序练习:

  1. 一个 Subagent 读代码,一个 Subagent 写测试,一个 Subagent 做 review
  2. 多个 Subagent 分别调研不同技术方案
  3. 主 Agent 拆任务、收结果、做最终判断
  4. 用 Subagent 完成一次完整功能开发流程
  5. 让安全 Subagent 审查高风险改动
  6. 让测试 Subagent 检查测试覆盖
  7. 让文档 Subagent 检查文档缺口
  8. 给每个 Subagent 定义输出模板
  9. 给 Subagent 结果增加互审流程
  10. 设计 Subagent 协作 Eval

每个练习都可以检查三个问题:

  • 分工是否清楚
  • 上下文是否足够且不过量
  • 主 Agent 是否能做出高质量汇总

12. 阶段验收标准#

学完这一章,可以用下面的问题检查自己:

  • 我能不能判断什么时候需要 Subagent?
  • 我能不能设计主 Agent 的调度职责?
  • 我能不能为每个 Subagent 定义清楚分工?
  • 我能不能控制每个 Subagent 的上下文范围?
  • 我能不能统一 Subagent 输出格式?
  • 我能不能合并多个 Subagent 的结果?
  • 我能不能让 Subagent 互相审查?
  • 我能不能并行执行多个 Subagent?
  • 我能不能处理 Subagent 结论冲突?
  • 我能不能评估 Subagent 协作效果?

如果这些问题大多数都能做到,说明 Subagent 阶段已经基本合格。

13. 本章总结#

Subagent 的核心是用多个专职 AI 角色协作完成复杂任务。

一套可用的 Subagent 体系,建议至少包含:

  • 主 Agent 调度
  • 子 Agent 分工
  • 上下文隔离
  • 结果汇总
  • 互相审查
  • 并行执行
  • 角色边界
  • 冲突处理
  • 统一输出格式
  • 协作 Eval

Subagent 让 AI 从单角色执行走向多角色协作。它适合复杂研发、测试设计、代码审查、安全评估、方案调研和发布检查。

这一章的目标很明确:让多个 AI 角色各自专注、互相补位,再由主 Agent 汇总成可靠结论。