Superpowers執行效果不達預期,可能是這些原因

作者:AI智聞說
日期:2026年5月18日 上午8:32
來源:WeChat 原文

整理版優先睇

速讀 5 個重點 高亮

Superpowers執行效果唔達預期,主因係Skill之間嘅銜接處信息丟失,需加自檢防護

整理版摘要

呢篇文章係作者分享佢用Superpowers完整流程開發Python任務管理API嘅經驗。佢發現9個Skill各自行得好順,但整體效果唔達預期,返工不斷,bug反覆出現。經排查,問題唔在Skill本身,而係喺Skill之間嘅3個銜接處:設計文檔寫漏細節、計劃入面有模糊詞、審查問題未修就走去驗證。另外仲有5個零散嘅坑,例如git-worktree唔記得裝依賴、DONE_WITH_CONCERNS跳過、驗證證據唔新鮮、debugging直接加功能冇查根因、多個代理改同一文件互相覆蓋。

作者認為銜接處係信息丟失嘅地方,佔咗大約70%嘅返工時間。佢提出加3個5分鐘自檢嚟防護:brainstorming到writing-plans之間自檢安全/邊界/依賴係咪明確;writing-plans到subagent-driven之間自檢每個步驟有冇歧義;code-review到verification之間自檢審查問題係咪全部處理。總共15分鐘就可以省返幾個鐘返工。

整體結論係:Skill內部有反饋循環,但Skill之間冇,信息只會丟唔會補。所以人需要主動介入,喺每個銜接處檢查信息有冇遺漏。代理唔會用常識,只會讀文檔,所以任何「顯而易見」嘅細節都要寫清楚。

  • 結論:銜接處信息丟失係返工根因,佔約70%返工時間,唔係Skill本身有問題。
  • 方法:每個銜接處加5分鐘自檢——安全/邊界、計劃歧義、審查清單。
  • 差異:Skill內部有審查回退機制,但Skill之間冇,信息只會單向傳遞唔會補充。
  • 啟發:代理唔會用常識,只睇文檔,「顯而易見」嘅細節最易丟失,例如密碼哈希算法。
  • 可行動點:如果只做一個自檢,優先做原因2(計劃有冇歧義),因為代理會自己猜,猜錯到審查或線上先發現。
整理重點

問題全貌:3個銜接處係返工元兇

作者用Superpowers完整流程開發Python任務管理API,9個Skill各自跑得好順,但最終效果唔達預期——返工不斷、bug反覆出現。排查落嚟,原因唔在Skill本身,而係喺Skill之間嘅3個銜接處。呢啲銜接處唔係Skill,而係Skill之間嘅縫隙,冇鐵律保護,信息喺度悄悄丟失。

  • brainstorming做完後:安全/邊界/依賴是否明確
  • writing-plans做完後:每個步驟是否有歧義
  • code-review做完後:審查問題是否全部處理
整理重點

原因一:設計文檔缺咗「顯而易見」嘅細節

brainstorming嘅輸出係設計文檔,writing-plans嘅輸入亦係呢份文檔。文檔冇寫嘅,writing-plans大概率唔會知;writing-plans唔知嘅,代理就唔會做。作者個項目中,設計文檔冇寫「密碼必須用哈希存儲」,結果代理直接用明文存密碼,到代碼審查先發現。

設計文檔係brainstorming嘅「功能視角」產物,但writing-plans需要嘅係包含實現細節嘅「可執行視角」輸入。呢個視角轉換,冇Skill負責。

防護方法係喺brainstorming結束後、writing-plans之前,加一個5分鐘自檢,包括安全自檢(認證/授權、數據校驗、敏感數據)同邊界自檢(「唔做」清單、性能約束、依賴約束)。作者做完自檢後,設計文檔多咗4行,估計省咗大約1小時返工。

  • 安全自檢3項:認證/授權方式、數據校驗規則、敏感數據處理
  • 邊界自檢3項:「唔做」清單、性能約束、依賴約束

需求描述越「顯而易見」,實現細節越容易丟失——因為「顯而易見」嘅嘢唔會寫入文檔,但代理只讀文檔。

整理重點

原因二:計劃裏嘅模糊詞令代理「猜着做」

writing-plans嘅輸出係一份實現計劃,subagent-driven為每個任務構造代理指令。代理唯一嘅信息來源就係計劃,計劃裏嘅每個詞佢都會按字面執行,冇寫嘅就自己猜。更關鍵嘅係,代理唔知道自己唔知道乜嘢——「含密碼哈希」呢5個字對佢嚟講已經夠明確,唔會觸發請求更多信息。

含密碼哈希」係模糊詞——兩個代理可以做出唔同理解:一個用passlib,另一個用bcrypt,結果註冊同登錄用咗唔同庫,永遠驗證失敗。

防護方法係writing-plans完成後,加一個「代理視角自檢」:假裝自己係零上下文嘅代理,睇計劃能唔能夠無歧義地執行每一步。具體做法係將模糊詞替換為精確指令。

  • 含密碼哈希」替換為「使用bcrypt庫,bcrypt.hashpw(password.encode(), bcrypt.gensalt())」
  • 含JWT生成」替換為「使用python-jose庫,jwt.encode(payload, SECRET_KEY, algorithm='HS256')」
  • 實現分配邏輯」替換為「校驗assignee_id對應嘅用戶存在,唔存在返回404」
  • 判斷標準:如果同一個步驟兩個唔同代理可能做出唔同實現,就係模糊

