第七章:子代理与并行任务
子代理模式的概念
子代理(Sub-agent)是 Claude Code 中一种强大的并行处理模式。当你面对一个复杂的大型任务时,可以将它拆解为多个独立的子任务,分别由不同的 "子代理" 并发执行,最后汇总结果。这类似于工程团队中项目经理将工作分配给多个开发人员并行推进。
子代理模式的核心优势在于:
- 大幅缩短任务完成时间:多个子任务同时执行,而不是串行等待
- 保持上下文隔离:每个子代理有独立的上下文窗口,避免互相干扰
- 专注单一职责:每个子代理只需关注自己的子任务,输出质量更高
- 结果可独立验证:子代理的输出可以单独审查,降低整体风险
适用场景
子代理模式特别适合以下场景:
| 场景 | 串行处理时间 | 子代理并行时间 | 加速比 |
|---|---|---|---|
| 批量代码审查(10 个文件) | ~15 分钟 | ~3 分钟 | 5x |
| 多模块重构 | ~30 分钟 | ~8 分钟 | 3.75x |
| 多文件单元测试编写 | ~20 分钟 | ~5 分钟 | 4x |
| 跨服务接口文档生成 | ~25 分钟 | ~6 分钟 | 4x |
| 多语言翻译 | ~10 分钟 | ~2 分钟 | 5x |
派发子代理的两种方式
Claude Code 提供了两种方式来创建和管理子代理。
方式一:Agent 工具
当你在对话中提出一个复杂任务时,Claude Code 的主代理会自动判断是否需要派发子代理。如果任务可以拆分为多个独立的部分,主代理会调用 Agent 工具来创建子代理。这种方式是自动触发的,你只需要描述最终目标即可。
例如,当你要求 "重构 src 目录下所有组件,将 Class Component 转换为 Function Component",主代理会自动:
- 扫描目录列出所有组件文件
- 根据文件数量创建适当数量的子代理
- 将待重构的文件分配给各个子代理
- 收集所有子代理的输出并汇总
方式二:/agent 命令
你也可以通过 /agent 命令手动控制子代理的创建和分配。这种方式提供了更精细的控制,适合有明确拆分策略的场景:
/agent "请审查 src/components/Button.tsx 的代码质量,给出改进建议"
/agent "请审查 src/components/Modal.tsx 的代码质量,给出改进建议"
/agent "请审查 src/components/Form.tsx 的代码质量,给出改进建议"
三条命令会同时执行,每个 /agent 创建一个独立的子代理会话。你可以并行发起多个 /agent 请求,它们之间互不干扰。
并行任务拆分策略
要充分发挥子代理的威力,合理的任务拆分至关重要。以下是几种常用的拆分策略:
按文件拆分:每个子代理处理不同的文件集合。适用于批量重构、代码审查、格式检查等场景。
按功能模块拆分:每个子代理负责一个完整的功能模块。适用于多模块开发,如同时开发用户认证模块、支付模块和通知模块。
按阶段拆分:将任务分为多个阶段,每个阶段的子任务并行执行。例如代码生成阶段和测试编写阶段可以同步进行。
以下是一个实战拆分的示例——为项目添加 CI/CD 配置:
# 三个子代理同时工作
/agent "分析项目构建配置,生成 GitHub Actions 构建配置文件"
/agent "分析项目测试框架,生成 GitHub Actions 测试配置文件"
/agent "分析项目部署架构,生成 GitHub Actions 部署配置文件"
三个子代理分别关注构建、测试和部署三个维度,各生成独立的配置文件。完成后你只需将它们合并为一个完整的 workflow 文件即可。
子代理上下文隔离与结果收集
每个子代理都有独立的上下文窗口,这意味着:
- 它们看不到彼此的工作内容
- 它们共享项目目录的读取权限(取决于安全策略)
- 它们无法执行具有副作用的写操作(需要主代理确认)
子代理的工作结果通过两种方式收集:
- 自动汇总:主代理自动收集所有子代理的输出,进行归纳总结
- 手动收集:子代理将结果写入文件,主代理读取这些文件来汇总
对于结果量较大的场景,建议使用文件中间件的方式:
/agent "分析 src/utils/ 下的所有工具函数,将分析结果输出到 review-utils.md"
/agent "分析 src/hooks/ 下的所有自定义 Hook,将分析结果输出到 review-hooks.md"
/agent "分析 src/services/ 下的所有服务模块,将分析结果输出到 review-services.md"
然后主代理可以读取这三个文件生成一份全面的代码审查报告。
实战:并行代码审查与重构
假设我们需要对一个大型项目的 components 目录进行全面审查和重构。传统做法是逐个文件审查,耗时且容易疲劳遗漏。使用子代理模式可以大幅提升效率:
# 步骤 1:让主代理评估任务范围
"列出 src/components/ 下所有需要审查的 .tsx 文件,按复杂度分组"
# 步骤 2:派发多个子代理并行审查
/agent "审查 Button.tsx、Input.tsx、Select.tsx 的性能问题和可访问性问题"
/agent "审查 Modal.tsx、Drawer.tsx、Tooltip.tsx 的样式耦合度和重构可行性"
/agent "审查 Form.tsx、Table.tsx、Card.tsx 的类型定义完整性和错误处理"
# 步骤 3:汇总审查结果,制定重构计划
"汇总三个审查报告,按优先级排序,生成重构任务清单"
# 步骤 4:派发子代理并行执行重构
/agent "重构 Button.tsx,拆分内联样式为 CSS Module,添加 aria 属性"
/agent "重构 Modal.tsx,提取 Portal 逻辑到独立 Hook,优化渲染性能"
子代理 vs 普通对话的性能对比
| 对比维度 | 普通对话(串行) | 子代理模式(并行) |
|---|---|---|
| 10 个文件审查 | 10-15 分钟 | 2-4 分钟 |
| 上下文消耗 | 单窗口持续膨胀 | 多个小窗口,可控 |
| 结果质量 | 后段文件审查质量下降 | 每个文件质量一致 |
| 资源占用 | 低,但时间长 | 高,但时间短 |
| 适用复杂度 | 中低复杂度任务 | 高复杂度、可拆分任务 |
| 操作复杂度 | 简单直接 | 需设计拆分策略 |
合理使用子代理模式能让你的 Claude Code 使用效率提升数倍。关键在于识别可并行的任务,并设计合理的拆分策略。随着你对子代理模式的熟练运用,甚至可以构建出类似 "AI 开发团队" 的工作流——主代理担任项目经理,多个子代理各司其职,协同完成复杂项目。