尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

6个测试同时挂了怎么办:Superpowers 并行代理分发与条件等待实战指南

6个测试同时挂了怎么办:Superpowers 并行代理分发与条件等待实战指南 6个测试同时挂了怎么办Superpowers 并行代理分发与条件等待实战指南【免费下载链接】superpowersAn agentic skills framework software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowersSuperpowers 是个技能框架这篇只讲它最实战的两个能力——并行代理分发和条件等待。如果你刚做完一次大重构6 个用例同时变红、还散落在 3 个不同文件里或者某个用例在你机器上稳定通过、一到 CI 就随机挂掉这两招能帮你省掉挨个翻文件、反复盯着 flaky 用例的功夫。6 个测试一起挂时别一个个去挖最耗人的场景是这样的一次大重构之后失败散在三个文件里你先把 A 文件挖完、再挖 B、再挖 C来回切换。可这三处失败之间往往根本不共享状态——改工具审批流程跟中断逻辑没半点关系。Superpowers 给出的办法是并行代理分发每个独立的问题域派一个代理一个只盯一个测试文件、一个子系统然后在同一轮回复里把它们一次性派出去。多个 dispatch 放在同一条回复里就是并发执行一条回复只发一个那就还是串行。每个代理的任务要拆得又小又具体范围看哪个文件、目标让这几个用例变绿、约束别动别的代码、产出回来说明你发现了什么、改了什么。别下把所有测试修好这种指令代理会迷路要说修 agent-tool-abort.test.ts 里这 3 个。真实会话里是这么跑的大重构后 6 个失败跨 3 个文件——agent-tool-abort.test.ts 挂 3 个时序、batch-completion-behavior.test.ts 挂 2 个工具没执行、tool-approval-race-conditions.test.ts 挂 1 个执行计数为 0。派 3 个代理并发跑回来各带一处修复一个把超时换成了事件等待一个修了 threadId 放错位置的 bug一个给异步执行补了个等待。三处互不冲突整合后全量测试一次跑绿。细节在 skills/dispatching-parallel-agents/。测试本地绿、CI 红多半栽在这一行代码上另一种折磨是不稳定本地过、CI 挂或者一上负载就随机失败。病根常在这一行——你在猜时间。// 猜希望 50ms 够 await new Promise(r setTimeout(r, 50)); expect(getResult()).toBeDefined(); // 条件等待等到真实条件成立为止 await waitFor(() getResult() ! undefined); expect(getResult()).toBeDefined();条件等待的核心就一句别再猜它要花多久去等那个你真正在意的状态。等一个 DONE 事件、等机器状态变 ready、等数组攒到 5 个、等某个文件出现或是已就绪且数值大于 10这种复合条件都能塞进一个waitFor。现成的waitForEvent、waitForEventCount、waitForEventMatch三个封装在 condition-based-waiting-example.ts 里。有三个实现要点要拿捏住检查频率定在 10ms 一次轮询太猛会白白烧 CPU默认超时给 5000ms超时后抛一句人话错误别无限死循环循环里每次重新取最新值别在循环外把状态缓存下来那样读到的是旧数据。还有一种例外你确实是在测时序行为防抖、节流间隔时固定延时是对的但前提是先等到触发条件再按已知周期延时并在注释里写清楚为什么。别把猜测和等待混着来。完整写法见 condition-based-waiting.md。什么时候该用、什么时候别用一张决策指南并行代理分发——适合3 个以上测试文件因不同原因挂掉、多个子系统各自独立损坏、查其中任何一个都不依赖另外的上下文。别用失败彼此关联修好一个可能连带修好另一个、必须看清整个系统状态、代理会去抢同一份文件或资源。条件等待——适合用例里有setTimeout/sleep、偶发通过偶发挂、并行跑就超时。别用你正在测的就是时序行为本身。效果数据来自一次真实调试会话2025-10-03修掉 3 个文件里 15 个不稳定用例通过率从 60% 拉到 100%执行时间快 40%竞态条件消失。动手前的自查清单你遇到的情况该怎么做失败散在多个文件、彼此不共享状态派并行代理一个文件一个代理失败互相牵连、需要完整上下文先串行查清再考虑拆开并行用例里有固定延时、CI 上偶发红换成waitFor10ms 轮询、5000ms 超时测的就是防抖、节流等时序保留延时但注释里写清依据这几条对上了测试基本就再难糊弄你。【免费下载链接】superpowersAn agentic skills framework software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表