常見問題解答 (FAQ)
快速回答大家最常提出的問題。如果您的問題屬於「系統出現故障」類型,疑難排解頁面會更適合您。如果您需要定義某個術語,請參閱詞彙表。
基礎知識
用一句話來說,OpenSpec 是什麼?
一個輕量級層級,讓開發者與 AI 程式碼助手在編寫任何程式碼之前,先以書面形式就「要建構什麼」達成共識。
我為什麼需要這個?
因為即使 AI 助手錯了,它們依然表現得很有自信。當需求僅存在於聊天記錄中時,AI 會用猜測來填補空白,而你要等到程式碼已經生成後才發現問題。OpenSpec 將共識過程提前,此時修正錯誤的成本較低。完整論述請見核心概念一覽。
我必須對所有事情都使用它嗎?
不需要。在需要達成共識的地方使用它,這通常適用於大多數非瑣碎的工作。對於只修正一個字元的錯字這類小任務,這些流程可能不值得,這沒關係。
我可以將其用於大型現有程式碼庫,還是只能用於新專案?
現有程式碼庫才是主要應用場景。OpenSpec 優先支援棕地(brownfield)專案:你不需要一開始就文件化整個應用程式。你只需為每次變更所涉及的內容撰寫規格,隨著實際工作的進行,你的規格也會逐漸完善。我們有專門的指南:在現有專案中使用 OpenSpec。
它是否綁定特定的 AI 工具?
不是。OpenSpec 可與 30 多種助手配合使用,包括 Claude Code、Cursor、Devin Desktop、GitHub Copilot、Gemini CLI、Codex 等。完整列表及各工具的詳細資訊請見支援的工具。
執行命令
我在哪裡輸入 /opsx:propose?
在你的 AI 助手的聊天視窗中,而不是終端機裡。這是最常見的混淆點,因此它有專屬頁面:命令如何運作。簡短版本:openspec ... 在終端機中執行,/opsx:... 在聊天中執行。
我該如何「啟動互動模式」?
沒有單獨的模式需要啟動。像平常一樣打開你的 AI 助手,並在它的聊天視窗中輸入斜線命令。斜線命令就是你「進入」OpenSpec 的方式。(唯一真正具有互動性的終端機功能是 openspec view,這是一個用於瀏覽規格和變更的面板。)完整說明請見命令如何運作。
我輸入了一個斜線命令,但沒有任何反應。為什麼?
最有可能的原因是你是在終端機而不是 AI 聊天中輸入的,或者你使用的拼寫工具無法識別,又或者尚未安裝這些命令。如果檔案遺失——或者你從未設定該工具——請執行 openspec init;openspec update 僅更新已存在的檔案。然後重新啟動你的助手,並使用「入門」下方列印的格式——請參閱如何呼叫。疑難排解提供了完整的檢查清單。
為什麼這個工具的語法是 /opsx:propose,而另一個是 /opsx-propose?
每個 AI 工具呈現自訂命令的方式略有不同,OpenSpec 會根據你的工具載入其寫入的檔案的方式來拼寫它們。名為 opsx-propose.md 的命令檔案輸入為 /opsx-propose;歸類在 commands/opsx/ 下的檔案輸入為 /opsx:propose。採用技能而非命令的工具使用技能名稱——Codex 需要 $openspec-propose,Kimi Code 需要 /skill:openspec-propose。openspec init 的「入門」行已經為你選擇的工具列印了正確的格式;完整表格請見如何呼叫。
技能和命令有什麼區別?
兩者都是 OpenSpec 寫入的檔案,以便你的助手可以執行工作流程。技能(.../skills/openspec-*/SKILL.md)是較新的跨工具標準;命令(.../commands/opsx-*)是較舊的每工具斜線檔案。你不需要選擇。你只需輸入斜線命令,OpenSpec 就會安裝你的工具所使用的任何一種。
工作流程
如果我不確定要建構什麼,應該從哪裡開始?
從 /opsx:explore 開始。它是一個無風險的思考夥伴,會讀取你的程式碼庫,列出選項,並將模糊的問題轉化為具體的計畫,而且所有這些都在任何變更或程式碼存在之前完成。它位於預設配置檔中,因此隨時可用。當計畫明確後,它會移交給 /opsx:propose。這是應養成的最佳習慣,因為它可以防止熱心的 AI 自信地建構錯誤的內容。請見先探索。
最簡單的可能流程是什麼?
/opsx:explore (選填) 接著 /opsx:propose <你想要的内容> 接著 /opsx:apply 接著 /opsx:archive透過 Explore 進行思考,透過 Propose 草擬計畫,透過 Apply 進行建構,透過 Archive 進行存檔。如果你已經清楚知道自己想要什麼,可以跳過 Explore。
/opsx:propose 和 /opsx:new 有什麼區別?
/opsx:propose 是預設的一步式命令:它會建立變更並同時草擬所有規劃工件。/opsx:new 是擴充命令集的一部分,僅搭建空的變更框架,讓你使用 /opsx:continue(一次一個)或 /opsx:ff(一次性)來建立工件。除非你需要逐步控制,否則請使用 propose。請見命令。
什麼是 core(核心)和 expanded(擴充)配置檔?
配置檔決定安裝哪些斜線命令。Core(預設)提供 propose、explore、apply、update、sync、archive。Expanded 集合增加了 new、continue、ff、verify、bulk-archive 和 onboard 以提供更精細的控制。使用 openspec config profile 切換,然後使用 openspec update 套用。
我需要執行 /opsx:sync 嗎?
通常不需要。Sync 會將變更的差異規格合併到你的主規格中,而 /opsx:archive 會主動提出幫你執行此操作。僅在你希望在存檔之前合併規格時才手動執行 sync,例如在長期運行的變更上。請見命令。
一旦開始後,我該如何編輯提案、規格或任務?
直接編輯檔案即可。每個工件都是位於 openspec/changes/<name>/ 中的純 Markdown,沒有鎖定的階段或特殊的編輯模式。你可以手動更改它,或要求你的 AI 進行修訂(例如「更新設計以使用佇列」),然後繼續進行。AI 始終基於當前檔案內容工作。完整指南:編輯與迭代變更。
在實施部分內容後,我可以回去更改計畫嗎?
可以,隨時都可以。工作流程是流動的,因此審查和編輯不會成為你無法進行的階段。編輯工件,然後繼續進行。如果你希望進行結構化的檢查以確保程式碼仍符合計畫,請執行 /opsx:verify。請見編輯與迭代變更。
我手動編輯了程式碼。我該如何將其與規格協調一致?
在存檔之前將它們恢復同步,因為存檔會使你的規格成為事實記錄。如果程式碼現在是正確的,請更新差異規格以匹配你交付的內容;如果規格是正確的,則繼續構建直到程式碼一致。/opsx:verify 會顯示不匹配之處。請見編輯與迭代變更。
我應該何時更新現有變更,何時開始新變更?
如果是同一項工作的優化,請更新。如果是意圖根本改變或範圍膨脹成不同的工作,請重新開始。在工作流程中有決策流程圖和範例。
如果我的工作階段超出上下文限制,或在實施中途需求發生變化怎麼辦?
這就是規格發揮作用的地方。由於計畫存在於檔案中(而不僅僅是聊天歷史中),你可以清除上下文,啟動新的 AI 工作階段,並通過 /opsx:apply 繼續;它會讀取工件並從第一個未勾選的任務恢復。如果需求發生變化,請編輯工件以匹配新現實並繼續。保持清晰的上下文窗口也能產生更好的結果;在實施前清除它。
我應該將 openspec/ 資料夾提交到 git 嗎?
是的。你的規格、活躍變更和存檔都是專案歷史的一部分。像其他來源一樣提交它們。特別是存檔,它會成為記錄你的系統為何如此運作的重要憑證。
規格與變更
規格和設計中分別包含什麼?
規格描述可觀察的行為:系統做什麼、它的輸入、輸出和錯誤條件。設計描述你將如何構建它:技術方法、架構決策、檔案變更。如果實現方式可以改變而不影響外部可見行為,則它屬於設計,而非規格。概念深入探討了這一點。
什麼是差異規格(delta spec)?
一種僅描述變更內容的規格,使用 ADDED、MODIFIED 和 REMOVED 區塊,而不是重述整個規格。這是 OpenSpec 乾淨地處理現有系統編輯的方式。請見概念。
已存檔的變更存放在哪裡?
存放在 openspec/changes/archive/YYYY-MM-DD-<name>/,保留所有變更工件。該變更是從你的活躍列表中移出的。明確宣告 retire_capabilities: true 的變更是可以在移除該能力的最後一項需求時刪除主能力規格的。
配置與自定義
我該如何讓 AI 知道我的技術堆疊?
將其放在 openspec/config.yaml 下的 context: 中。這段文字會被注入到每個規劃請求中,因此 AI 始終知道你的堆疊和慣例。請見自定義。
我可以生成非英文語言的規格嗎?
可以。在你的配置的 context: 中添加語言指令。多語言提供了幾種語言的複製貼上片段。
我可以更改工作流程本身嗎?
可以,使用自定義架構。架構定義了哪些工件存在以及它們如何相互依賴。使用 openspec schema fork spec-driven my-workflow 分叉預設值,然後編輯它。請見自定義。
模型、隱私和升級
我應該使用哪個 AI 模型?
OpenSpec 在高推理能力的模型上效果最好。README 推薦使用如 Codex 5.5 和 Opus 4.7 等模型進行規劃和實施。同時保持上下文窗口清潔:在實施前清除它以獲得最佳結果。
OpenSpec 會收集數據嗎?
它收集匿名使用統計數據:僅限命令名稱和版本。不包含參數、路徑、內容或個人數據,並且在 CI 中自動關閉。可以使用 export OPENSPEC_TELEMETRY=0 或 export DO_NOT_TRACK=1 選擇退出。
我該如何升級?
兩個步驟。升級套件(npm install -g @fission-ai/openspec@latest),然後在每個專案內運行 openspec update 以刷新生成的技能和命令。
我該如何解除安裝 OpenSpec?
沒有解除安裝命令,因為它只是一個全局套件加上專案中的檔案。移除套件(npm uninstall -g @fission-ai/openspec),並可選地刪除 openspec/ 目錄和生成的工具檔案。逐步說明,包括哪些可以安全保留,請見安裝:解除安裝。
獲取幫助
我在哪裡提問或報告錯誤?
- Discord: discord.gg/YctCnvvshC
- GitHub Issues: github.com/Fission-AI/OpenSpec/issues
- 從終端機:
openspec feedback "your message"會為你開啟一個 GitHub Issue。
這些文檔有誤或令人困惑。我該怎麼辦?
告訴我們,或修復它。歡迎並重視文檔 PR。開啟 Issue 或發送拉取請求。