名称:并行代理调度 描述:为每个独立领域分派一个子代理,以并行化调查/修复。当存在2个以上无共享状态或顺序依赖的不相关故障时使用(例如,独立的失败测试文件、子系统、错误)。
并行代理调度
为每个独立问题分派一个代理。让它们并发工作。
调度工作流
复制并跟踪:
- [ ] 1. 识别独立领域
- [ ] 2. 创建聚焦的代理任务
- [ ] 3. 并行分派
- [ ] 4. 评审与集成
1. 识别独立领域
按故障内容分组:
- 文件A测试:工具审批流程
- 文件B测试:批量完成
- 文件C测试:中止功能
每个领域都是独立的——修复工具审批不会影响中止测试。
关键检查: 如果修复一个可能修复其他问题 → 先一起调查(不要并行化)。
2. 创建聚焦的代理任务
每个代理需要:
- 范围: 一个测试文件或子系统
- 目标: 使这些测试通过
- 约束: 不要更改无关代码
- 输出: 发现和修复的摘要
3. 并行分派
示例(Claude Code):
Task("修复 agent-tool-abort.test.ts 失败")
Task("修复 batch-completion-behavior.test.ts 失败")
Task("修复 tool-approval-race-conditions.test.ts 失败")
4. 评审与集成
- 阅读每个代理的摘要
- 检查冲突(是否编辑了相同文件?)
- 如果两个代理修改了同一文件 → 停止并重新划分范围(每个文件一个负责人)
- 运行完整测试套件
- 如果仍有失败:
- 检查合并冲突 → 手动解决
- 如果没有冲突 → 作为新故障调查
- 重复直到全部通过
代理提示模板
修复 [文件路径] 中的 [N] 个失败测试:
1. "[测试名称]" - [错误摘要]
2. "[测试名称]" - [错误摘要]
背景:[相关背景,例如“这些是时序/竞态条件问题”]
你的任务:
1. 阅读测试文件,理解每个测试验证的内容
2. 识别根本原因——是时序问题还是实际错误?
3. 通过[首选方法,例如“用基于事件的等待替换任意超时”]进行修复
不要:[反模式,例如“仅增加超时——找到真正的问题”]
返回:根本原因和所做更改的摘要。
常见错误
| ❌ 错误做法 | ✅ 正确做法 |
|---|---|
| “修复所有测试” | “修复 agent-tool-abort.test.ts” |
| “修复竞态条件” | 粘贴错误消息 + 测试名称 |
| 无约束 | “不要更改生产代码” |
| “修复它” | “返回根本原因和更改的摘要” |
示例
场景: 主要重构后,3个文件出现6个测试失败。
失败:
- agent-tool-abort.test.ts:3个失败(时序问题)
- batch-completion-behavior.test.ts:2个失败(工具未执行)
- tool-approval-race-conditions.test.ts:1个失败(执行计数 = 0)
决策: 独立领域——中止逻辑独立于批量完成,独立于竞态条件。
分派:
代理1 → 修复 agent-tool-abort.test.ts
代理2 → 修复 batch-completion-behavior.test.ts
代理3 → 修复 tool-approval-race-conditions.test.ts
结果:
- 代理1:用时序事件等待替换超时
- 代理2:修复事件结构错误(threadId位置错误)
- 代理3:添加异步工具执行等待
集成: 所有修复独立,无冲突,完整套件全部通过。