并行修复测试失败的「dispatching-parallel-agents」
機械翻訳 / Machine-translated
機械翻訳 / Machine-translated
原文链接:并行修复测试失败的「dispatching-parallel-agents」(cccskills)
技能页面:dispatching-parallel-agents
本文结论
安装 dispatching-parallel-agents 后,Claude Code 等代理即可并行排查和修复多个测试失败。
该机制将原因各异的失败分配给不同的子代理分别处理。
本文介绍负责范围的划分方式、指令的写法,以及合并修复结果的流程,
同时附上安装方法和请求示例。
将多个测试失败展示给代理并发出请求后,代理会按问题领域拆分问题,并逐一分配给各子代理。
子代理是在独立于原始会话上下文中运行的辅助代理。
请求示例如下:
经过一次大规模重构后,3 个测试文件共有 6 个测试失败。
如果原因各不相同,请按文件划分负责范围,并行进行修复。
代理首先按"什么地方出了问题"对失败进行归类,
将其拆分为互不影响的单元,例如中断处理、批量完成行为、工具审批竞争条件等,使修复一处不会波及其他。
在此基础上,为每个负责代理生成指令。
指令内容包括:目标测试文件与目标、不得修改的范围,以及需要汇报的内容。
三个负责代理的指令在同一次响应中统一发出。
在同一次响应中调用多个子代理,它们将并行运行;若逐一调用,则会顺序执行。
结果返回后,读取各负责代理的摘要,确认是否存在对同一代码的编辑冲突,
然后运行全部测试,再合并变更。
技能页面中的实际案例显示,三个负责代理各自返回了不同的修复内容:
将固定等待时间替换为事件等待的修复、修正事件结构缺陷的修复、新增异步处理完成等待的修复——三处修复互不冲突,全部测试均已通过。
该技能是一种模式,用于以"一个问题领域对应一个代理"的方式并行处理相互独立的问题,
使原本需要逐一排查的多个失败可以同时推进。
工作流程分为以下四个阶段:
首先判断各个失败之间是否存在关联。
修复一处便可能同时修复另一处的失败,应由同一个代理统一排查。
即便相互独立,若共享文件或资源,则不并行处理,而是按顺序逐一分配。
传递给各负责代理的指令由范围、目标、约束、汇报内容四个要素构成。
范围为单个测试文件或子系统;
目标为"让该测试通过",约束为"不修改其他代码"之类的规定。
子代理不继承原始会话的历史记录,
因此所有必要信息均需写入指令。
技能页面还提供了指令的反例与正例对比,要点如下表所示:
| 维度 | 反例 | 正例 |
|---|---|---|
| 范围 | "把所有测试都修好" | "修复 agent-tool-abort.test.ts" |
| 上下文 | "修复竞争条件" | 粘贴错误信息和测试名称 |
| 约束 | 不写约束 | "不修改生产代码""只修改测试" |
| 汇报 | "修好就行" | "返回原因和变更点的摘要" |
指令示例中还有一句话:"不要只是延长超时时间,要找出真正的原因。"
这是防止停留于表面修复的写法。
作业返回后的确认步骤也有明确规定。
首先读取各摘要,了解具体变更了什么,然后检查是否有多个负责代理编辑了同一段代码。
接着运行全部测试,确认所有修复可以协同工作,
最后抽取部分变更进行人工核查。
代理有时会重复犯同类错误,因此这一步不可省略。
安装方式有两种:通过命令安装,或请代理代为安装。
使用命令时,请执行以下内容:
npx skills add https://github.com/obra/superpowers --skill dispatching-parallel-agents
此命令支持选择安装目标代理,如 Claude Code 或 Codex 等。
如需在安装前确认内容,请将以下文本原样发送给代理:
请安装以下 Agent Skill。
https://github.com/obra/superpowers/tree/main/skills/dispatching-parallel-agents
请先确认 SKILL.md 及附属文件的内容,确认不存在可疑操作(如向外部发送数据、读取认证信息等),然后将其放置到 Claude Code 对应的 ~/.claude/skills/dispatching-parallel-agents/,或 Codex 对应的 ~/.agents/skills/dispatching-parallel-agents/。
安装位置取决于是在所有项目中使用,还是仅在特定项目中使用:
| 代理 | 所有项目通用 | 仅特定项目使用 |
|---|---|---|
| Claude Code | ~/.claude/skills/ | 项目目录下的 .claude/skills/ |
| Codex | ~/.agents/skills/ | 项目目录下的 .agents/skills/ |
发布来源为 obra/superpowers。
请求中直接描述失败的测试或缺陷的情况,
附上错误信息或测试名称,便可将上下文传递给各负责代理的指令。
测试在 3 个文件中失败。
请按原因对失败进行整理,对于相互独立的问题,划分负责范围并并行排查。
代理将按问题领域对失败进行归类,判断是否相互独立。
若相互独立,则生成各负责代理的指令并同时发出;若存在关联,则返回由单一代理统一排查的方案。
请让不同的代理分别修复登录页面的缺陷和 CSV 导出的缺陷。
请先为各自确定允许修改的范围和需要汇报的内容,再开始作业。
该请求会先展示为每个负责代理分别编写的包含范围、目标、约束、汇报内容的指令,
随后两个负责代理同时运行,各自返回原因和变更点的摘要。
请确认返回的 3 处修复,如无冲突,运行全部测试后进行合并。
代理将读取各摘要,确认是否有负责代理编辑了同一段代码,
在确认全部测试通过后合并变更,并抽取部分变更进行人工核查。
使用前请确认问题是否真正相互独立。
可以并行修复的,仅限无需等待其他排查结果即可理解、且不涉及同一文件或资源的问题。
以下场景不在适用范围内:
该技能以能够并行运行多个代理的环境为前提。
技能包含的文件仅有 SKILL.md 一个,许可证为 MIT。
安装前建议打开 SKILL.md 通读内容。
并行作业的修复结果在合并前务必进行确认。
即使各负责代理的测试单独通过,组合在一起后也可能出现问题。
请将运行全部测试和抽取核查作为合并的前提条件。
同属 obra/superpowers 的以下技能,可在并行修复的前后配合使用。
systematic-debugging 是从复现步骤、日志及近期变更入手,排查缺陷或测试失败原因的技能。
可在原因尚不明朗的阶段使用,待问题拆分为相互独立的部分后,再切换到并行修复。
subagent-driven-development 是将实现计划按任务分配给不同代理的技能。
适用于非缺陷修复、而是希望分担新功能实现的场景。
finishing-a-development-branch 是在实现完成后确认全部测试,并推进到合并或创建 Pull Request 的技能,
可在并行修复合并后的收尾阶段使用。
适用于存在 2 个及以上相互独立的作业、且无状态共享或顺序依赖的情况。
参考标准为:3 个及以上测试文件因各自不同的原因失败的场景。
不能。
尚不清楚哪里出了问题的探索性排查不在适用范围内。
请先排查原因,待可拆分为相互独立的问题后再使用。
可以安装到 Codex 对应的位置,
但操作流程以能够并行运行多个代理的环境为前提。
dispatching-parallel-agents 是一种将原因各异的多个失败按负责范围拆分、同时进行修复的模式。
从独立性判断、四要素指令编写,到合并前确认,整个流程清晰明确。
当测试失败叠加、没有时间逐一修复时,不妨先试试看。
详情请参阅 cccskills 页面。
本文转载自 cccskills 的专栏文章「并行修复测试失败的「dispatching-parallel-agents」」。
技能详情与安装方法请访问 cccskills 的 dispatching-parallel-agents 页面。