Skip to content

FAQ

人們常問到的問題的快速解答。如果您的問題是「某個東西壞了」這類型的,請參閱 Troubleshooting。如果您想定義一個術語,請查看 Glossary

基礎知識 (The basics)

一句話概括 OpenSpec 是什麼?

它是一個輕量級的層次,可以在任何程式碼被編寫之前,讓您和您的 AI 編程助手就「要做什麼」達成書面共識。

我為什麼會需要它?

因為 AI 助手即使出錯也表現得很有把握。當需求僅存在於聊天串中時,AI 會用猜測來填補空白,而您是在程式碼生成後才發現問題。OpenSpec 將這個共識提前,讓錯誤的修正成本更低。請參閱 Core Concepts at a Glance 以了解完整的案例說明。

我必須對所有事情都使用它嗎?

不。在需要達成共識的地方使用它,這通常是大多數非瑣碎的工作。對於一個單字元的拼寫錯誤修復,這個儀式可能不值得,這是可以接受的。

我可以在現有的大型程式碼庫上使用它,還是只能用於新專案?

現有程式碼庫才是重點。OpenSpec 採用「棕地優先」(brownfield-first)原則:您不需要一次性地記錄整個應用程式。您只需針對每個變更所涉及的部分撰寫規格,而您的規格會隨著實際工作進展而被逐步完善。有一份專門的指南:Using OpenSpec in an Existing Project

它是否與某一個 AI 工具綁定?

不。OpenSpec 可與 25 個以上的助手配合使用,包括 Claude Code、Cursor、Windsurf、GitHub Copilot、Gemini CLI、Codex 等。完整的清單和每個工具的詳細資訊請參閱 Supported Tools

執行指令 (Running commands)

我在哪裡輸入 /opsx:propose

在您的 AI 助手的聊天介面中,而不是在終端機(terminal)。這是最常見的一個困惑點,因此有專門的頁面:How Commands Work。簡而言:openspec ... 在終端機執行,/opsx:... 在聊天室執行。

我如何「啟動互動模式」?

並沒有一個單獨的模式需要啟動。您像平常一樣開啟您的 AI 助手,然後在它的聊天介面中輸入一個斜線指令(slash command)。這個斜線指令就是您「進入」OpenSpec 的方式。(唯一真正具有互動性的終端機功能是 openspec view,這是一個用於瀏覽規格和變更的儀表板。)完整的解釋請參閱 How Commands Work

我輸入了斜線指令但沒有任何反應。為什麼?

您很可能是在終端機而不是在 AI 聊天室中輸入的,或者這些指令尚未安裝。請在專案中執行 openspec update,重新啟動您的助手,然後再嘗試在聊天室中輸入 /opsx 並留意自動補全功能。Troubleshooting 提供了完整的檢查清單。

為何有些工具的語法是 /opsx:propose,而另一些則是 /opsx-propose

每個 AI 工具呈現自訂指令的方式略有不同。其意圖是相同的;只是標點符號不一樣。在聊天室中輸入斜線,自動補全功能會顯示出您的工具所預期的格式。每個工具的表格請參閱 How Commands Work

技能(skill)和指令(command)有什麼區別?

兩者都是 OpenSpec 用來讓您的助手執行工作流程的文件。Skills (.../skills/openspec-*/SKILL.md) 是較新的跨工具標準;Commands (.../commands/opsx-*) 是舊的、針對特定工具的斜線文件。您不需要二選一。您只需輸入斜線指令,OpenSpec 就會安裝您的工具所使用的那一個。

工作流程 (The workflow)

如果我不確定要做什麼,我應該從哪裡開始?

/opsx:explore 開始。它是一個無壓力的思考夥伴,會閱讀您的程式碼庫、列出選項,並在任何變更或程式碼存在之前,將模糊的問題轉化為具體的計畫。它位於預設配置中,因此隨時可用。當計畫清晰後,它會交接給 /opsx:propose。這是您應該採取的最佳習慣,因為它可以阻止一個急於表現的 AI 做出自信地編寫錯誤的東西。請參閱 Explore First

最簡單的流程是什麼?

text
/opsx:explore (可選)   然後   /opsx:propose <您想要什麼>   然後   /opsx:apply   然後   /opsx:archive

先探索(explore)來思考,再提出(propose)來起草計畫,應用(apply)來建置,歸檔(archive)來存檔。如果您已經清楚知道自己想要什麼,則可以跳過探索步驟。

/opsx:propose/opsx:new 有什麼區別?

/opsx:propose 是預設的一步式指令:它會一次性地創建變更並起草所有規劃產物(planning artifacts)。/opsx:new 是擴展指令集的一部分,它只會搭建一個空的變更框架(scaffold),讓您使用 /opsx:continue(或一次性使用 /opsx:ff)來逐一創建產物。除非您想要逐步控制,否則請使用 propose。請參閱 Commands

什麼是 core 和 expanded (擴展) 配置?

配置決定了哪些斜線指令會被安裝。Core(預設)提供了 proposeexploreapplysyncarchiveExpanded 集則增加了 newcontinueffverifybulk-archiveonboard,以提供更精細的控制。請使用 openspec config profile 進行切換,然後使用 openspec update 應用更改。

我需要執行 /opsx:sync 嗎?

通常不需要。Sync 會將變更的 delta 規格(delta specs)合併到您的主規格中,而 /opsx:archive 會提供此功能。僅當您希望在歸檔之前先合併規格時才手動運行 sync,例如對於一個長期進行的變更。請參閱 Commands