計劃裏任何需要代理「判斷」嘅地方,都係潛在嘅信息丟失點——將判斷變成指令,信息就唔會丟。

整理重點

原因三:審查問題冇修完就去驗證

code-review嘅輸出係審查問題列表,verification只檢查測試係咪通過,唔會睇審查清單。作者將兩個Important問題標記為「已知,後續處理」就走去驗證,結果verification全部通過,但後續任務因為冇同一套校驗邏輯而出錯。

verification嘅職責係確認「測試通過」,唔係檢查「審查問題已修」。呢個職責缺口令審查同驗證之間出現信息斷層。

防護方法係加一個硬規則:verification之前必須過一遍審查清單,每個問題標註狀態,全部Important修復後先可以進入verification。呢份清單係verification嘅前置門禁。

  • Important問題:必須修復並commit,唔可以「後續處理
  • Minor問題:可以列做技術債務,但唔可以影響當前質量門檻
整理重點

其他坑同總結:3個自檢省數小時返工

除咗3個銜接處問題,文章仲提到5個零散嘅坑:git-worktree唔記得裝依賴、DONE_WITH_CONCERNS唔可以跳過、驗證證據必須新鮮、debugging先查根因、多個代理改同一文件互相覆蓋。呢啲坑雖然冇銜接處咁關鍵,但都值得留意。

  • git-worktree創建後要重新pip install,否則pytest報ModuleNotFoundError
  • DONE_WITH_CONCERNS要認真讀,代理嘅疑慮誤報率唔高
  • 驗證證據必須用當前代碼重新跑,「剛才跑過」唔算數
  • debugging先查根因,唔好直接加功能,否則bug會換方式再嚟
  • 計劃中明確每個代理負責嘅文件範圍,避免互相覆蓋

3個自檢總共約15分鐘,但省下嘅返工時間遠超呢個數。作者估算省咗大約3.5小時返工(約70%)。

如果只做一個自檢,建議做原因二嘅自檢(計劃有冇歧義),因為代理唔會返轉頭問你,佢會自己猜,猜錯咗到審查先發現,審查冇發現就到線上先發現。

9個Skill各自冇問題,問題在於佢哋之間嘅銜接——資訊喺呢度靜靜雞流失,返工喺呢度靜靜雞發生

你遇到嘅可能唔係Skill嘅問題

你可能睇過Superpowers單個Skill嘅介紹。單個Skill的確唔難用——brainstorming會提問,TDD會逼你寫測試,code review會派獨立代理。

但真實項目唔係孤立咁用一個個Skill,而係9個Skill串成一條流水線,一個嘅輸出餵俾下一個。

我最近用Superpowers完整流程開發咗一個Python任務管理API。9個Skill各自行得好順,但最終效果打咗折扣——返工不斷,bug反覆出現,驗證通過咗但質量唔達標。

排查落嚟,原因唔喺Skill本身,而喺Skill之間嘅3個銜接位:

1
brainstorming到writing-plans:設計文件少寫一句說話,代理就用明文儲存密碼
2
writing-plans到subagent-driven:計劃裏面有模糊詞,代理就「估住做」
3
code-review到verification:審查問題未改完就去驗證,通過咗但唔達標

加上5個零星嘅坑,一共8個問題。3個銜接位嘅問題貢獻咗最多嘅返工時間。

呢篇文章淨係講一件事:Superpowers執行效果點解唔達預期,以及點樣防護。

圖片

全貌:問題出喺邊度

Superpowers主流程涉及嘅Skill(按照接力順序):

1
設計階段:brainstorming、writing-plans
2
執行階段:using-git-worktrees、subagent-driven-development(代理內部行TDD + 雙重審查)
3
收尾階段:systematic-debugging(遇到bug觸發)、verification-before-completion、finishing-a-development-branch

3個銜接位標咗喺圖裏面。注意:銜接位唔係Skill,而係Skill之間嘅罅隙。 Skill內部有鐵律保護,冇咁易出錯;但罅隙裏面冇保護,資訊喺呢度靜靜雞流失。

圖片

先記住呢3個自檢點,之後逐個展開:

1
brainstorming做完之後:安全/邊界/依賴係咪明確
2
writing-plans做完之後:每個步驟有無歧義
3
code-review做完之後:審查問題係咪全部處理

下面逐個講。

原因1:設計文件漏咗「顯而易見」嘅細節

邊個環節出問題

brainstorming嘅輸出係設計文件,writing-plans嘅輸入都係呢份文件。對於項目入面新加嘅需求,設計文件幾乎係writing-plans唯一嘅資訊來源。 文件冇寫嘅,writing-plans大機率唔知;writing-plans唔知嘅,代理就唔會做。

點樣發生

我嘅項目係「Python任務管理API」。brainstorming階段確認咗呢啲需求:

用戶註冊/登入
任務CRUD
任務分配俾成員
進度狀態更新

