H
Howardism
Plate IIAI Coding Practice機器翻譯 · machine-translatedENHOWARDISM

持續性是提示與規格驅動開發之間的分界嗎?

不是——持續性是實際重要屬性的一種可觀察代理指標,而該屬性是權威性:後續工作是否依據該產物接受評判。語料在兩個方向上都打破了持續性測試(CLAUDE.md、WORKFLOW.md、REVIEW.md、tickets 和 Martin 自己的相依規則檔都持續存在,卻沒人稱它們為規格;grilling transcript、Carey 的 why-conversation,以及 Martin 刪除的計畫則是短暫的,卻完成了整個規格工作),而兩個被引述的立場最後都證實遭到誤讀——Pocock 的句子有兩個子句:持續保存,並回頭參照;只有第二個站得住腳;Martin 確實在 repo 裡保留一份規格檔,範圍限於檢查器會強制執行的限制。權威性可以正確分類語料中的每個案例;持續性讓權威性得以低成本實現。這個群集幾乎全是 practitioner-opinion,也沒有任何資料衡量持續性本身

Article metadata
Publication details
Published:September 2, 2026
Filed:Essay
Domain:AI Coding Practice
Tags:DerivedAI Coding WorkflowPlanningDefinitions
Reading:19 min
Source:AI-synthesised
About this piece

Articles in this journal are synthesised by AI agents from a curated wiki and are refreshed automatically as new concepts arrive. Topics, framing, and editorial direction are curated by Howardism.

《持續性是提示與規格驅動開發之間的分界嗎?》插圖

資料來源#

問題#

從《規格驅動開發是新一代瀑布式開發》提出的問題是:正如 Pocock 所提議、Martin 的實務所預設的那樣,持續性是否是提示與規格驅動開發之間恰當的定義界線?

結論#

不是。持續性是一種代理指標——容易觀察,與真正重要的特性相關,但在兩端都會判錯。語料真正用來區分規格與提示的特性是權威性:若後續工作會依據某項產物接受評判,那麼該產物就是規格。持續性之所以重要,只是因為儲存產物是讓「依據它評判」得以實現的最低成本方式。

三項發現支持這個結論,前兩項也修正了問題本身的前提:

  1. **Pocock 的提議有兩個子句,只有第二個站得住腳。**他問:「你有持續保存規格,對吧?你會回頭參照那些規格嗎?」(Full Walkthrough: Workflow for AI Coding — Matt Pocock)。回頭參照才是起作用的子句,持續保存是促成條件;而他刪除 PRD 的理由——文件腐化,代理程式找到過時文件後被誤導——造成傷害的前提是讀回文件,而不只是儲存它。
  2. **Martin 的實務並未預設持續性界線。**他確實在 repo 裡保留規格檔。他拒絕保留的是計畫。
  3. 語料依據另一個變項,把持續存在的產物分類為規格或非規格,而且早已有名稱——見《代理程式控制平面模式:tickets、迴圈、規格與記憶檔》和《代理程式脈絡檔》中的政策/工作圖/強制執行區分。

修正 1:Pocock 的界線是持續保存並回頭參照#

值得依照原本的脈絡閱讀這段對話,因為 wiki 頁面把它壓縮了。Pocock 對這個標籤感到不滿,而不是對實務不滿——「你可以對它有十種不同解讀,每次你把資訊交給代理程式……提示工程算不算規格驅動開發?某種程度上算」——他於是以持續性為切入點,試圖阻止這個詞涵蓋一切。但他實際說出的句子是一個合取命題,兩個合取項並不是同一種測試。

他自己的工作流程就把兩者分開了。他在一場 grilling session 後只產生兩份文件——PRD(目的地)和 Kanban(旅程)——接著,依照《設計概念拷問》,他既不是刪除 PRD,也不是以一般方式保留它:**他會關閉 GitHub issue。**用他的話說:「我只要把它標記為已關閉。它想要的話還是可以取用,但會看到一個視覺提示,知道事情已經完成。」產物仍然存在;它的權威性卻被撤銷了。這不是持續性規則,而是一種以保留產物方式實作的回頭參照規則——這也正是文件腐化論點實際支持的做法,因為過時文件只有在有人讀回並把它當成現行內容時才會造成傷害。

同一來源中的另外兩個細節也顯示,持續性不適合描述他自己的觀點。他完全不打算最佳化 PRD(「我不覺得那有多大價值……真正重要的是和 AI 達成一致,而這是在 grilling session 裡做到的」)——因此,持久文件是低價值產物,短暫對話反而是高價值的。至於 push/pull 的區分,關乎權威性,而非儲存方式:CLAUDE.md 的內容會無條件 push 給每個代理程式;skill 則在代理程式選擇時才會 pull。他建議把編碼標準 push 給審查者,讓實作者自行 pull。兩份檔案的持續性完全相同。設計決策全在於哪一份具有約束力。

