真實場景怎麼用:新功能、修 bug、舊專案加入 OpenSpec

真實場景怎麼用:新功能、修 bug、舊專案加入 OpenSpec

6 min read

前四篇把 OpenSpec 的概念和流程說清楚了,但「知道怎麼跑」跟「到了真實工作知道從哪下手」還是兩回事。這篇拿三個最常見的情境當範本,各自對應一套套路。

情境一:開發新功能

這是最標準的 OpenSpec 使用場景,三個指令就搞定:

套路:explore(可選)→ propose → apply → archive

需求還不清楚?先 explore:

/opsx:explore 用戶回報說搜尋結果排序不對,可能是什麼問題?

AI 會幫你挖 codebase,把現有邏輯說清楚,然後你可以決定要改什麼。想清楚了再 propose:

/opsx:propose fix-search-ranking

AI 生成四份 artifact,你仔細看 proposal.md 和 specs/ 的 delta,確認「對,就是要改這些行為」——這一步的時間不要省,改完實作才發現方向跑偏的代價更高。

確認沒問題,/opsx:apply 實作,/opsx:archive 收尾。

新手常踩的坑:propose 完就直接 apply,沒有確認 artifact。生成的 proposal 和 tasks 有時候會猜偏,尤其是你的需求描述比較模糊的時候,五分鐘確認比實作後重做省多了。

情境二:修 bug

Bug 修復的流程跟新功能幾乎一樣,但有一點差異——要先搞清楚根本原因,不要急著 propose。

套路:explore(定義問題)→ propose → apply → archive

先 explore 把問題說清楚:

/opsx:explore 用戶登入後偶爾 session 會突然失效,尤其在 Safari 上,現有的 session 管理邏輯是怎麼運作的?

AI 挖完 codebase,你們對問題原因有共識了,再 propose:

/opsx:propose fix-safari-session-expiry

這次的 proposal.md 要寫清楚:根本原因是什麼、要修改哪個行為、修完怎樣算 OK。specs 的 delta 裡,如果原本的 spec 有對 session 行為的描述,這次可能是 MODIFIED。

為什麼 bug 修復也要走 OpenSpec? 因為修完之後,修過的行為就是系統的新現況,應該反映在 spec 裡。下次有人動相同的功能,能在 spec 裡看到這裡有過修復紀錄和決策背景,比從 git blame 挖 commit message 輕鬆很多。

情境三:舊專案加入 OpenSpec

已有專案沒有任何 spec,現在想加入 OpenSpec——不需要把所有東西都補齊再開始用,邊做邊補才是正確姿勢。

套路:init → 為第一個修改建立 change → 每次修改都走 OpenSpec → specs 自然長齊

裝好初始化之後,不要試圖一次把整個系統的 spec 都寫出來——那會變成另一個「先把文件補齊才能動」的死結。

正確的做法:下一次要加功能或修 bug 的時候,就用 OpenSpec 走一遍。/opsx:propose 的時候,AI 生成的 delta spec 會描述這次修改涉及的行為,archive 之後就進 openspec/specs/。就這樣,每次修改一點,specs 慢慢長齊。

如果你想主動補幾個核心 domain 的 spec,可以這樣跟 AI 說:

/opsx:explore 幫我分析 src/auth/ 這個目錄,整理出現有的認證行為,準備寫進 openspec/specs/auth/spec.md

AI 讀完 codebase 之後,你可以直接讓它生成初始 spec 文件,放進 openspec/specs/。不用完美,能捕捉主要行為就夠了。

舊專案常遇到的心理障礙:「現在加是不是太晚了?」不晚。今天加,下一個功能就開始有跑道;不加,一年後還是一樣在猜 AI 跑哪去了。從第一個 propose 開始就是正的。

進階:多個 change 同時進行

如果你手上有兩個功能在平行開發——沒問題,OpenSpec 支援:

openspec/changes/
├── add-dark-mode/        ← 你在做
└── fix-search-ranking/   ← 同事在做

各自的 artifact 在各自的資料夾,不打架。Archive 的時候,delta spec 各自合併進對應的 domain spec。

多人協作的時候,可以用 CLI 指令確認狀態:

openspec list          # 列出所有進行中的 change
openspec show add-dark-mode  # 看特定 change 的詳情

記一下這張表

情境 起手式 注意點
新功能(需求清楚) /opsx:propose <change-name> 確認 artifact 再 apply
新功能(需求模糊) /opsx:explore 先探索 搞清楚再 propose
Bug 修復 /opsx:explore 定義根因 修復決策也要寫進 spec
舊專案加入 openspec init + 下一個功能就走 邊做邊補,不要等全部補齊

五篇讀完,你已經有了一套可以重複用的 OpenSpec 工作套路。下次叫 AI 動工之前,先花十分鐘 /opsx:propose,確認 artifact 對了再 apply——就這一步的紀律,大概率比你之後修改錯誤的代價低太多。

回到系列目錄:OpenSpec 入門課:5 篇文章帶你搞懂 AI 開發的規格管理