設計文件寫完咗,我好滿意咁進入writing-plans。

但設計文件冇寫「密碼一定要hash儲存」。

邊個會用明文儲存密碼,呢個係常識。但writing-plans讀到嘅係文件,唔係常識。佢見到「用戶註冊」呢個需求,拆出「實現註冊接口」呢個任務,步驟寫咗「儲存用戶資訊」——冇指定hash。

代理執行時,按最簡單嘅方式實現:直接將密碼存入數據庫。測試通過咗,註冊成功,登入成功。直到code review先發現密碼係明文儲存。

點解Skill冇攔住

brainstorming Skill本身有自審環節,會檢查佔位符同矛盾,但佢關注嘅係功能接口係咪完整,唔會主動檢查安全、性能呢啲非功能需求。認證方式(密碼hash算法)屬於接口層面嘅設計決定,但brainstorming預設唔會逐項確認呢類細節。

問題出喺銜接:設計文件係brainstorming嘅「功能視角」產物,但writing-plans需要嘅係包含實現細節嘅「可執行視角」輸入。 呢個視角轉換,冇Skill負責。

點樣防護

brainstorming結束之後、進入writing-plans之前,加一個5分鐘嘅自檢:

安全自檢(3項):

認證/授權方式係咪明確(密碼hash算法、JWT過期策略、token儲存方式)
數據校驗規則係咪明確(電郵格式、密碼強度、輸入長度限制)
敏感數據處理係咪明確(日誌脱敏、錯誤資訊唔泄露內部狀態)

邊界自檢(3項):

「唔做」清單係咪明確(邊啲功能明確排除)
性能約束係咪明確(並發量、數據量、響應時間)
依賴約束係咪明確(一定要用/唔用得嘅庫、版本)

6項過完,我嘅設計文件多咗4行:

認證方式:bcrypt hash + JWT(python-jose),token過期30分鐘
密碼校驗:至少8位,包含字母同數字
電郵校驗:標準電郵格式正則表達式
唔做:通知、附件、評論、優先級管理

4行字,我估算咗嚇慳咗大概1個鐘返工。

呢類坑嘅變種

唔止「密碼hash」。任何「顯而易見」嘅實現細節都可能喺呢度流失:

「用戶登入」冇指定hash算法,導致代理用明文儲存密碼
「獲取任務列表」冇指定分頁參數,導致一次查10萬條數據,接口超時

規律:需求描述越「顯而易見」,實現細節越容易流失。 因為「顯而易見」嘅嘢唔會被寫入文件——但代理淨係讀文件。

原因2:計劃裏面嘅模糊詞令代理「估住做」

邊個環節出問題

writing-plans嘅輸出係一份實現計劃,subagent-driven為每個任務構造代理指令。代理指令係代理唯一嘅資訊來源。 計劃裏面嘅每個詞,代理都會照字面意思執行;計劃冇嘅,代理就自己估。

更重要嘅係,代理唔知道自己唔知啲乜。 「含密碼hash」呢5個字對代理嚟講睇落已經夠明確,佢唔會觸發NEEDS_CONTEXT去問更多資訊——因為佢根本意識唔到仲有「用邊個庫」呢個問題需要問。

點樣發生

writing-plans階段,我為「用戶註冊+登入」拆咗呢啲任務步驟:

步驟3:實現註冊接口(含密碼hash)
步驟7:實現登入接口(含JWT生成)

睇落冇問題——原因1嘅自檢後我加咗「密碼hash」,寫咗入步驟。

但「含密碼hash」呢5個字係模糊嘅。 用邊個庫,hash幾次,salt點樣生成。代理唔知,就自己揀咗一個:passlib.sha256_crypt

登入接口嘅代理係另一個新代理,佢都見到「含密碼hash」,都自己揀咗一個庫:bcrypt

兩個代理揀咗唔同嘅hash庫。註冊時用passlib hash,登入時用bcrypt驗證——驗證永遠失敗,但單元測試各自通過(因為每個代理淨係測咗自己嗰部分)。

直到集成測試先發現:註冊成功,登入失敗。

更常見嘅情況係:同一個庫但用法唔一致。例如註冊代理用 bcrypt.hashpw() 做hash,登入代理都用 bcrypt.verify() 驗證,但傳參順序或編碼方式唔同,同樣導致驗證失敗。呢種細微差異比「揀咗唔同庫」更容易發生,亦更難排查。

點解Skill冇攔住

writing-plans Skill本身有自審環節,會檢查佔位符同規範覆蓋,但佢檢查嘅係「有冇佔位符」,唔係「有冇歧義」。「含密碼hash」唔係佔位符,但佢係模糊詞——兩個代理可以做出唔同理解。

問題出喺銜接:計劃係俾人讀嘅「意圖描述」,但代理需要嘅係「執行指令」。 意圖描述容許模糊,執行指令唔容許。

點樣防護

writing-plans完成之後,加一個5分鐘嘅「代理視角自檢」:扮你係一個零上下文嘅代理,淨係讀計劃,可唔可以冇歧義咁執行每一步。

具體做法:揾出計劃裏面嘅「模糊詞」,替換為「精確指令」。