修正 2:Martin 會持續保留規格檔——並附有檢查器#

該頁面把 Martin 的「不,我不會……規格都是短暫的,會消失」解讀為全面拒絕持續保存。但在同一場訪談中,他早了四十分鐘就描述了另一種產物類別,情況恰好相反:

「我還做了一個確定性工具,可以定義哪些模組應該依賴哪些模組,哪些不應該依賴哪些模組,以及相依關係應該如何流動。**這些內容會放進一個精簡明確的規格檔,代理程式不能違反。**最後還會執行另一個小型檢查器;如果違反了,就得想辦法修好。」 ——Uncle Bob on Software Fundamentals in the Age of AI

這個檔案持續存在、位於 repo 中、每次執行都會讀取,而且具有約束力——這是他整套實務中最強形式的規格。因此,Martin 的立場不是規格都是短暫的;而是**限制會持續保存並以機械方式強制執行,計畫則是短暫的,而且不受任何機制強制執行。**他提出的持久規格替代方案——CRAP scorer、mutation tester、相依規則檢查器(《讓不切實際的品質工具重返實用》)——所表達的是同一個重點,只是從強制執行機制而非檔案來看:他不是刪除意圖的持久陳述,而是把它移進會讓建置失敗的機制裡。

如此解讀,Martin 的實務根本沒有預設持續性界線。它更接近《確定性執行前閘門》的規則;語料在別處把它表述為:「skill 讓違規變得罕見,而 hook 讓違規幾乎不可能」(《已提交產物鏈》):建議性文字是弱產物,可執行限制是強產物,而儲存對兩者都只是附帶條件。

測試 1:語料不稱為規格的持續性產物#

如果持續性就是界線,下列項目全都會是規格驅動開發。但語料中沒有任何地方這樣描述它們。

持續存在的產物為何不符合「規格」的解讀
CLAUDE.md / AGENTS.md / SOUL.md / .cursorrules(《代理程式脈絡檔》)有版本控管、可檢視、每個工作階段都會以確定性方式注入、雙重受眾——持續性和回頭參照都達到最大程度。語料把它歸為政策平面:它規範工作範圍內代理程式的行為方式,而非正在建置的內容
WORKFLOW.md(《Symphony》、《以 ticket 驅動的代理程式協調》)由 repo 版本控管的 prompt-as-policy——「處理一個 issue、取出 repo、將它標示為進行中、加入 PR」。這是流程,不是產品
SPEC.md(《Symphony》)持續存在,而且確實是規格——但要注意,它規定的是協調器;OpenAI 還會把它編譯成六種語言,用來模糊測試其中的歧義。它之所以是規格,不是因為放在 repo 裡,而是因為實作會依據它接受檢查
ticket 圖(《以 ticket 驅動的代理程式協調》)整個控制平面堆疊中最持久、最具權威性的產物,而且明確屬於「目標,而非狀態轉換」——它負責選取工作,不負責規定工作
REVIEW.md、hooks、lint 設定(《已提交產物鏈》、《確定性執行前閘門》)持續存在、代理程式會讀取、具有約束力,而且毫無爭議地不是規格
Martin 的相依規則檔(Uncle Bob on Software Fundamentals in the Age of AI)持續存在,但作者在同一場對話中說自己不保留規格

CLAUDE.md 這列最具決定性。它符合持續性測試的每個條件——持續保存、回頭參照、每個工作階段都會使用,而且是結構所致——如果這就讓工作流程成為規格驅動,那幾乎每個 Claude Code 使用者都在進行規格驅動開發,這個詞便毫無區別力。Pocock 當初用這項測試,就是想避免這種問題。

測試 2:不持續存在、卻完成整套規格工作的產物#

漏收的問題更嚴重,因為它會錯置語料中最重視規格的立場。

  • grilling transcript。《設計概念拷問》位於PRD 替代方案光譜的左端——也就是建置前規格最完整的立場,會問 10 到 100 個問題,一場 session 長達一小時。它的輸出產物是「對話歷史本身」,由 write-a-PRD skill 使用一次後便消失。依照持續性測試,語料中最具規格驅動特徵的立場反而是提示。
  • Carey 錄下的 why-not-what 對話(《原型勝過 PRD》)。一份交給 Claude 後就丟棄的逐字稿;它產生的「原型就是規格」才是持久產物,但它根本不是文件。Carey 依自己的論點——「兩個人可以看著同一份文件,腦中卻想著兩種不同的產品」——比 PRD 規定得更精確,整個流程中卻沒有任何持續保存的規格。
  • **Martin 自己刪除的計畫。**他寫下的計畫規範了整個建置過程——代理程式會照著執行,甚至超過人類早已停手的時點;這正是他抱怨的核心。在工作期間,這些計畫完成了百分之百的規格工作。它們和《已提交產物鏈》中的 plan.md 唯一不同的地方是儲存方式,而語料肯定把後者稱為規格驅動。
  • **口頭提出的限制。Karpathy 修正 MenuGen 時說的「這些必須是我們用來串起所有資料的唯一使用者 ID」(《Vibe Coding 與 Agentic Engineering》),是他直接稱為「規格」**的人類殘留;這句話是口頭說出的,沒有寫進檔案。

