上一次,我們停在一個看似合理的結論:
AI 與 codebase 之間,需要一個持續運作的 Governance Layer。
這一層的存在,是為了讓架構不再只是一份文件,而是能在開發過程中持續發生作用。這個方向沒有錯。
但這裡其實有一個被忽略的前提:
如果 governance 只是另一組規則,那它和 ARCHITECTURE.md 並沒有本質差異。
很多團隊的做法,是把規則轉成結構化資料,搭配 validator,最後再把檢查流程接進 CI。
整體流程變得更完整,也更「像一個系統」。
問題在於,這種做法並沒有改變決策的時序。
AI 仍然先產生結果,而規則是在之後才被應用。
換句話說,code 一旦生成,就已經變成事實,後面的所有檢查,都只是對既成結果的評價。
這會導致一個結構性的偏差:
規則的角色,從限制條件,退化成建議。
決定權在哪裡,架構就在哪裡
當規則與生成結果衝突時,真正重要的不是規則寫得多完整,而是誰擁有最後決定權。
如果決定權在生成端,那麼任何架構約束,都只是在事後嘗試修補。
這種模式下,違規不會消失,只會被延後。
要改變這件事,必須先改變一個基本假設:
code 不應該在一開始就被視為最終結果。
它應該只是候選解。
這會讓流程產生一個關鍵差異:
生成與採用之間,出現了一個必須經過的決策點。
只有在這個決策點之後,code 才真正「存在」。
從驗證系統到決策系統
這裡的差異,看起來像是語意上的轉換,但實際上影響的是整個系統的行為。
驗證系統的角色,是在結果產生之後進行判斷。
決策系統的角色,是決定結果是否可以被採用。
前者無法阻止錯誤進入系統,只能標記錯誤。
後者則有能力讓某些結果根本不會出現。
如果一個 governance system 無法拒絕結果,它仍然屬於驗證,而不是治理。
問題從這裡才開始
當規則具備否決權,問題並沒有被解決,反而被放大。
因為這會引入另一個更難處理的衝突:
系統的正確性,開始與開發速度產生直接對立。
一個嚴格的 decision system,可以有效防止架構被破壞。
但同時,它也會阻止某些「其實是正確的」改動進入系統。
這種誤判(false reject),會帶來非常具體的成本:
- 開發流程被中斷
- 上下文被打斷
- 工程師開始對系統失去信任
當這些成本累積到一定程度,行為會開始改變。
當系統開始被繞過
在一個完全理性的模型裡,規則應該被遵守。
但在真實的開發環境中,當規則影響效率時,人會開始尋找替代路徑。
一開始,可能只是為了處理緊急問題。
之後,會變成習慣。
最後,變成預設。
這個過程通常不會被記錄,也不會被正式承認。
但一旦發生,governance system 仍然存在,只是已經失去作用。
一個無法同時滿足的條件
這裡會出現一個無法輕易解開的矛盾:
- 如果 governance 不夠嚴格,它無法保護架構
- 如果 governance 太嚴格,它會被繞過
這兩件事,很難同時成立。
也因此,問題的本質開始改變。
從「如何避免 AI 破壞架構」,變成:
如何讓一個有否決權的系統,仍然能被持續使用。
沒有結論的結尾
當規則只能被閱讀時,它不具備約束力。
當規則開始能否決結果時,它會影響人的行為。
而一旦進入這個階段,問題就不再只是技術問題。
因為系統不只是對 AI 施加限制,同時也在限制人。
至於這樣的系統,應該如何被設計,才能在不被關閉的前提下持續運作,
目前沒有一個可以直接套用的答案。
但可以確定的是:
👉 如果這個問題沒有被處理,再完整的 governance,也只會停留在文件層。












