WeHelp
從 OpenSpec 到 Superpowers:我花了 6 週才搞懂的 SDD 開發流
2026-05-04 22:52:33
## 摘要 3/22 到 5/4,我試了四種開發流:純 OpenSpec → 加 brainstorming → 魔改 OpenSpec → superpowers 全家桶。 最後的結論顛覆我自己:**規格文件其實是搞笑的,CodeBase 才是真實**。 如果你也在做 SDD、也在猶豫要不要花時間維護一堆 spec,這篇可能會省你幾週。 --- ## 為什麼要寫這篇 我從 3 月開始用 SDD(Spec-Driven Development)做開發,中間踩了不少坑,每個階段都覺得「這次找到正解了」,下一週又被自己打臉。 寫這篇不是要推銷某個工具,而是想分享一件事: > 所有一切自己的假設,必須先當作是錯的,用實戰去驗證他是對的。 這句話聽起來像幹話,但它是我這 6 週最大的收穫。下面四個階段,就是我被現實打臉四次的過程。 --- ## 第一階段:純 OpenSpec(3 月) **工具流程**:`/opsx:new` → `/opsx:ff` → `/opsx:apply` → `/opsx:archive` 我自己也在優化 OpenSpec 的用法,例如規定: - 一個 change 只做一個功能 - 整份 task 不能太多(≤ 15) 跑了 10 個工作天,封存了一堆需求,看起來很有產出。 ### 然後我問了自己一個問題 **這些 spec,到底是寫給誰看的?** | 對象 | 會讀嗎? | |------|---------| | 人類同事 | 不會 | | 我自己 | 不會 | | AI(同範圍 Issue / Fix 時) | 會,且會補充 | 只有 AI 會看。那為了 AI 維護這麼多 spec 值得嗎? **結論**:不值得。修一個小 issue 還要先 reading 再調整,反而麻煩。而且這些 spec 加起來也拼不出一份完整的使用手冊,純粹是給 AI 當零散的記憶體用。 ### 更痛的點:計畫永遠對不上現實 我起草時已經很努力了——先寫草稿、再寫 Design、再寫 Task,把所有現實限制都餵給 AI。 結果呢?**我完成的功能跟「計畫」一字不差,但「計畫」本身和 PM 心中的需求有偏移。** 於是我得到的不是「做錯了」,而是更阿雜的「做對了,但對的不是 PM 要的」。Shit。 --- ## 第二階段:加入 brainstorming(4 月初) 為了打擊「計畫對不上現實」這個痛點,我把 SuperPowers 的 `brainstorming` skill 接到流程最前面。 **體感差異**:超大。 用 brainstorming 跑出來的草稿,完整度比我自己用 OpenSpec 寫的好太多。如果第一階段我已經覺得很讚,那這階段只能說是讚爆。 ### 為什麼 brainstorming 這麼有用? 這個 skill 我有去把它整份讀完,建議你也讀,真的有意思。我這邊只挑幾個關鍵點: **它做的事,本質上是「擋掉你想直接動手的衝動」。** 在「呈現設計 + 使用者批准」之前,skill 強制禁止寫任何 code、scaffold、或呼叫任何 implementation skill。連改 config、加一個 utility function 都要走完整流程。 你心裡想「這太簡單了不需要設計吧」——skill 直接點名這就是 anti-pattern: > 簡單的專案,正是「未經檢驗的假設」造成最多浪費的地方。 **它強迫你做這幾件事**: 1. 一次只問一題(多選題優先) 2. 一定要提 2-3 個方案 + 推薦哪個 + 為什麼 3. 設計分節呈現,每節等使用者點頭才繼續 4. 寫完設計文件還要自審四項:placeholder / 一致性 / scope / ambiguity 5. 最後唯一能呼叫的下一個 skill 是 `writing-plans`,不能跳格 這套流程的精髓:**設計階段把選擇權還給人**。AI 不是丟一個方案讓你接受,是給你 2-3 個讓你導向。 ### 但問題還沒完全解決 brainstorming 解了「設計品質」的問題,可是 OpenSpec 那套 spec 維護的負擔還在。所以我又往下踩了一階。 --- ## 第三階段:魔改 OpenSpec(4/7) 我當時想:保留 OpenSpec 的結構,但塞進 SuperPowers 的紀律,會不會兩全? 於是我改了 `OpenSpec.yaml`,要求 AI 起草時必須先用 brainstorming、必須照 brainstorming 的方式問問題、必須提案。 **結果**:他有時候會跳過。 我問 AI 為什麼跳過,他給我一句很經典的話: > 我不一定會遵守 yaml,但我一定會遵守 skills。 OK 我懂了。要魔改的不是 yaml,是把 OpenSpec 的四個基礎技能直接改成 SuperPowers 的形狀。 但我還沒動手,就跳到第四階段了——因為我發現根本不用魔改。 --- ## 第四階段:superpowers 全家桶(4/7 起) 我決定全程跑一次 superpowers,純粹是想搞懂他在做什麼。 跑完以後我整個人傻住,God 這到底是什麼玩意? ### 三個 skill 串起來就是一條完整流水線 | Skill | 做什麼 | |-------|--------| | `superpowers:brainstorming` | 完整的設計思路 | | `superpowers:writing-plans` | 直接讀 CodeBase 設計 Task | | `superpowers:execute-plan` | 全程 SubAgent 開發,可開分支 + 獨立 worktree | 跑完一輪,我前面三階段在搞什麼鬼,自己都覺得好笑。 ### 真正讓我頓悟的是這件事 writing-plans 是直接讀 **CodeBase** 來設計 task 的。 那一刻我突然想通: > **規格文件其實是搞笑的。** 為什麼這樣說? - Spec 文件可能有誤、可能過時、可能跟現實不同步 - CodeBase 永遠是最新的、它就是現實本身 - 既然 AI 可以直接讀 CodeBase,為什麼要透過一份「可能寫錯的 spec」轉譯一次? 過去我一直把 spec 當「真理」,CodeBase 當「實作」。但其實反過來才對——**CodeBase 才是真理,spec 只是一份可能會 drift 的影子**。 ### 還有一個我沒預期到的紅利:可以直接拿去對 PM 這件事我一開始沒想到。 brainstorming 跑出來的設計,品質高到我可以**直接拿去跟 PM 對齊規格**——不是工程師之間的技術文件那種「對齊」,是 PM 看得懂、能討論、能挑剔的那種對齊。 更扯的是,因為 brainstorming 強迫你提 2-3 個方案 + trade-offs,過程中常常會挖出**連 PM 自己都沒想到、我也沒想到的邊界條件和限制**。等於是 AI 幫我們兩個人一起做需求釐清。 而且,順著 superpowers 的設計脈絡,可以**直接產 HTML demo 給 PM 看畫面**。PM 不用再看抽象的 spec 想像最終長怎樣,可以直接點、直接戳、直接抓問題。 回頭看第一階段那個讓我阿雜的痛點——「我做對了,但對的不是 PM 要的」——這套流程從根本解掉了,因為 PM 在 spec 階段就已經點過頭了,而且是看著 demo 點的。 ### 一個我自己也在懷疑的觀察:產能真的提升了嗎? 用全家桶之後,我開始習慣**一次 hang 很多任務在跑**。 具體來說,可能在同一個半天裡: - 跟前端對接好幾個任務 - 同步把這些任務的後台部分完成 - 順便出 API - 再修一批 issue 而且我並不覺得很耗時,反而有「咦怎麼又做完了」的錯覺。 更扯的工作流是這樣:**遇到複雜任務,我會花 2-3 小時把 spec + plan 寫好,然後下班前一鍵送出,讓它照著 plan 執行**。 隔天早上來上班,東西就在那裡等我 review。 這算產能大幅提升嗎?我自己也說不準。但我可以確定的是——**當你不用親自打字寫每一行 code、不用自己盯著編譯、不用手動切 context、甚至連執行時間都能排到你睡覺的時候**,你的「同時在進行」上限會被放大很多倍。 我也在問自己:這樣會不會不好? 目前我的觀察是:只要你還在審 plan、還在 review PR、還在驗收結果,那就是把自己從「打字員」升級成「決策者」,這件事應該是好的。但如果連 review 都跳過——那就是另一個故事了。 ### 時間成本?根本不是問題 - writing-plans 跑 20-30 分鐘 → 那又怎樣?寫出來的東西夠正確 - execute-plan 跑 1 小時 → 那又怎樣?我自己開發更久 而且這 1 小時我不用盯著,可以拿來寫下一份需求、處理其他事情。 這是藝術。我一開始就知道這個工具,幹嘛不好好用? --- ## 我學到什麼 回頭看這四個階段,每一階段我都覺得「找到正解了」,下一階段又被自己推翻。最後的體悟是: > **所有一切自己的假設,必須先當作是錯的,用實戰去驗證他是對的。而感受到這是正解的當下,就是此時此刻的正解。** 「此時此刻的正解」這幾個字很重要——我不敢說 superpowers 全家桶就是終點,可能下個月又有新東西讓我打臉自己。 但這就是 SDD(或廣義的 AI-augmented 開發)有趣的地方:你不是在找一套「永遠對的流程」,你是在不斷驗證自己的假設,然後接受現在最有效的那一套。 希望這篇能讓正在踩 SDD 坑的你少走一點冤枉路。 如果你也是 superpowers 的使用者,歡迎留言聊聊你的流程;如果你還在純 OpenSpec 階段——試試看 brainstorming,然後就會回不去了。