我開始後了,如何編輯提案(proposal)、規格(spec)或任務(task)?

直接編輯文件即可。每個產物都是 openspec/changes/<name>/ 中的純 Markdown 文件,沒有鎖定的階段或特殊的編輯模式。您可以手動更改它,或者請您的 AI 助手進行修訂(例如:「將設計更新為使用佇列」),然後繼續進行。AI 總是基於當前的文件內容來工作的。完整指南:Editing & Iterating on a Change

我是否可以在實施了一部分後退回去更改計畫?

可以,隨時都可以。工作流程是流動的,因此審查和編輯並非您會被鎖定的階段。請編輯該產物,然後繼續進行。如果您想要一個結構化的檢查,以確保程式碼仍然符合計畫,請執行 /opsx:verify。請參閱 Editing & Iterating on a Change

我手動編輯了程式碼。我該如何將其與規格(spec)對齊?

在歸檔之前,請讓它們重新同步,因為歸檔會使您的規格成為「真實的記錄」。如果程式碼現在是正確的,請更新 delta 規格以匹配您所交付的內容;如果規格是正確的,則繼續編寫,直到程式碼與之相符。/opsx:verify 會顯示出不一致的地方。請參閱 Editing & Iterating on a Change

應該在更新現有變更和開始一個新的變更之間如何抉擇?

當它是相同的、經過精煉的工作時,就進行更新。當意圖根本性地改變或範圍擴大到不同的工作時,則從頭開始。Workflows 中有決策流程圖和範例。

如果我的會話(session)耗盡上下文(context),或者需求在實施過程中發生變化該怎麼辦?

這就是規格發揮作用的地方。因為計畫存在於文件中(而不僅僅是聊天記錄中),您可以清除您的上下文,開始一個新的 AI 會話,然後使用 /opsx:apply 繼續;它會閱讀這些產物並從第一個未檢查的任務處恢復。如果需求發生變化,請編輯產物以匹配新的現實情況,然後繼續進行。保持乾淨的上下文視窗也能產生更好的結果;在實施前清除它。

我應該將 openspec/ 資料夾提交到 git 嗎?

是的。您的規格、活躍變更和歸檔都是您專案歷史的一部分。像任何其他原始碼一樣提交它們。特別是歸檔,它成為了一個持久的記錄,說明了您的系統為何以這種方式運作。

規格與變更 (Specs and changes)

規格(spec)和設計(design)有什麼區別?

規格描述可觀察到的行為:系統做了什麼、它的輸入、輸出和錯誤條件。設計則描述您將如何構建它:技術方法、架構決策、文件變動。如果實施可以改變而不會改變外部可見的行為,那麼它就屬於設計而非規格。Concepts 提供了更深入的探討。

什麼是 delta spec?

一種只描述正在變動的部分的規格,使用 ADDEDMODIFIEDREMOVED 等區塊,而不是重述整個規格。這是 OpenSpec 清晰處理現有系統編輯方式的方法。Concepts

歸檔的變更會放在哪裡?

會存放在 openspec/changes/archive/YYYY-MM-DD-<name>/ 中,所有產物都被保留。沒有任何東西被刪除;該變更只是從您的活躍清單中移出去了。

配置與自訂 (Configuration and customization)

我如何告訴 AI 我的技術棧(tech stack)?

將它放在 openspec/config.yamlcontext: 下面。這段文字會被注入到每一次規劃請求中,因此 AI 總是知道您的技術棧和約定俗成。請參閱 Customization

我可以生成非英文的規格嗎?

可以。在配置文件的 context: 中加入語言指令。Multi-Language 提供了多種語言的複製貼上範例。

我可以改變工作流程本身嗎?

可以,使用自訂模式(custom schemas)。一個 Schema 定義了哪些產物存在以及它們之間如何依賴。請使用 openspec schema fork spec-driven my-workflow 從預設配置進行分支(fork),然後編輯它。請參閱 Customization

模型、隱私密與升級 (Models, privacy, and upgrades)

我應該使用哪個 AI 模型?

OpenSpec 與高推理能力的模型配合得最好。README 建議使用 Codex 5.5 和 Opus 4.7 等模型進行規劃和實施。同時請保持您的上下文視窗乾淨:在實施前清除它以獲得最佳結果。

OpenSpec 會收集資料嗎?

它會收集匿名的使用統計數據:僅限於指令名稱和版本。不會收集參數、路徑、內容或個人資料,並且在 CI 中是自動關閉的。您可以使用 export OPENSPEC_TELEMETRY=0export DO_NOT_TRACK=1 來選擇退出(opt out)。

我如何升級?

兩個步驟。首先升級套件 (npm install -g @fission-ai/openspec@latest),然後在每個專案內部運行 openspec update 以刷新生成的技能和指令。

我如何解除安裝 OpenSpec?

沒有單獨的解除安裝指令,因為它只是一個全域性(global)套件加上您專案中的文件。請移除該套件 (npm uninstall -g @fission-ai/openspec),並可選地刪除 openspec/ 目錄和生成的工具文件。逐步指南,包括哪些內容是安全的保留,請參閱 Installation: Uninstalling

尋求幫助 (Getting help)

我在哪裡提問或回報錯誤?

這些文件有錯誤或令人困惑。我該怎麼辦?

請告訴我們,或者修復它。歡迎並重視文檔 PR(Pull Request)。請開啟一個 Issue 或發送一個 Pull Request。