提示工程已死。歡迎來到規格驅動開發的時代。
在過去幾年裡,我們都沉迷於「提示工程」。我們試圖用完美的魔法咒語召喚強大的 AI,期望它能為每個問題提供完美的解決方案。但現在,宿醉正在襲來。作為開發者和架構師,我們正在醒悟到痛苦的副作用:
提示驅動 開發的宿醉
「提示工程已死。一切都是規格。」- Sean Grove,OpenAI
-
氛圍驅動開發: 我們用提示快速生成程式碼,但就像編譯後刪除原始碼一樣,我們丟棄了最關鍵的資產:意圖。這導致了架構漂移,系統慢慢偏離其預期設計。
-
不一致的系統: 一次性提示無法處理複雜的系統需求。結果是一堆脆弱、不一致的程式碼拼湊,無法保證**非功能性需求(NFRs)**如安全性、可擴展性和可觀測性。
-
溝通鴻溝: 當需求變更時,我們又回到重新設計提示,浪費無數小時為 AI「重新翻譯」人類意圖,而不是進行系統性的影響分析。
這些問題的根源在於我們要求 AI 猜測 我們想要什麼。這就是為什麼 Sean Grove 的說法如此引起共鳴。他認為我們需要將焦點從「如何提問」轉移到「如何定義」。這就是規格工程的崛起——一種新範式,看起來很像現代版的模型驅動架構(MDA)。
等等,「規格」和「模型」有什麼區別?
你可能會問,「如果這像模型驅動架構,那『規格』和『模型』有什麼區別?」
這是個完美的問題。簡單來說:我們所說的「規格」是「模型」的現代、輕量級實現。
- 傳統的「模型」(MDA): 這通常意味著遵循嚴格範式(如 UML)的重量級、抽象藍圖。它們很強大,但往往需要複雜的工具鏈,而且感覺與開發者的日常工作流程脫節。
- 現代的「規格」(規格工程): 這是一種務實的演進。它就是一個模型,但是:
- 開發者原生: 它使用純文字格式如 YAML 和 Markdown,對開發者和 Git 等版本控制系統非常友好。
- 具體且可行動: 它不是抽象的、平台無關的模型,而是針對特定、選定技術堆疊的單一事實來源,設計用於直接生成多個目標(程式碼、測試、IaC)。
所以,當我們談論「規格工程」時,我們是在 MDA 的核心理念上建構——讓模型驅動開發——但將其適應到更敏捷、以開發者為中心的框架。
規格作為活的模型:新的開發範式
在 DevAiOps 的世界中,規格不再是靜態的 Word 文件或 Confluence 頁面。它是一個可執行、可驗證、版本控制的系統模型。
軟體專業人士會很快發現,維護這個模型的品質比維護任何單一程式碼的品質更為關鍵。
為什麼模型比程式碼更重要
- 對齊的錨點: 規格是人類和 AI 之間的契約,使每個利害關係人——產 品、設計、工程,甚至法務——能夠在單一事實來源上對齊。
- 意圖的體現: 程式碼是規格的「有損壓縮」。一個優秀的模型能捕捉完整的業務邏輯、架構約束和決策歷史。
- 多目標生成: 就像原始碼編譯到不同平台一樣,一個優秀的模型可以生成:
- 後端程式碼(Go、Rust、Python)
- 前端 UI(React、Vue、Svelte)
- API 文件(OpenAPI、GraphQL Schema)
- 基礎設施即程式碼(Terraform、Pulumi)
- 測試套件(單元測試、整合測試、端到端測試)
- 使用者手冊甚至行銷文案。
這一直是夢想,但文件和程式碼之間的差距太大了。在 DevAiOps 時代,SpecAgent 是跨越這個差距的橋樑。
SpecAgent:你在系統設計中的智慧夥伴
SpecAgent 是 DevAiOps 框架的核心。它的工作是將人類在環的需求轉化為 AI 可以執行的結構化、機器可讀的模型。
它不僅僅是一個翻譯器;它是系統知識圖譜的守護者。專案的程式碼庫、過去的架構決策和 API 契約都是這個活的圖譜的一部分。
角色如何演進:PM、架構師和 SpecAgent
一個常見的問題是:「撰寫規格不是產品經理或架構師的 工作嗎?」為什麼要創建一個單獨的 SpecAgent?
這是一個關鍵點。傳統上,這個責任在 PM 和架構師之間模糊,這正是為什麼他們的輸出(PRD、架構圖)經常漂移分離。SpecAgent 透過充當協作綜合者來解決這個問題。
以下是職責的分離方式:
| 角色 | 核心職責 | 焦點 | 關鍵交付物 |
|---|---|---|---|
| 產品經理(PM) | 定義**「為什麼」** | 使用者、市場、業務價值 | 產品需求文件(PRD)、使用者故事、驗收標準 |
| 架構師 | 定義**「如何」** | 技術可行性、系統健康、NFR | 架構藍圖、技術堆疊、系統約束 |
| SpecAgent | 綜合**「什麼」** | 將「為什麼」和「如何」融合成單一、明確、可執行的模型 | 結構化、版本控制的規格 |
為什麼 SpecAgent 需要獨立?
- 關注點分離: PM 專注於「建構正確的東西」。架構師專注於「正確地建構東西」。
SpecAgent專注於精確記錄這些決策,充當中立、嚴謹的綜合者。 - 自動化和嚴謹性:
SpecAgent自動化了將人類意圖轉化為機器可讀格式的繁瑣、易錯的工作。這使人類能夠專注於高層策略。 - 衝突解決: 當 PM 的「為什麼」與架構師的「如何」衝突時,
SpecAgent可以標記不一致,強制進行深思熟慮、資料驅動的決策,而不是讓衝突隱藏在模糊的文件中。
簡而言之,SpecAgent 不會取代 PM 或架構師。它是一個強大的協作工具,確保他們的集體智慧完美地捕捉在可執行的開發藍圖中。
SpecAgent 的核心能力
| 能力 | 描述 | 對開發的意義 |
|---|---|---|
| 需求解析 | 從票據、會議記錄和對話中讀取非結構化需求。 | 將模糊的需求映射到現有系統模型以識別差距。 |
| 模型擴展 | 使用 LLM 解構需求並更新系統模型。 | 就像演進一種領域特定語言(DSL)來描述你的系統。 |
| 規格生成 | 自動生成結構化規格,包括使用者故事、AC 和 NFR。 | 確保每個規格都遵循總體架構原則。 |
| 任務分解 | 將規格分解為可執行的開發任務和序列圖。 | 不僅生成功能任務,還生成重構和技術債任務。 |
| 影響分析 | 當規格變更時,自動識別對程式碼、文件和測試的影響。 | 這創造了一個真正的「活架構」,文件和實現永不漂移。 |