「含密碼hash」 替換為 「使用bcrypt庫,bcrypt.hashpw(password.encode(), bcrypt.gensalt()),驗證用 bcrypt.checkpw(password.encode(), hashed)"
「含JWT生成」 替換為 「使用python-jose庫,from jose import jwt; jwt.encode(payload, SECRET_KEY, algorithm='HS256')"
「實現分配邏輯」 替換為 「校驗assignee_id對應嘅用戶存在(調用user_repository.get_by_id),唔存在返回404」
「運行測試」 替換為 「運行 pytest tests/test_auth.py -v,確認0個失敗」

判斷標準:如果同一個步驟,兩個唔同嘅代理可能做出唔同實現,呢個步驟就係模糊嘅。

我嘅項目,過完自檢後計劃從簡略步驟變成了精確指令。多咗15分鐘寫計劃,但估算慳咗大概1.5個鐘返工。

呢類坑嘅變種

「校驗用戶存在」:查數據庫定係查緩存,緩存同數據庫唔一致時行為唔同
「返回錯誤」:返回400定係422,客戶端處理邏輯唔同

規律:計劃裏面任何需要代理「判斷」嘅地方,都係潛在嘅資訊流失點。 將判斷變成指令,資訊就唔會流失。

原因3:審查問題未改完就去驗證

呢個原因實際上包含兩層問題:一層係人違反咗鐵律,一層係Skill間嘅資訊斷層。必須分開睇。

邊個環節出問題

code-review嘅輸出係審查問題列表,verification檢查嘅係「你係咪真係跑咗測試、結果係咪通過」。審查問題係咪已經修復,直接影響代碼質量——但verification本身唔檢查審清清單。

點樣發生

任務2(用戶註冊+登入)嘅code review發現咗2個Important問題:

1
註冊時未校驗電郵格式
2
登入失敗時嘅響應時間差異可能俾人用嚟做用戶名枚舉

我睇咗呢兩個問題,覺得「電郵校驗後面統一加,響應時間唔影響功能」,就標記咗「已知,後續處理」,直接進入verification。

verification跑咗一遍:32個測試全綠,規範覆蓋逐條對齊,睇落冇問題。

但verification驗證嘅係「測試係咪通過」,唔係「審查問題係咪修復」。 佢嘅職責係確認你唔係空口講「搞掂咗」,而係有測試結果做證據。審查問題係咪修復,唔喺佢嘅檢查範圍內。

到任務5(用戶資料編輯)時,代理都需要校驗電郵——但唔知任務2嘅校驗邏輯係乜(因為根本冇實現),就自己寫咗一套。兩套校驗邏輯唔一致,集成測試時暴露咗。

兩層問題

第一層:人違反咗鐵律。 subagent-driven-development Skill嘅鐵律要求審查問題一定要修復後先可以進入下一個任務。我跳過咗呢條鐵律。但現實中,「已知,後續處理」呢種標記太容易矇混過關——Skill嘅鐵律係靠人執行嘅,人會偷懶。

第二層:verification唔知審查留低咗啲乜。 就算鐵律要求先修再驗證,verification本身都冇機制檢查「有冇未處理嘅審查問題」。佢淨係睇測試結果同規範覆蓋,唔睇審清清單。呢個唔係verification嘅設計缺陷——佢嘅職責就係驗證測試通過,唔係檢查審清清單。但正因為職責係咁,審查同驗證之間需要一個額外嘅銜接環節。

點樣防護

加一個硬規則:verification之前,一定要過一遍審清清單。

每個審查問題一行,標註狀態:

Important: 電郵格式校驗 — 已修復(commit abc123)
Important: 響應時間固定 — 已修復(commit def456)
Minor: 類型註解缺失 — 記錄為技術債務

全部Important修復後,先進入verification。 呢份清單唔係可選嘅,而係verification嘅前置門禁。

呢類坑嘅變種

Important問題標記「後續處理」,verification通過但質量唔達標,後續任務基於有缺陷嘅代碼開發
Minor問題直接無視,小問題積累成大問題,技術債務越積越多

規律:審查同驗證之間一定要有一個「修復確認」環節。 跳過咗,驗證就係盲目嘅。

3個原因嘅共性

3個銜接位有一個共同特徵:喺Skill嘅自動流程中,前置Skill嘅產出假設已完成而且唔可以更改,後續Skill唔會回頭補。

1
brainstorming冇寫嘅,writing-plans唔會自己加上去
2
計劃裏面嘅模糊詞,代理唔會返嚟問「你係咩意思」——因為佢唔知自己需要問乜
3
審查發現嘅問題,verification唔會自動檢查係咪修復——因為佢嘅職責唔包括呢項

Skill內部有反饋循環(審查唔通過可以打回頭改),但Skill之間冇——資訊只會流失、唔會補充。如果有人介入返返上一步修正,可以彌補,但Skill本身唔會觸發呢個回退。

防護嘅核心思路:喺每個銜接位加5分鐘自檢,確保資訊唔會喺罅隙裏面流失。

銜接處
自檢內容
耗時
brainstorming到writing-plans
安全/邊界/依賴係咪明確
約5分鐘
writing-plans到subagent-driven
每個步驟有冇歧義
約5分鐘
code-review到verification
審查問題係咪全部處理
約3分鐘

