Superpowers:并行代理分发 & 条件等待,把测试排查时间砍到 1/3
【免费下载链接】superpowersAn agentic skills framework & software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers
Superpowers 是跑在 Claude Code 里的 AI 代理技能框架。它的并行代理分发让多个 AI 代理同时排查互不相关的故障,条件等待则用真实条件替代 sleep 猜测,专治测试稳定性。
🔥 周一早上,本地全绿,CI 全红
上周末你刚重构完事件总线,周一拉代码,本地测试唰唰全过——你的机器快,200 毫秒的 sleep 总能等到结果。可 CI 慢,同一套测试红了 14 个,日志里全是"等不到 DONE 事件"。更糟的是,本地一升级依赖,文件监听和工具审批两处也炸了。这些故障八竿子打不着,可你只能一个文件一个文件串行查,每换一次上下文就得把代码重读一遍,大半天就这么没了。
Superpowers 给这两类烂摊子各配了一把刀:故障互相独立时,用并行代理分发拆成几份同时查;测试在猜时间时,用条件等待把 sleep 换成等真实条件。
🧩 怎么拆:一个管派活,一个管改等法
并行代理分发:把活拆成互不沾边的几份
- 每个独立故障域派一个 AI 代理,简报里只放它需要的那份上下文,不继承你的会话历史。就像同时把 3 张工单派给 3 个同事,各查各的,互不串门。
- 同一条回复里发出多个派遣才会并行跑,一条回复只派一个就退化成串行。并行的开关,在你手里。
- 代理回来你负责验收:读各自的摘要,确认没改到同一处代码,再跑一遍全量测试。
条件等待:不数秒数,等真事
- 把 sleep 换成 waitFor 轮询函数,每 10 毫秒检查一次你真正关心的条件,成立就立刻放行。就像烤箱"叮"一声才走人,而不是看一眼钟猜时间。
- 默认 5 秒超时,超时的报错直接说清"在等什么",不会让你对着一个无声挂死的测试发呆。
- 仓库里还有 waitForEvent、waitForEventCount 这类封装,等某个事件、等够某个数量,直接调。
⚡ 踩坑写法 vs 推荐写法
改动前:
// 猜 50ms 够不够:本地快机过,CI 慢机就红 await new Promise(r => setTimeout(r, 50)); expect(getResult()).toBeDefined();改动后:
// 等结果真的出现才走,机器快慢都稳 await waitFor(() => getResult() !== undefined, "结果已产生"); expect(getResult()).toBeDefined();差别不在那一行代码,在于前者赌的是"机器够不够快",后者赌的是"事情真的发生了"。前者在 CI 上翻车,几乎只是时间问题。
实操:从两条红测试到全绿
拿个小例子:重构后,事件总线的测试等不到 DONE 事件,文件监听的测试等不到文件落盘,两处共享代码为零。
- 先归组:两个文件互不引用,属于两个独立故障域,可以拆。
- 在同一条回复里派 2 个子代理,每份简报只含一个测试文件名、报错日志,加一条约束:"只许改这个文件,别的代码别碰"。
- 你现在看终端,两个代理的进展先后跳出来,各自把自己测试里的 sleep 换成前面提到的 waitFor,然后各回一段摘要。
- 验收:对照两份摘要确认没人碰同一个文件,跑一遍全量测试,全绿。
全程花的时间,和你一个人串行查一个问题差不多。
什么时候该用,什么时候别用
✅ 该用:
- 3 个以上故障,根因各不相同,共享状态为零
- 每个问题不看其他问题也能看懂
- 各代理不会同时改同一个文件
⚠️ 别用:
- 故障相互关联,修好一个可能顺手修好另两个
- 你还在探索阶段,压根不知道哪里坏了
- 测的就是防抖、节流这类时序行为,该用带注释的固定时长
项目自己的调试记录里,这套组合拳修掉了 15 个不稳定测试,通过率从 60% 拉到 100%,测试套件还快了三成多。想上手的话,去翻一下 skills/ 目录里的 SKILL.md,重点看 skills/dispatching-parallel-agents/ 和 skills/systematic-debugging/ 两处,照着派第一个代理就行。
【免费下载链接】superpowersAn agentic skills framework & software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考