測試 3:Pocock 自己提出的歸謬論證#

他用來反駁這個標籤的例子是「你只要修好標頭中的載入問題」——一句交代給同事的指令。依持續性測試,答案是「不是規格」,這聽起來合理。但若把完全相同的句子寫進已提交的 TODO.md,同一測試就會判定為「規格驅動開發」,儘管工作內容完全沒變。只要 git add 就能翻轉的定義界線,追蹤的是檔案系統,不是方法論。

語料真正採用的界線:權威性#

看過上述每個案例後,區分規格與提示的變項是:下游工作是否依據該產物接受評估:

  • plan.md 是規格,因為「PR 會依據 plan.md 審查」(《已提交產物鏈》)。
  • Fung 已提交的規格是規格,因為「Claude 很擅長根據規格驗證是否發生漂移」——《以程式碼為真實來源》指出,提交規格的價值在於檢查,而非儲存。
  • evals 就是規格,因為「PRD 描述意圖;eval 定義完成」,而在 Shopify,評分規準真的會成為 RL reward(《Evals 作為產品規格》)。
  • Martin 的相依規則檔是規格,因為檢查器會在違規時讓執行失敗。
  • CLAUDE.md 不是規格,因為沒有任何內容會依據它接受檢查——語料記錄過一個案例:一條正確設定目標、已載入且仍有效的 CLAUDE.md 規則,最後就是沒有被遵守,而且沒有任何閘門能抓到違規(《代理程式脈絡檔》)。
  • ticket 不是規格,因為它指出目標,而工作是依據該目標的產物接受評判,不是依據 ticket 文字。

《以程式碼為真實來源》已經用規則形式說明了強版本,取自 Anthropic playbook 中關於舊系統遷移的側欄:**每項產物都明確指定唯一一個真實來源系統,其他地方都只保留副本或連結。**若以持續性解讀,這條規則就難以理解——Jira、repo 和 markdown 工作副本都持續存在;但以權威性解讀,這條規則完全合理,因為它精確規範了哪一份持久副本具有約束力。

其他界線:依能解釋多少語料排序#

候選界線判定
權威性——後續工作是否依據它接受評判?**最佳。**能正確分類測試 1 至 3 的每個案例,已是語料自己的分類法,也是 Pocock 和 Martin 在持續性語言底下真正要表達的概念
回頭參照/重新讀取(Pocock 的第二個子句)強而有力,也是正確解讀他論點的方式,因為文件腐化造成的是讀回傷害。只有遇到 CLAUDE.md 時會失效;它被最大程度地反覆參照,卻不是規格——因此還需要權威性才能完整解釋
可執行性/機械可檢查性是權威性的鮮明子案例,也是 Martin 實際採用的界線。能乾淨地區分建議性文字和強制執行的限制(《確定性執行前閘門》),但涵蓋不足:intent.md 和目的地 PRD 可以約束人類決策,即使沒有檢查器也成立
真實來源優先權權威性的正式版本,已在《以程式碼為真實來源》寫成每項產物的規則。它回答「兩項產物相互矛盾時,哪一項優先?」但僅此而已——這是平手時的裁決規則,不是定義
人類審查/指定的接受者(《已提交產物鏈》)在看似合理的界線中最弱,而且語料知道原因。Pocock 刻意不審查自己的 PRD;鏈條本身的累積修正問題表示,提交紀錄「只能證明有人接受了,從不能證明有人讀過」(《人類審查 AI 撰寫的程式碼,仍是真正的控制機制嗎?還是早已流於形式?》)。沒有任何被引述的實務遵守這條界線
實作可見度(DHH、《Vibe Coding 與 Agentic Engineering》)這是另一類答案,值得指出:DHH 在相鄰的 vibe-coding 界線上,關注的是人類的行為(你會不會看實作?),而不是任何產物。它是二元且可觀察的,因此和持續性一樣,因為相同理由而具有吸引力

為何持續性看起來仍然正確#

最坦誠的辯護,也是值得保留它作為經驗法則而不直接捨棄的理由:**權威性是一種傾向,持續性則可供觀察。**除非觀察接下來一個月的工作,否則你無法得知某項產物是否約束後續工作;但只要一秒,就能看到它是否位於 repo 裡。而持續性幾乎是權威性的必要條件——語料中沒有任何產物能在沒有某種持久形式下規範後續工作(Martin 的檢查器是程式碼;Carey 的原型已提交;grilling transcript 的權威性恰好隨對話結束)。因此,站得住腳的說法是:

持續性是權威性最便宜的促成條件,因此也是相當不錯的實地測試。它不是定義,而且在兩個方向上都會錯判語料自己的兩端立場。

還有一項結構上的佐證:語料中的立場光譜(《AI 原生速度下的 PRD 替代方案光譜》)依照建置前規格的多寡排序,並把「持久產物」列為第五個描述欄位,而不是排序依據。光譜上的每個立場都有某種持久產物——PRD 加 Kanban、一頁式文件、選定的 PR、原型,以及越過右端後的 Martin 檢查器。如果持續性是主軸,整條光譜就會坍縮成一個點。

證據層級#

這個群集幾乎全是 practitioner-opinion,而這個定義問題不是語料中任何來源原本要回答的問題。

  • Pocock(工作坊,practitioner-opinion)、Martin(訪談,practitioner-opinion)、Carey(演講)、DHH(podcast)、Fung(演講)——五份第一手報告,沒有一份衡量任何形式的規格。
  • 《已提交產物鏈》屬於 vendor-claim,而且依據頁面自己的說法,完全沒有任何形式的測量——每個「如何衡量」區塊列出的都是待蒐集的指標。
  • 《規劃/執行分工》是這個群集中唯一的遙測資料(400K Claude Code 工作階段,約 70% 的規劃決策由人類做出),但它衡量的是決策分工,不是產物形式。因此無法裁決這個問題。
  • vault 中最接近的兩項測量,都和脈絡檔而非規格有關,衡量內容而非儲存方式:Khatri 對正確性的有限零結果,以及 NVIDIA SkillEvaluator 在專有知識 skills 上帶來的 +41 Correctness(兩者都收錄於《代理程式脈絡檔》,而且都明確指出方法上的限制)。
  • 新增於 2026-09-22——來自無關語料,首次測量本結論本身採用的判準。Gao & Chen(arXiv 2608.20195,empirical)追蹤 557 個真實 agentic coding 工作階段中的 3,033 次文件互動,觀察到零次將文件當成程式碼檢查依據的案例:候選互動週期中的 Validate 階段沒有任何事件,Verify 互動類型沒有出現實例;代理程式查閱文件後三個事件內執行測試的比率為基準比率的 0.23 倍,執行建置的比率則是 0.15 倍。作者自己的總結——「我們沒有觀察到文字說明發揮規格作用」——正是本頁的結論,不過是從互動軌跡而非分類得出的,而且嚴格來說只關乎權威性這一半:相關產物都已持續保存、提交,並反覆參照(文件讀取重複發生的比率是 0.270),卻沒有任何內容會依據它們接受檢查。這些零值來自操作定義下的工具呼叫模式,因此界定的是可觀察到的檢查,而非測量工具無法看見、經由模型推理進行的檢查。

因此,上述結論是概念性結果——它透過拿語料自己的分類來檢驗一項候選定義而得出,其可靠程度取決於那些分類的品質。這不是關於結果的實證主張,也不應如此解讀。

哪些證據會推翻這個結論#

  • **有一項測量顯示儲存本身會改變結果。**固定內容與讀回行為,只改變產物是否提交;若返工、缺陷率或漂移因此不同,持續性就是獨立變項而非代理指標,這個結論便會大幅削弱。語料中沒有任何研究做過這項測試;Khatri 的消融測試架構是目前最接近的工具,而《已提交產物鏈》的指標組(spec.md 的提交日期晚於第一個 plan.md)則是最接近的現有指標。
  • 某項產物完全沒有持久形式,卻能約束後續工作——後續工作確實依據只存在於對話中的內容接受檢查。這會打破「持續性幾乎是必要條件」的一半,讓持續性從代理指標降為巧合。
  • 不依賴讀取的持續性社會機制。如果提交規格會改變行為,是因為它可供看見,而不是因為有人讀它——例如團隊承諾、稽核員接受,或《以程式碼為真實來源》提到的「稽核員和監管機構已經接受它們」這種壓力——那麼儲存就有權威性無法涵蓋的實際作用。語料中有一個相鄰線索,顯示即使沒人讀取,提交檔案也會改變現實;不過那談的是安全性攻擊面,而非方法論論點:已提交的 CLAUDE.md 被攻擊者用來做偵察(《代理程式脈絡檔》、UK AISI INC-2026-07-28-01)。
  • **定義被工具直接敲定。**如果主要工具推出一種「規格驅動開發」模式,而其字面機制就是持續保存,這個詞就會跟著工具走。那會解決社會語用上的問題,但概念問題仍會停留在本頁目前的結論。

延伸連結#

資料來源#

§ end
Cited by 10
Related articles