用途
Parallel Test Fixing 用于加速修复损坏的测试套件。当一次测试运行中出现多个测试文件失败时,它把每个失败的测试文件分配给一个独立的子代理,让这些子代理并行地各自修复,从而缩短整体修复时间。
主要能力
- 运行完整测试套件并捕获输出,提取所有失败的测试文件。
- 解析不同测试框架的失败输出,例如 Jest 的
FAIL src/components/Button.test.tsx、Vitest 的FAIL src/utils/format.test.ts、Pytest 的FAILED tests/test_api.py::test_create_user。 - 按文件对失败进行分组,每个文件成为一个任务。
- 为每个失败测试文件启动一个 generalPurpose 子代理并行修复。
- 收集各子代理的修复结果,包括修复了哪些测试、改动了哪些文件、修复是否可能与其他子代理的改动冲突。
- 最后运行完整测试套件进行验证,若出现因冲突修复导致的新失败则顺序解决。
使用方式
- 运行完整测试套件:
npm test -- --no-coverage 2>&1 || true
捕获输出并提取所有失败的测试文件。
-
分组失败:解析测试输出中的失败文件,按文件分组,每个文件成为一个任务。
-
启动并行子代理:为每个失败测试文件启动一个 generalPurpose 子代理,任务内容如下:
Task: Fix the failing tests in <file>
The test file is: <path>
The test command is: <command to run just this file>
The error output was:
<paste the relevant failure output>
Steps:
1. Read the test file and the source file it tests
2. Understand why each test is failing
3. Fix the source code (preferred) or update the test if the test is wrong
4. Run the single test file to confirm it passes
5. Report what you changed and why
同时启动所有子代理——由于各自处理不同文件,它们可以并行工作。
-
收集结果:随着每个子代理完成,收集修复了哪些测试、改动了哪些文件、修复是否可能与其他子代理的改动冲突。
-
验证:再次运行完整测试套件确认全部通过:
npm test
如果出现新失败(来自冲突的修复),顺序解决它们。
适用场景
- 测试套件中有多个测试文件同时失败,且失败分布在不同的文件上。
- 希望利用并行子代理缩短逐个修复测试的时间。
- 大型测试套件(50 个以上失败)需要批量分配修复任务。
限制与注意事项
- 如果两个失败测试共享同一个源码文件,应把它们分配给同一个子代理,以避免编辑冲突。
- 应设置超时——如果某个子代理卡住超过 5 分钟,需要检查其进度。
- 对于大型测试套件(50 个以上失败),应按每组 5 到 10 个批量分配给子代理,而不是每个文件一个。
- 如果希望为每次修复尝试提供隔离的工作树,可使用 best-of-n-runner 子代理。
- 资料未提供该技能的收费、价格、平台支持范围等具体信息。