
Superpowers 并行代理分發與條件等待6 個測試故障一次修完的完整路徑【免費下載鏈接】superpowersAn agentic skills framework software development methodology that works.項目地址: https://gitcode.com/GitHub_Trending/su/superpowersSuperpowers 是面向 AI 編碼代理的技能框架與軟件開發方法論。本文深入拆解它的兩個高級能力——并行代理分發與條件等待瞄準兩個高頻痛點多測試文件失敗時串行排查慢、時序猜測導致測試時紅時綠。 先踩坑再修路6 個紅著測試散在 3 個文件里一次大重構之后全量測試跑出來 6 個用例掛了散在 3 個文件里agent-tool-abort.test.ts3 個失敗全是時序問題batch-completion-behavior.test.ts2 個失敗工具調用沒執行tool-approval-race-conditions.test.ts1 個失敗執行計數返回 0逐個排查的代價不只是6 個問題每個文件都要花時間重新建立上下文時序類 bug 更是惡心——本地看著正常CI 上變紅再跑一次又綠根因很難鎖定。 拆開看并行代理分發怎么干活并行代理分發的核心是三步數據流可以一句話說清按故障域拆輸入3 個測試文件對應 3 個互不相關的子系統——abort、批量完成、競態條件沒有共享狀態查任何一個都不需要另外兩個的上下文。并行派發在同一個響應里一次性派出 3 個子代理每個代理只拿到文件范圍、明確目標和約束條件不繼承主會話的歷史。同一響應里的多次派發并行執行一個響應派發一個就是串行——這是整個機制最關鍵的一處細節。整合輸出每個代理返回發現了什么、改了什么的摘要主代理核對沒有兩個代理動過同一處代碼再跑全量測試驗證。什么時候用3 個以上測試文件因不同原因失敗、彼此沒有共享狀態、代理不會碰同一文件。什么時候別用失敗之間相互關聯修好一個可能連帶修好另一個或必須先看懂整個系統狀態那就先串行排查。決策樹和代理提示詞模板都在 skills/dispatching-parallel-agents/SKILL.md 里。條件等待解決的是另一半問題——時序。它的數據流同樣簡單輸入一個判斷函數比如事件列表里出現 DONE 事件處理端每 10ms 輪詢一次重新求值滿足立即返回撞上 5000ms 超時還沒滿足就拋一個帶清晰描述的錯誤。項目附帶 3 個現成封裝waitForEvent等某類事件、waitForEventCount等某類事件湊夠 N 個、waitForEventMatch按自定義謂詞等。兩種寫法的對比非常直觀// 改前猜時序 await new Promise(r setTimeout(r, 50)); // 改后等真實條件 await waitFor(() getResult() ! undefined);什么時候用測試里有任意 sleep、或本地綠 CI 紅的用例。什么時候別用被測對象本身就是計時行為比如防抖間隔那時應先等觸發條件再按已知周期加一段有注釋說明的固定延時。 跟著走一遍從一輪報錯到全綠以 2025-10-03 的一次真實會話為線索。大重構后 6 個失敗散在 3 個文件里先看到報錯按域拆分abort、批量完成、競態條件是三個獨立子系統判斷可以拆 3 路并行。隨后在同一響應里派出 3 個子代理每個只帶上測試文件路徑、失敗用例名和別動其他代碼的約束。三個代理幾乎同時返回修復路徑各不一樣Agent 1: 把任意 setTimeout 換成事件式等待 Agent 2: 發現 threadId 放錯了事件結構的字段 Agent 3: 給異步工具執行補了完成等待最后主代理依次讀完 3 份摘要確認沒有同文件改動跑全量測試——全綠。 數據說話條件等待替代 setTimeout 之后指標修復前修復后通過率3 個文件共 15 個不穩定測試60%100%測試套件執行時間基準快 40%6 個故障逐個串行排查3 個代理并行同時返回競態條件CI/高負載下頻繁紅消除以上數據來自 2025-10-03 調試會話的記錄見 skills/systematic-debugging/condition-based-waiting.md。?? 避坑清單并行分發與條件等待的 5 個坑任務派太寬給代理把所有測試修好它會在全局里打轉。范圍收窄到一個文件報錯信息和用例名直接貼進去。有共享狀態還硬派兩個代理改同一文件回來就是沖突。派發前先確認故障域獨立不獨立就先串行。輪詢太快或沒超時1ms 輪詢燒 CPU忘記超時則條件不滿足時測試永久掛起。輪詢間隔定 10ms超時和錯誤信息必給。等之前緩存了數據循環前把事件列表讀進局部變量輪詢查到的是舊快照永遠為假。getter 要在輪詢循環里現查??考哟蟪瑫r掩蓋問題50ms 改 500ms 只是把競態藏起來負載上來還會紅。先修真實原因而不是抬超時。并行代理分發只對真正獨立的故障才劃算問題彼此關聯時拆并行只是串行的換皮。條件等待也是一筆交易用 10ms 輪詢的間隔換穩定性。如果手頭正好有測試多文件失敗、或時紅時綠的場景可以試試拆成獨立的并行任務再把 sleep 換成條件判斷?!久赓M下載鏈接】superpowersAn agentic skills framework software development methodology that works.項目地址: https://gitcode.com/GitHub_Trending/su/superpowers創作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考