OpenSpec:讓 AI 寫程式更可靠的規格驅動開發工具
前言
在 AI 輔助程式開發的時代,你是否遇過這些問題:
- 告訴 AI「加個搜尋功能」,結果做出來的跟你想的完全不一樣?
- AI 寫到一半「忘了」之前的需求,開始自己發明功能?
- 每次都要重新解釋需求,因為 AI 不記得上次說過什麼?
- 團隊裡每個人用的 AI 工具不同(Claude Code、Cursor、Windsurf…),需求描述各說各話?
如果你有以上困擾,OpenSpec 可能就是你在尋找的解決方案。
什麼是 OpenSpec?
OpenSpec 是由 Fission AI 團隊開發的開源 Specification-Driven Development(SDD,規格驅動開發) 工具。它的核心理念是:先寫規格,再寫程式碼。
簡單來說,OpenSpec 讓你:
- 把需求變成結構化的規格文件
- 讓 AI 根據規格來實作,而不是憑空猜測
- 追蹤所有變更,保持專案的一致性
為什麼需要 OpenSpec?
傳統的 AI 輔助開發模式:
1 | |
使用 OpenSpec 的開發模式:
1 | |
安裝與初始化
安裝
1 | |
初始化專案
1 | |
初始化後會建立以下結構:
1 | |
目錄結構詳解
OpenSpec 使用雙資料夾模型:
1. openspec/specs/ - 規格真相來源
存放所有已實作功能的規格,是專案的「單一真相來源」。
1 | |
2. openspec/changes/ - 變更提案
進行中的功能開發,每個變更都有完整的文件結構:
1 | |
核心文件說明
| 檔案 | 用途 | 內容 |
|---|---|---|
proposal.md |
WHY & WHAT | 變更意圖、範圍、方法 |
specs/ |
增量規格 | 這次變更新增/修改/移除的規格 |
design.md |
HOW | 技術實作方案、架構設計 |
tasks.md |
TODO | 可勾選的實作任務清單 |
OpenSpec 1.0 的工作流程
核心指令
OpenSpec 1.0 提供了更彈性的指令,不再強制按照固定順序執行:
| 指令 | 說明 |
|---|---|
/opsx:new |
建立新的變更提案 |
/opsx:explore |
在寫提案前先跟 AI 討論想法 |
/opsx:continue |
根據相依性,逐步產出下一個文件 |
/opsx:ff |
Fast Forward - 一次產出所有文件 |
/opsx:apply |
執行任務,AI 開始寫程式 |
/opsx:archive |
完成後歸檔,更新規格 |
標準工作流程
1 | |
文件相依性管理
OpenSpec 使用 DAG(有向無環圖) 來管理文件之間的相依性:
1 | |
每個文件有三種狀態:
- BLOCKED - 還不能建立(依賴的文件還沒完成)
- READY - 可以建立了
- DONE - 已完成
實際使用範例
範例:新增搜尋功能
Step 1: 建立提案
1 | |
AI 會建立 openspec/changes/add-product-search/ 目錄,並產出 proposal.md:
1 | |
Step 2: 產出完整文件
使用 /opsx:ff 一次產出所有文件,或用 /opsx:continue 逐步產出。
tasks.md 範例:
1 | |
Step 3: 執行任務
1 | |
AI 會:
- 先讀取
tasks.md計算目前進度 - 逐一執行未完成的任務
- 完成一個就打一個勾
- 即時更新進度
1 | |
Step 4: 歸檔
1 | |
將變更合併到 openspec/specs/,並移到 openspec/archive/ 保存。
OpenSpec 1.0 的重要改進
1. 工作流不再是一直線
0.x 版是線性的:proposal → apply → archive,進了 apply 就不能回頭。
1.0 版讓你想做什麼就做什麼,系統會追蹤狀態。
2. 任務進度即時更新
以前的 tasks.md 進度更新是 AI 「看心情」決定的。
現在每次執行 /opsx:apply 都會:
- 先讀取
tasks.md計算進度 - 做完一個任務就打勾
- 即時更新完成比例
3. Slash Commands 變成 Skills
原本每個 AI 工具都有自己的配置格式:
- Claude Code 用
CLAUDE.md - Cursor 用
.cursorrules - 維護起來很麻煩
現在統一放在 .claude/skills/ 目錄,支援 20+ 種 AI 工具:
- Claude Code
- Cursor
- Windsurf
- Copilot
- Aider
- …等等
4. 專案配置集中管理
用 openspec/config.yaml 管理專案設定:
1 | |
當 AI 執行指令時,會自動載入這些設定。
支援的 AI 工具
OpenSpec 支援絕大多數主流的 AI 程式開發工具:
| 工具 | 支援方式 |
|---|---|
| Claude Code | Skills |
| Cursor | Skills |
| Windsurf | Skills |
| GitHub Copilot | Skills |
| Aider | Skills |
| Trae | Skills |
| Qoder | Skills |
這表示同一個專案可以混用不同的 AI 工具,大家都能讀取相同的規格文件!
實際應用場景
場景 1:新功能開發
1 | |
場景 2:討論階段
1 | |
場景 3:團隊協作
1 | |
相關工具:Spectra
如果你覺得純文字操作有點麻煩,可以試試 Spectra —— 一個 OpenSpec 的圖形介面工具。
Spectra 功能特色
- 規格瀏覽:用圖形介面瀏覽 specs、changes、archive
- 全文搜尋:使用 SQLite 建立索引,快速搜尋
- 任務追蹤:視覺化的任務清單,支援拖放排序
- 即時監視:自動偵測檔案變更
- 多主題支援:6 種主題 × 2 種配色
下載 Spectra
OpenSpec vs 其他 SDD 工具
| 工具 | 開發者 | 特點 |
|---|---|---|
| OpenSpec | Fission AI | 輕量、brownfield-first、跨 AI 工具 |
| Spec-Kit | GitHub | 官方工具、較嚴謹 |
| Kiro | AWS | 獨立 AI IDE、自動駕駛模式 |
| BMad Method | BMad Code | 方法論導向 |
最佳實踐
1. 從小處著手
不要一次建立太大的提案,把大功能拆成多個小變更。
2. 定期歸檔
完成一個變更就立即 /opsx:archive,保持 changes/ 目錄乾淨。
3. 善用 config.yaml
把專案的技術棧、程式碼規範都寫進去,讓 AI 有明確的依據。
4. 保持規格同步
規格文件是真相來源,程式碼變更時要同步更新規格。
5. 團隊共識
確保團隊成員都了解 OpenSpec 的工作流程和目錄結構。
結語
OpenSpec 解決了 AI 輔助開發中的幾個核心問題:
- 需求不明確 → 透過結構化的規格文件解決
- AI 亂猜 → 讓 AI 根據規格實作
- 無法追蹤 → 所有變更都有記錄
- 團隊協作困難 → 統一的規格格式,跨工具支援
如果你正在使用 AI 工具進行開發,不妨試試 OpenSpec,讓你的開發流程更加可控、可靠。