3個自檢,約15分鐘。但慳返嘅返工時間,喺我呢個項目入面遠遠超過呢個數。

自檢方案嘅侷限: 自檢靠人執行,都可能漏。如果你發現自檢清單本身成日漏項,可以考慮將清單固化做模板,每次對照打勾。對於極簡單嘅項目(例如得一個代理嘅單任務),原因2(兩個代理揀唔同庫)冇咁易發生,自檢可以簡化——但原因1同原因3嘅自檢仍然建議做。

其他5個容易踩嘅坑

除咗3個銜接位嘅問題,仲有幾個零星嘅坑都會令執行效果打折扣:

坑1:git-worktree入面唔記得裝依賴。 worktree係代碼副本,唔包含虛擬環境。創建後一定要重新 pip install,唔係代理跑pytest會報ModuleNotFoundError。

坑2:DONE_WITH_CONCERNS唔可以跳過。 任務5嘅代理返回「狀態轉換校驗可能唔完整,淨係校驗咗正向轉換,冇處理回退」。我一開始覺得回退唔需要,跳過咗。集成測試時發現真實場景的確需要回退。代理嘅疑慮唔一定啱,但一定要認真讀一遍再決定——佢嘅誤報率唔高,值得逐條審視。

坑3:驗證證據一定要新鮮。 我話「頭先跑過測試」,AI要求重新跑——因為中間改咗bug,舊結果唔可以證明當前代碼冇問題。「頭先跑過」唔算驗證,一定要用當前代碼重新跑。

坑4:debugging先查根因。 集成測試報401,我第一反應係「token過期咗」,想直接加token refresh邏輯。用systematic-debugging排查後發現:註冊接口同登入接口分別喺唔同嘅配置文件中定義咗SECRET_KEY預設值,兩個值唔一致——註冊簽出嘅token,登入嗰邊驗唔到。醫症狀唔醫根因,bug會換個方式再嚟。正確做法係先定位根因(比較兩邊嘅SECRET_KEY),再修(統一到一個配置源)。

坑5:多個代理修改同一文件。 任務2嘅代理喺 utils.py 入面加咗密碼hash函數,任務3嘅代理都喺 utils.py 入面加咗日期格式化函數。兩個代理各自基於原始文件修改,後提交嘅代理可能覆蓋前一個代理嘅改動。subagent-driven-development會做代碼合併,但如果兩個代理改咗同一文件嘅唔同位置,合併邏輯有時會甩咗其中一個改動。防護方法:喺計劃中明確每個代理負責嘅文件範圍,避免多個代理改同一個工具文件。

最終數據

維度
數據
項目
Python FastAPI任務管理API
任務數
6
測試數
32
測試覆蓋
89%(修復所有問題後嘅最終覆蓋率)
銜接位問題
3個(密碼明文、hash庫唔兼容、審查問題未修)
其他問題
5個
銜接位返工時間
估算約3.5個鐘(佔總返工時間約70%)

3個銜接位貢獻咗8個坑入面嘅3個,但返工時間佔比最大(約70%)。呢個唔係巧合——銜接位係資訊流失嘅地方,資訊流失係返工嘅根因。

3分鐘上手

如果你已經識用Superpowers嘅單個Skill,但未跑過完整流程,按呢個順序行,每個銜接位停5分鐘自檢:

1
/superpowers:brainstorming 做完,自檢:安全/邊界/依賴係咪明確
2
/superpowers:writing-plans 做完,自檢:每個步驟有冇歧義
3
/superpowers:using-git-worktrees 創建隔離空間,記得裝依賴
4
/superpowers:subagent-driven-development 逐個派代理(代理內部行TDD + 雙重審查),認真讀DONE_WITH_CONCERNS,明確每個代理負責嘅文件範圍
5
遇到bug用 /superpowers:systematic-debugging,先查根因
6
code review做完,自檢:審查問題係咪全部處理
7
/superpowers:verification-before-completion 強制驗證,證據一定要新鮮
8
/superpowers:finishing-a-development-branch 合併收尾

3個自檢,約15分鐘,慳幾個鐘返工。 如果你淨係做1個,做原因2嘅自檢(計劃有冇歧義)——代理唔會返嚟問你,佢會自己估,估錯咗到審查先發現,審查冇發現就到上線先發現。

掃碼關注「AI智聞說」,每日3分鐘掌握AI新知識

圖片

9個Skill各自沒問題,問題出在它們之間的銜接——信息在這裏悄悄丟失,返工在這裏悄悄發生

你遇到的可能不是Skill的問題

你可能看過Superpowers單個Skill的介紹。單個Skill確實不難用——brainstorming會提問,TDD會逼你寫測試,代碼審查會派獨立代理。

但真實項目不是孤立地用一個個Skill,是9個Skill串成一條流水線,一個的輸出餵給下一個。

我最近用Superpowers完整流程開發了一個Python任務管理API。9個Skill各自跑得很順,但最終效果打了折扣——返工不斷,bug反覆出現,驗證通過了但質量不達標。

排查下來,原因不在Skill本身,而在Skill之間的3個銜接處:

1
brainstorming到writing-plans:設計文檔少寫一句話,代理就用明文存密碼
2
writing-plans到subagent-driven:計劃裏有個模糊詞,代理就"猜着做"
3
code-review到verification:審查問題沒修完就去驗證,通過但不達標

加上5個零散的坑,一共8個問題。3個銜接處的問題貢獻了最多的返工時間。

這篇文章只講一件事:Superpowers執行效果為什麼不達預期,以及怎麼防護。

圖片

全貌:問題出在哪裏

Superpowers主流程涉及的Skill(按接力順序):

1
設計階段:brainstorming、writing-plans
2
執行階段:using-git-worktrees、subagent-driven-development(代理內部走TDD + 雙重審查)
3
收尾階段:systematic-debugging(遇bug觸發)、verification-before-completion、finishing-a-development-branch

3個銜接處標在圖裏了。注意:銜接處不是Skill,是Skill之間的縫隙。 Skill內部有鐵律保護,不容易出錯;但縫隙裏沒有保護,信息在這裏悄悄丟失。

圖片

先記住這3個自檢點,後面逐個展開:

1
brainstorming做完後:安全/邊界/依賴是否明確
2
writing-plans做完後:每個步驟是否有歧義
3
code-review做完後:審查問題是否全部處理

下面逐個講。

原因1:設計文檔缺了"顯而易見"的細節

哪個環節出問題

brainstorming的輸出是設計文檔,writing-plans的輸入也是這份文檔。對於項目中新增的需求,設計文檔幾乎是writing-plans唯一的信息來源。 文檔裏沒寫的,writing-plans大概率不知道;writing-plans不知道的,代理就不會做。

怎麼發生的

我的項目是"Python任務管理API"。brainstorming階段確認了這些需求:

用戶註冊/登錄
任務CRUD
任務分配給成員
進度狀態更新

設計文檔寫完了,我滿意地進入writing-plans。

但設計文檔裏沒寫"密碼必須哈希存儲"。

誰會用明文存密碼,這是常識。但writing-plans讀到的是文檔,不是常識。它看到"用戶註冊"這個需求,拆出了"實現註冊接口"這個任務,步驟裏寫的是"存儲用戶信息"——沒有指定哈希。

代理執行時,按最簡單的方式實現:直接把密碼存進數據庫。測試通過了,註冊成功,登錄成功。直到代碼審查才發現密碼是明文存儲。

為什麼Skill沒攔住

brainstorming Skill本身有自審環節,會檢查佔位符和矛盾,但它關注的是功能接口是否完整,不會主動檢查安全、性能等非功能需求。認證方式(密碼哈希算法)屬於接口層面的設計決策,但brainstorming默認不會逐項確認這類細節。

問題出在銜接:設計文檔是brainstorming的"功能視角"產物,但writing-plans需要的是包含實現細節的"可執行視角"輸入。 這個視角轉換,沒有Skill負責。

怎麼防護

brainstorming結束後、進入writing-plans之前,加一個5分鐘的自檢:

安全自檢(3項):

認證/授權方式是否明確(密碼哈希算法、JWT過期策略、token存儲方式)
數據校驗規則是否明確(郵箱格式、密碼強度、輸入長度限制)
敏感數據處理是否明確(日誌脱敏、錯誤信息不泄露內部狀態)

邊界自檢(3項):

"不做"清單是否明確(哪些功能明確排除)
性能約束是否明確(併發量、數據量、響應時間)
依賴約束是否明確(必須用/禁止用的庫、版本)

6項過完,我的設計文檔多了4行:

認證方式:bcrypt哈希 + JWT(python-jose),token過期30分鐘
密碼校驗:至少8位,包含字母和數字
郵箱校驗:標準郵箱格式正則
不做:通知、附件、評論、優先級管理

4行字,我估算了下省了大約1小時返工。

這類坑的變種

不只是"密碼哈希"。任何"顯而易見"的實現細節都可能在這裏丟失:

"用戶登錄"未指定哈希算法,導致代理用明文存儲密碼
"獲取任務列表"未指定分頁參數,導致一次查10萬條數據,接口超時

規律:需求描述越"顯而易見",實現細節越容易丟失。 因為"顯而易見"的東西不會被寫進文檔——但代理只讀文檔。

原因2:計劃裏的模糊詞讓代理"猜着做"

哪個環節出問題

writing-plans的輸出是一份實現計劃,subagent-driven為每個任務構造代理指令。代理指令是代理唯一的信息來源。 計劃裏的每個詞,代理都會按字面意思執行;計劃裏沒有的,代理就自己猜。

更關鍵的是,代理不知道自己不知道什麼。 "含密碼哈希"這5個字對代理來說看起來已經足夠明確,它不會觸發NEEDS_CONTEXT去請求更多信息——因為它根本意識不到還有"用哪個庫"這個問題需要問。

怎麼發生的

writing-plans階段,我為"用戶註冊+登錄"拆了這樣的任務步驟:

步驟3:實現註冊接口(含密碼哈希)
步驟7:實現登錄接口(含JWT生成)

看起來沒問題——原因1的自檢後我加了"密碼哈希",寫進了步驟。

但"含密碼哈希"這5個字是模糊的。 用哪個庫,哈希幾次,salt怎麼生成。代理不知道,就自己選了一個:passlib.sha256_crypt

