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 实战练习
可以按下面顺序练习:
- 一个 Subagent 读代码,一个 Subagent 写测试,一个 Subagent 做 review
- 多个 Subagent 分别调研不同技术方案
- 主 Agent 拆任务、收结果、做最终判断
- 用 Subagent 完成一次完整功能开发流程
- 让安全 Subagent 审查高风险改动
- 让测试 Subagent 检查测试覆盖
- 让文档 Subagent 检查文档缺口
- 给每个 Subagent 定义输出模板
- 给 Subagent 结果增加互审流程
- 设计 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 汇总成可靠结论。