name: parallel-execution description: 并行执行模式
并行执行模式
核心概念
并行执行通过使用Task工具并设置run_in_background: true来同时启动多个子代理。这使得N个任务可以并发运行,显著减少总执行时间。
关键规则: 所有的Task调用必须在单个助手消息中进行,以实现真正的并行性。如果Task调用在不同的消息中,它们将按顺序运行。
执行协议
第1步:确定可并行化的任务
在生成之前,验证任务是独立的:
- 没有任务依赖于另一个任务的输出
- 任务针对不同的文件或关注点
- 可以同时运行而无冲突
第2步:准备动态子代理提示
每个子代理接收一个自定义提示,定义其角色:
你是这个特定任务的[ROLE]专家。
任务:[CLEAR DESCRIPTION]
上下文:
[RELEVANT CONTEXT ABOUT THE CODEBASE/PROJECT]
要处理的文件:
[SPECIFIC FILES OR PATTERNS]
输出格式:
[EXPECTED OUTPUT STRUCTURE]
关注领域:
- [PRIORITY 1]
- [PRIORITY 2]
第3步:在一条消息中启动所有任务
关键:在同一条助手消息中进行所有Task调用:
我正在启动N个并行子代理:
[任务1]
description: "子代理A - [简要目的]"
prompt: "[子代理A的详细指令]"
run_in_background: true
[任务2]
description: "子代理B - [简要目的]"
prompt: "[子代理B的详细指令]"
run_in_background: true
[任务3]
description: "子代理C - [简要目的]"
prompt: "[子代理C的详细指令]"
run_in_background: true
第4步:使用TaskOutput检索结果
启动后,检索每个结果:
[等待完成,然后检索]
TaskOutput: task_1_id
TaskOutput: task_2_id
TaskOutput: task_3_id
第5步:综合结果
将所有子代理的输出合并为统一的结果:
- 合并相关发现
- 解决推荐之间的冲突
- 按严重性/重要性排序
- 创建可操作的摘要
动态子代理模式
模式1:基于任务的并行化
当你有N个任务要实现时,生成N个子代理:
计划:
1. 实现认证模块
2. 创建API端点
3. 添加数据库模式
4. 编写单元测试
5. 更新文档
生成5个子代理(每个任务一个):
- 子代理1:实现认证模块
- 子代理2:创建API端点
- 子代理3:添加数据库模式
- 子代理4:编写单元测试
- 子代理5:更新文档
模式2:基于目录的并行化
同时分析多个目录:
目录:src/auth, src/api, src/db
生成3个子代理:
- 子代理1:分析src/auth
- 子代理2:分析src/api
- 子代理3:分析src/db
模式3:基于视角的并行化
同时从多个角度进行审查:
视角:安全,性能,测试,架构
生成4个子代理:
- 子代理1:安全审查
- 子代理2:性能分析
- 子代理3:测试覆盖率审查
- 子代理4:架构评估
TodoWrite集成
使用并行执行时,TodoWrite行为有所不同:
顺序执行:一次只有一个任务in_progress
并行执行:可以同时有多个任务in_progress
# 在启动并行任务之前
todos = [
{ content: "任务A", status: "in_progress" },
{ content: "任务B", status: "in_progress" },
{ content: "任务C", status: "in_progress" },
{ content: "综合结果", status: "pending" }
]
# 每个TaskOutput检索后,标记为完成
todos = [
{ content: "任务A", status: "completed" },
{ content: "任务B", status: "completed" },
{ content: "任务C", status: "completed" },
{ content: "综合结果", status: "in_progress" }
]
何时使用并行执行
好候选:
- 多个独立分析(代码审查,安全,测试)
- 多文件处理,文件之间相互独立
- 从不同视角进行的探索性任务
- 具有不同检查的验证任务
- 具有独立组件的功能实现
避免并行化时:
- 任务有依赖关系(任务B需要任务A的输出)
- 需要顺序工作流(提交->推送->PR)
- 任务修改相同的文件(冲突风险)
- 顺序对正确性很重要
性能优势
| 方法 | 5个任务@每个30秒 | 总时间 |
|---|---|---|
| 顺序 | 30s + 30s + 30s + 30s + 30s | ~150s |
| 并行 | 所有5个同时运行 | ~30s |
并行执行大约是N倍速度提升,其中N是独立任务的数量。
示例:功能实现
用户请求:“实现用户认证,包括登录、注册和密码重置”
协调器创建计划:
- 实现登录端点
- 实现注册端点
- 实现密码重置端点
- 添加认证中间件
- 编写集成测试
并行执行:
并行启动5个子代理:
[任务1] 登录端点实现
[任务2] 注册端点实现
[任务3] 密码重置端点实现
[任务4] 认证中间件实现
[任务5] 集成测试编写
所有任务同时运行...
[通过TaskOutput收集结果]
[综合为协调的实现]
故障排除
任务按顺序运行?
- 验证所有Task调用是否在单个消息中
- 检查每个是否设置了
run_in_background: true
结果不可用?
- 使用带有正确任务ID的TaskOutput
- 在检索之前等待任务完成
输出中的冲突?
- 确保任务不修改相同的文件
- 在综合步骤中添加冲突解决