登錄接口的代理是另一個新代理,它也看到"含密碼哈希",也自己選了一個庫:bcrypt

兩個代理選了不同的哈希庫。註冊時用passlib哈希,登錄時用bcrypt驗證——驗證永遠失敗,但單元測試各自通過(因為每個代理只測了自己的部分)。

直到集成測試才發現:註冊成功,登錄失敗。

更常見的情況是:同一個庫但用法不一致。比如註冊代理用 bcrypt.hashpw() 做哈希,登錄代理也用 bcrypt.verify() 驗證,但傳參順序或編碼方式不同,同樣導致驗證失敗。這種細微差異比"選了不同庫"更容易發生,也更難排查。

為什麼Skill沒攔住

writing-plans Skill本身有自審環節,會檢查佔位符和規範覆蓋,但它檢查的是"有沒有佔位符",不是"有沒有歧義"。"含密碼哈希"不是佔位符,但它是模糊詞——兩個代理可以做出不同理解。

問題出在銜接:計劃是給人讀的"意圖描述",但代理需要的是"執行指令"。 意圖描述允許模糊,執行指令不允許。

怎麼防護

writing-plans完成後,加一個5分鐘的"代理視角自檢":假裝你是一個零上下文的代理,只讀計劃,能不能無歧義地執行每一步。

具體做法:找出計劃裏的"模糊詞",替換為"精確指令"。

"含密碼哈希" 替換為 "使用bcrypt庫,bcrypt.hashpw(password.encode(), bcrypt.gensalt()),驗證用 bcrypt.checkpw(password.encode(), hashed)"
"含JWT生成" 替換為 "使用python-jose庫,from jose import jwt; jwt.encode(payload, SECRET_KEY, algorithm='HS256')"
"實現分配邏輯" 替換為 "校驗assignee_id對應的用戶存在(調用user_repository.get_by_id),不存在返回404"
"運行測試" 替換為 "運行 pytest tests/test_auth.py -v,確認0個失敗"

判斷標準:如果同一個步驟,兩個不同的代理可能做出不同實現,這個步驟就是模糊的。

我的項目,過完自檢後計劃從簡略步驟變成了精確指令。多花了15分鐘寫計劃,但估算省了大約1.5小時返工。

這類坑的變種

"校驗用戶存在":查數據庫還是查緩存,緩存和數據庫不一致時行為不同
"返回錯誤":返回400還是422,客戶端處理邏輯不同

規律:計劃裏任何需要代理"判斷"的地方,都是潛在的信息丟失點。 把判斷變成指令,信息就不丟了。

原因3:審查問題沒修完就去驗證

這個原因實際上包含兩層問題:一層是人違反了鐵律,一層是Skill間的信息斷層。必須分開看。

哪個環節出問題

code-review的輸出是審查問題列表,verification檢查的是"你是否真的跑了測試、結果是否通過"。審查問題是否已修復,直接影響代碼質量——但verification本身不檢查審查清單。

怎麼發生的

任務2(用戶註冊+登錄)的代碼審查發現了2個Important問題:

1
註冊時未校驗郵箱格式
2
登錄失敗時的響應時間差異可能被用於用戶名枚舉

我看了這兩個問題,覺得"郵箱校驗後面統一加,響應時間不影響功能",就標記了"已知,後續處理",直接進入verification。

verification跑了一遍:32個測試全綠,規範覆蓋逐條對齊,看起來沒問題。

但verification驗證的是"測試是否通過",不是"審查問題是否修復"。 它的職責是確認你不是空口說"搞定了",而是有測試結果作為證據。審查問題是否修復,不在它的檢查範圍內。

到任務5(用戶資料編輯)時,代理也需要校驗郵箱——但不知道任務2的校驗邏輯是什麼(因為根本沒實現),就自己寫了一套。兩套校驗邏輯不一致,集成測試時暴露了。

兩層問題

第一層:人違反了鐵律。 subagent-driven-development Skill的鐵律要求審查問題必須修復後才能進入下一個任務。我跳過了這個鐵律。但現實中,"已知,後續處理"這種標記太容易矇混過關——Skill的鐵律是靠人執行的,人會偷懶。

第二層:verification不知道審查遺留了什麼。 即使鐵律要求先修再驗證,verification本身也沒有機制檢查"是否有未處理的審查問題"。它只看測試結果和規範覆蓋,不看審查清單。這不是verification的設計缺陷——它的職責就是驗證測試通過,不是檢查審查清單。但正因為職責如此,審查和驗證之間需要一個額外的銜接環節。

怎麼防護

加一個硬規則:verification之前,必須過一遍審查清單。

每個審查問題一行,標註狀態:

Important: 郵箱格式校驗 — 已修復(commit abc123)
Important: 響應時間固定 — 已修復(commit def456)
Minor: 類型註解缺失 — 記錄為技術債務

全部Important修復後,才進入verification。 這份清單不是可選的,是verification的前置門禁。

這類坑的變種

Important問題標記"後續處理",verification通過但質量不達標,後續任務基於有缺陷的代碼開發
Minor問題直接忽略,小問題積累成大問題,技術債務越積越多

