1. 目的
本文發(fā)布了1個工具包openspecx,擴展了openspec工具元范式,將一類需求規(guī)則知識沉淀到規(guī)則中,更好的使用SDD開發(fā)同類需求,通過openspecx,可以大幅度的提升同類需求的開發(fā)效率。(開源代碼庫及安裝方式在文末)
本文將從SDD->openspec->openspecx循序介紹SDD。
2 理解SDD
2.1 SDD 不是“顛覆式革命”,而是“演進式升級”
SDD 是軟件工程的“針對性升級”,來解決 AI 時代的新痛點。軟件工程的本質(zhì)目標是“用系統(tǒng)化方法解決軟件危機(如需求模糊、質(zhì)量不可控、維護成本高)”。隨著 AI 編程工具(如 Copilot、Claude Code)的普及,傳統(tǒng)軟件工程暴露出新的適配性問題,而 SDD 正是針對這些問題的升級方案:
- 解決“AI 生成代碼的可控性缺失”問題:傳統(tǒng)軟件工程依賴“人工編寫+人工審查”確保代碼符合規(guī)范,但 AI 編程的“快速生成”特性導致自然語言 prompt 模糊,生成代碼缺乏規(guī)范約束。 SDD 的升級邏輯:將“規(guī)范”前置為 AI 生成的“輸入標準”
- 解決“規(guī)范與實現(xiàn)的同步斷層”問題:傳統(tǒng)軟件工程中,規(guī)范文檔(如 PRD、設計文檔)常因“寫完即棄”導致“規(guī)范與代碼兩張皮”,尤其在 AI 快速迭代場景下,代碼頻繁變更進一步加劇同步難度。 SDD 的升級邏輯:讓規(guī)范“可執(zhí)行、可同步”。
- 解決“多角色協(xié)作的信息差擴大”問題: AI 時代的開發(fā)團隊中,產(chǎn)品、開發(fā)、QA 與 AI 工具的協(xié)作更頻繁,但傳統(tǒng)規(guī)范文檔(如 PRD)因“技術門檻高、更新不及時”,導致非技術角色無法參與 AI 生成過程的監(jiān)督。 SDD 的升級邏輯:讓規(guī)范成為“跨角色通用契約”
SDD 是軟件工程在 AI 時代的“精準升級”, 軟件工程的核心框架是“過程、方法、工具”三要素,SDD 完全嵌套在這一框架內(nèi),同時針對 AI 輔助開發(fā)的痛點做了聚焦優(yōu)化,具體對應關系如下:
| 維度 | 傳統(tǒng)軟件工程實踐 | SDD 的創(chuàng)新強化 |
|---|---|---|
| 過程(Process) | 按“需求→設計→編碼→測試→維護”線性/迭代推進,規(guī)范(如 PRD、設計文檔)是“輔助參考”,代碼是最終交付核心 | 重構(gòu)為“規(guī)范→自動化執(zhí)行→驗證→同步”閉環(huán):規(guī)范從“輔助文檔”升級為“唯一事實源”,所有環(huán)節(jié)(代碼生成、測試、部署)均以規(guī)范為依據(jù),且通過 AI 工具實現(xiàn)規(guī)范與實現(xiàn)的實時同步 |
| 方法(Methods) | 依賴人工編寫規(guī)范、分解任務(如瀑布模型的文檔驅(qū)動、敏捷的用戶故事驅(qū)動),存在“規(guī)范與代碼脫節(jié)”風險 | 引入“結(jié)構(gòu)化規(guī)范+AI 自動化”方法:將自然語言需求轉(zhuǎn)化為可驗證、可執(zhí)行的結(jié)構(gòu)化規(guī)范,再通過 AI 自動拆解為技術計劃、任務清單,減少人工傳遞誤差 |
| 工具(Tools) | 工具聚焦“代碼生產(chǎn)”(如 IDE、測試框架、CI/CD 工具),規(guī)范相關工具多為靜態(tài)文檔工具(如 Confluence) | 工具鏈圍繞“規(guī)范生命周期”構(gòu)建:新增規(guī)范生成、規(guī)范校驗、規(guī)范同步等工具,讓規(guī)范從“靜態(tài)文檔”變?yōu)椤皠討B(tài)工程對象” |
SDD沒有脫離軟件工程的核心框架,而是強化了“規(guī)范”在軟件工程三要素(過程、方法、工具)中的核心地位;
- 它針對性解決了 AI 編程帶來的“可控性、同步性、協(xié)作性”新痛點,讓軟件工程方法論能適配“AI+人類”協(xié)同開發(fā)的新場景;
- 它的本質(zhì)是“用 AI 工具賦能規(guī)范管理”,讓軟件工程從“人工驅(qū)動的系統(tǒng)化”升級為“AI 輔助的自動化系統(tǒng)化”,是軟件工程發(fā)展的必然階段,而非顛覆式革命
2.2 觀點和推論
觀點:SDD的方法的思考對象是Agent,其過程是規(guī)范→自動化執(zhí)行→驗證→同步,遵循結(jié)構(gòu)化規(guī)范+AI 自動化的方法,并且有工具支撐,在開發(fā)領域是openspec(spec kit等)+ AI IDE?;诖擞^點
推論1:如果只滿足過程、方法,而沒有工具支撐的,是泛SDD。泛SDD和狹義SDD最終產(chǎn)生的效果可能差距很大。
推論2:工具Agent隱含的要求是,底層的大模型需要具備,完整串接SDD過程的提示詞鏈(準確生成spec規(guī)格),精準調(diào)用工具的能力。能否順暢使用SDD成為大模型能力的評價標準。
推論3:SDD的思考核心是Agent,在軟件開發(fā)的各個環(huán)節(jié),都運用SDD的規(guī)范→自動化執(zhí)行→驗證→同步來思考問題。例如在代碼開發(fā)這個環(huán)節(jié),圍繞SDD自動化執(zhí)行去改進以及增加各種技巧。
- 技巧1(自動調(diào)用工具執(zhí)行)生成SPEC知識不足,則提供方案MCP工具,讓大模型主動調(diào)用工具獲取充足知識,減少人手工干預。
- 技巧2(對抗驗證)編寫代碼和單元測試,讓openspec按規(guī)則生成任務,進行代碼和測試的對抗,生成正確性較高的代碼。
- 技巧3(對抗驗證)將AI ADE中的編譯環(huán)境放入spec,讓openspec按規(guī)則生成任務,進行編譯對抗,生成編譯通過的前后端代碼。
3 openspec是什么
openspec是什么:OpenSpec 是一款專為 AI 編碼助手設計的開源免費的規(guī)范驅(qū)動開發(fā)工具,本質(zhì)為命令行工具,核心作用是讓開發(fā)者在 AI 編寫代碼前,與 AI 就需求規(guī)范達成明確共識,以此減少返工、讓 AI 編程更可控,同時適配多數(shù)主流開發(fā)場景與 AI 編程工具。
openspec有三層:
- 命令層:操作openspec init,會生成三個標準命令(按執(zhí)行順序):openspec-proposal、openspec-apply、openspec-archive
- 規(guī)則層:同步生成agent.md,這是openspec對agent如何工作制定的規(guī)格文檔;project.md,官方術語consitution(憲法),本質(zhì)是一類特殊的規(guī)則,全局規(guī)則,所有的通過命令執(zhí)行的AI生成都必須遵守這個文件的規(guī)則。
- 驅(qū)動層:也就是命令執(zhí)行的時候,工作流的驅(qū)動過程,例如openspec-proposal(生成spec,包括proposal.md、task.md,并通過openspec validate自動校驗),openspec-apply(自動執(zhí)行task.md)、openspec-archive(歸檔+同步)
工具和知識角度看openspec
- 工具角度:openspec對于不同的工具(對于cursor等各種AI IDE)的命令層和規(guī)則層,都做了適配,可參見openspec init的選擇工具過程。驅(qū)動層是openspec的核心,不管對于什么工具,永遠不變。
- 知識角度:知識是openspec的產(chǎn)物,對于命令和規(guī)則md文件,在代碼庫中會不斷累積沉淀,屬于固定量;對于驅(qū)動層產(chǎn)生的md(openspec/change下的md),是隨某個具體的需求開發(fā)創(chuàng)刪改,是變化量。
4 openspecx是什么
openspec的問題:
- 對于需求的開發(fā),特別是同類需求,其spec最終都歸檔在opensec/archive中,這些spec都與具體的需求甚至代碼相關,是作為變化量處理。而我認為同類需求的spec,應該抽取公共要素,沉淀為規(guī)則。
- 如果要這樣做,就需要手工編寫命令以及規(guī)則,并且去編寫并調(diào)試prompt鏈的串接,額外增加了知識負擔。
為了解決這樣的問題,我在openspec的基礎上,嚴格遵守openspec的風格以及使用習慣,完成了openspecx。
openspecx是什么:openspecx在openspec擴展了工具元范式,是與openspec一脈相承的工具。如圖綠色部分,通過openspec自動生成范式命令和規(guī)則,從使用方式上和openspec保持完全一致。

