第八章:Subagents多Agent协作

Subagents 解决什么问题

提示

Subagents 适合把一个任务拆成多个相对独立的子任务:

  • 并行读不同模块。
  • 一个实现、一个审查。
  • 一个查官方文档、一个查代码。
  • 前端、后端、测试分开推进。

它不是扩大单个上下文窗口,也不是让任务自动变聪明。它的价值是并行和分工。

App 中什么时候用

适合用:

这个重构涉及前端、API 和测试。请先制定分工计划,再并行处理互不重叠的部分。

不适合用:

修一个拼写错误。

判断标准:

内嵌表格

条件 是否适合
任务可拆成独立子任务 适合
多个文件/模块互不重叠 适合
需要独立审查 适合
下一步必须等一个结果 先主线程做
单文件小改 不适合

App 中启动前要写清的内容

让 App 调 subagents 前,提示词至少要包含:

内嵌表格

内容 示例
总目标 “把认证模块迁移到新 SDK”
子任务边界 “前端只读 src/pages/login.tsx,后端只读 src/api/auth/*”
文件所有权 “Agent A 只改 docs,Agent B 只改 tests”
是否允许写 “先只读分析,不改文件”
汇总方式 “每个 agent 输出结论、证据、风险和建议动作”
停止条件 “遇到权限/测试/依赖问题先汇报,不自行扩大范围”

不写这些,subagent 很容易变成多个不受控的普通对话。

推荐分工模板

先给出 subagent 分工计划,不要立刻改文件。

目标:重构认证模块。
范围:src/auth、tests/auth。
约束:不要改数据库迁移,不要引入新依赖。
分工:
- Agent A:阅读现有 auth 代码,列出风险。
- Agent B:核对官方 SDK 文档。
- Agent C:审查测试覆盖缺口。
汇总后再决定是否执行。

文件所有权

并行写代码时必须明确文件所有权:

内嵌表格

Agent 负责范围
Frontend agent src/pages/login.tsx、src/components/auth/*
Backend agent src/api/auth/*
Test agent tests/auth/*
Review agent 只读 diff,不改文件

没有文件边界的并行开发很容易互相覆盖。

Subagents 与 worktree

内嵌表格

能力 作用
Subagent 分工和并行思考 / 执行
Worktree 隔离 Git 工作区
Review 合并前看 diff

大任务建议组合:

Worktree thread + Subagents + Review

这样既能分工,又能降低污染主工作区的风险。

Subagents 与 Skills

Subagent 可以执行一个明确角色,Skill 提供工作流方法。

例子:

让一个只读 subagent 使用 $tutorial-verifier skill 核对这篇教程的官方来源。

注意:不要假设所有 subagent 都自动拥有所有工具或插件。以当前 App 暴露能力为准。

Review 与合并规则

Subagents 返回后,主线程不要直接相信总结。按这个顺序合并:

  1. 看每个 subagent 的输出是否有证据。
  2. 看是否有互相冲突的结论。
  3. 看文件所有权是否被遵守。
  4. 由主线程整合方案。
  5. 执行或合并后用 App Review 看 diff。
  6. 运行验证命令。

如果两个 agent 给出相反建议,不要让其中一个继续硬改;先让主线程整理冲突点,再决定下一步。

常见失败模式

内嵌表格

失败模式 原因 修正
多个 agent 改同一文件 所有权不清 明确文件范围
主线程不知道进展 没有汇总点 要求阶段性汇报
子任务太大 拆分不够 缩小到模块级
agent 自己发散 缺少目标和验收 写清停止条件
没有 Review 并行改动难合并 合并前统一 review

常见问题

Q1:Subagents 会自动更正确吗?

不会。它们只是并行执行单元。正确性来自清晰分工、约束和 Review。

Q2:什么时候不用 Subagents?

单文件小改、一步任务、目标不清楚的任务,都不应该先拉 subagents。

Q3:Subagents 能和 Automation 一起用吗?

可以,但自动化任务更要限制权限和范围。