規律:審查和驗證之間必須有一個"修復確認"環節。 跳過了,驗證就是盲目的。

3個原因的共性

3個銜接處有一個共同特徵:在Skill的自動流程中,前置Skill的產出假設已完成且不可更改,後續Skill不會回頭補。

1
brainstorming沒寫的,writing-plans不會自己加上去
2
計劃裏的模糊詞,代理不會回來問"你這是什麼意思"——因為它不知道自己需要問什麼
3
審查發現的問題,verification不會自動檢查是否修復——因為它的職責不包含這一項

Skill內部有反饋循環(審查不通過可以打回去修),但Skill之間沒有——信息只會丟、不會補。如果人介入回到上一步修正,可以彌補,但Skill本身不會觸發這個回退。

防護的核心思路:在每個銜接處加5分鐘自檢,確保信息不會在縫隙裏丟失。

銜接處
自檢內容
耗時
brainstorming到writing-plans
安全/邊界/依賴是否明確
約5分鐘
writing-plans到subagent-driven
每個步驟是否有歧義
約5分鐘
code-review到verification
審查問題是否全部處理
約3分鐘

3個自檢,約15分鐘。但省下的返工時間,在我這個項目裏遠超這個數。

自檢方案的侷限: 自檢靠人執行,也可能漏。如果你發現自檢清單本身經常漏項,可以考慮把清單固化成模板,每次對照打勾。對於極簡單的項目(比如只有一個代理的單任務),原因2(兩個代理選不同庫)不太可能發生,自檢可以簡化——但原因1和原因3的自檢仍然建議做。

其他5個容易踩的坑

除了3個銜接處的問題,還有幾個零散的坑也會讓執行效果打折扣:

坑1:git-worktree裏忘了裝依賴。 worktree是代碼副本,不含虛擬環境。創建後必須重新 pip install,否則代理跑pytest報ModuleNotFoundError。

坑2:DONE_WITH_CONCERNS不能跳過。 任務5的代理返回"狀態轉換校驗可能不完整,只校驗了正向轉換,沒處理回退"。我一開始覺得回退不需要,跳過了。集成測試時發現真實場景確實需要回退。代理的疑慮不一定對,但必須認真讀一遍再決定——它的誤報率不高,值得逐條審視。

坑3:驗證證據必須新鮮。 我說"剛才跑過了測試",AI要求重新跑——因為中間修了bug,舊結果不能證明當前代碼沒問題。"剛才跑過"不算驗證,必須用當前代碼重新跑。

坑4:debugging先查根因。 集成測試報401,我第一反應是"token過期了",想直接加token刷新邏輯。用systematic-debugging排查後發現:註冊接口和登錄接口分別在不同的配置文件中定義了SECRET_KEY默認值,兩個值不一致——註冊簽出的token,登錄那邊驗不了。修症狀不修根因,bug會換個方式再來。正確做法是先定位根因(比對兩邊的SECRET_KEY),再修(統一到一個配置源)。

坑5:多個代理修改同一文件。 任務2的代理在 utils.py 里加了密碼哈希函數,任務3的代理也在 utils.py 里加了日期格式化函數。兩個代理各自基於原始文件修改,後提交的代理可能覆蓋前一個代理的改動。subagent-driven-development會做代碼合併,但如果兩個代理改了同一文件的不同位置,合併邏輯有時會丟掉其中一個改動。防護方法:在計劃中明確每個代理負責的文件範圍,避免多個代理改同一個工具文件。

最終數據

維度
數據
項目
Python FastAPI任務管理API
任務數
6
測試數
32
測試覆蓋
89%(修復所有問題後的最終覆蓋率)
銜接處問題
3個(密碼明文、哈希庫不兼容、審查問題未修)
其他問題
5個
銜接處返工時間
估算約3.5小時(佔總返工時間約70%)

3個銜接處貢獻了8個坑中的3個,但返工時間佔比最大(約70%)。這不是巧合——銜接處是信息丟失的地方,信息丟失是返工的根因。

3分鐘上手

如果你已經會用Superpowers的單個Skill,但還沒跑過完整流程,按這個順序走,每個銜接處停5分鐘自檢:

1
/superpowers:brainstorming 做完,自檢:安全/邊界/依賴是否明確
2
/superpowers:writing-plans 做完,自檢:每個步驟是否有歧義
3
/superpowers:using-git-worktrees 創建隔離空間,記得裝依賴
4
/superpowers:subagent-driven-development 逐個派代理(代理內部走TDD + 雙重審查),認真讀DONE_WITH_CONCERNS,明確每個代理負責的文件範圍
5
遇到bug用 /superpowers:systematic-debugging,先查根因
6
代碼審查做完,自檢:審查問題是否全部處理
7
/superpowers:verification-before-completion 強制驗證,證據必須新鮮
8
/superpowers:finishing-a-development-branch 合併收尾

3個自檢,約15分鐘,省數小時返工。 如果你只做1個,做原因2的自檢(計劃是否有歧義)——代理不會回來問你,它會自己猜,猜錯了到審查才發現,審查沒發現就到線上才發現。

掃碼關注「AI智聞說」,每天3分鐘掌握AI新知識

圖片