操作過程:openspecx是要和openspec配套使用的,其中技巧見2.2章節(jié)
步驟1(openspec原生支持):使用openspec init創(chuàng)建命令(.cursor/commands目錄,openspec-proposal.md、openspec-apply.md、openspec-archive.md) + openspec目錄憲法(project.md) -> 使用openspec示意提示詞大模型執(zhí)行補充project.md(openspec目錄)規(guī)則 -> 人工評審補全
步驟2(openspecx擴展):使用openspecx init {模塊目錄} {規(guī)則名} 創(chuàng)建命令 openspec-{規(guī)則名}-proposal.md + 模塊目錄/{規(guī)則名}-RULE.md -> 使用openspecx示意提示詞大模型執(zhí)行執(zhí)行分析模塊代碼,根據(jù)命令意圖補全模塊目錄/{規(guī)則名}-RULE.md -> 人工評審并補全增加該功能關聯(lián)模塊的修改點
步驟3: 執(zhí)行命令 openspec-{規(guī)則名}-proposal.md,openspec-apply.md 實現(xiàn)第1個范式需求 -> 反復迭代并調(diào)整 模塊目錄/{規(guī)則名}-RULE.md(動作包括模塊規(guī)則、關系模塊的修改規(guī)則)
步驟4:執(zhí)行命令 openspec-{規(guī)則名}-proposal.md,openspec-apply.md 實現(xiàn)同類需求
openspecx命令
Usage: openspecx [options] [command]
OpenSpec Extensions - Module Rules Management
Options:
-V, --version output the version number
--no-color Disable color output
-h, --help display help for command
Commands:
init [options] <modulePath> <ruleName> Initialize a new module rule
validate [options] <ruleFile> Validate a RULE.md file
help [command] display help for command
5. openspecx安裝說明
注意:首先參照openspec官網(wǎng)安裝openspec,然后安裝openspecx
代碼庫地址:https://github.com/GoodMood2008/openspecx
安裝:npm install -g @goodmood2008/openspecx@latest
說明:codebasex目前只支持cursor