openspecx工具-使用SDD開發(fā)同類需求

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

操作過程: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.mdopenspec-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

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容