為何大多數團隊在幾週後放棄 AI 輔助寫碼
大多數嘗試 AI 輔助寫碼的團隊,走的是同一條軌跡。
他們一開始充滿熱情。模型在幾分鐘內生成一項功能,他們交付出去。QA 捕捉到一個錯誤,於是他們交付一個修復。QA 又捕捉到另一個錯誤,這次是在一個本該毫無關聯的 module 裡。那個修復牽涉了十四個檔案,然後 QA 又發現了另外三個問題。
團隊開始感到恐懼,斷定這個模型還不能用於生產環境,於是回歸手寫程式碼。AI 淪為自動補全玩具。
這是 AI 輔助寫碼在生產環境中最常見的結局。不是更快的交付速度,不是十倍效率的工程師,而是一場短暫的實驗,最終以撤退收場。
模型不是問題所在。問題在於模型被要求往什麼樣的系統裡生成程式碼。
生產環境的 codebase 在 AI 出現之前就已經脆弱不堪
沒有防護機制的生產環境 codebase 向來一團混亂。沒有單元測試,沒有架構 enforcement,沒有 module boundary,只有檔案之間互相 import、沒有任何一個人類能完全理解的方式,全靠樂觀心態勉強維繫。
在 AI 出現之前,這團混亂以人類的速度增長。工程師慢慢寫程式碼,錯誤慢慢被引入,QA 慢慢捕捉到它們,系統緩慢地劣化。你有時間察覺腐化的跡象。
代價仍然是真實的。脆弱的 codebase 消耗人才,因為工程師整天在義大利麵程式碼中掙扎,而不是解決真正的問題。士氣下降,流動率上升,最優秀的工程師最先離開。
但損害的上限被人類的速度所限制。
為何 AI 寫碼速度會摧毀沒有防護的系統
AI 改變了一個變數:速度。模型寫程式碼的速度是人類的十倍。它在幾分鐘內生成功能、endpoint 和遷移腳本。codebase 以機器的速度膨脹。
但它長進去的那個 codebase,仍是同一個脆弱、沒有防護的系統。同樣的隱性依賴,同樣缺乏 boundary,同樣無法擴展的手動 QA 流程。
於是模式加速運轉。更多程式碼,更多耦合,更多錯誤,更多 QA 失敗,更多手動修復,更多恐懼。直到團隊放棄,把 AI 貼上「不適合我們的使用場景」的標籤。
QA 失敗如何摧毀對 AI 生成程式碼的信任
當 AI 生成的程式碼在 QA 階段失敗時,工程師不會讓模型去修復它,而是親手修復。
他們早已學會不能信任模型。第一個錯誤出現在功能本身,第二個錯誤出現在模型間接觸及的另一個 module,第三個錯誤是模型在修復第二個錯誤時引入的回歸錯誤。到第四次 QA 失敗時,工程師已經在進行手動除錯。
這才是真正的瓶頸。不是生成速度,而是信任。團隊無法利用 AI 的速度,因為他們無法信任它生成的東西;而他們無法信任它生成的東西,是因為沒有任何結構性框架來防止模型製造跨 module 的混亂。
沒有防護機制,每一次 AI 生成的變更都是一場賭博。大多數團隊不是賭徒。
為何現在防護機制比手動修復更便宜
真正發生變化的是這件事。在 AI 出現之前,撰寫全面的 contract test、設置架構 enforcement、建立 module boundary 的成本很高,需要耗費大量人力時間。團隊跳過防護機制,因為沒有那個時間。
現在,模型可以在幾分鐘內生成測試腳手架,撰寫 Semgrep 規則,產出 adapter 樣板程式碼,建立 CI 管線檢查。模型建立防護機制的速度,和它建立功能的速度一樣快。
瓶頸從「我們負擔不起防護機制」轉變為「我們不知道該先建立哪些防護機制」。
搞清楚這一點的團隊不再賭博,他們開始穩定交付。
什麼是 AI 寫碼的防護機制?
AI 寫碼的防護機制是讓生成的程式碼維持在邊界內的結構性規則。它們不是 lint 規則或風格指南,而是架構層級的 contract:明確的 module interface、透過 composition root 進行依賴連接、用於外部服務的 adapter 層,以及在 CI 中 enforce 任何違反這些 boundary 程式碼的機制。
沒有防護機制,AI 模型對自己可以觸及的範圍毫無概念。它跨 module import,在商業邏輯中直接實例化依賴,將供應商 SDK 深埋在領域程式碼中。每一次生成過程都變成審查工程師的尋寶遊戲。有了防護機制,模型在寫下任何一行程式碼之前就知道系統的形狀,而編譯器或 CI 管線會在違規程式碼到達 QA 之前就拒絕它。
讓 AI 程式碼值得信賴的五項防護機制
如果你希望 AI 生成的程式碼能穩定通過 QA,以下這些不是選配,而是信任層:
- 每個 module 都有明確的 interface,沒有例外。
- 每個依賴都透過 composition root 進行連接。商業邏輯中不允許直接實例化。
- 每個外部服務都包裹在應用程式自行擁有的 adapter 中。領域程式碼中不出現供應商 SDK。
- 每個 boundary 都在 CI 中被 enforce。警告不算 enforcement。
- 每個 contract 都有一個驗證行為而不僅僅是型別簽章的測試。
這些規則不是建議,而是決定一個 codebase 能否讓 AI 生成的變更維持在局部範圍、還是演變成尋寶遊戲的分水嶺。
當 AI 生成的程式碼跨越了 boundary,沒有人工審查者能夠在規模上捕捉到。唯一可擴展的防禦,是讓違規行為根本無法被合併。
Autotomy 對 AI 輔助寫碼在生產環境中的意義
Autotomy 的核心運作原理是:建構出能夠在捨棄一個故障部件時、整個有機體不會死亡的系統。
在實務上,這意味著一個 module 中的錯誤可以在不需要理解整個系統的情況下被診斷出來。一個整合環節的故障指向單一的 boundary。一個回歸錯誤被隔離在發生變更的那個接觸面上。
Autotomy 不承諾零錯誤。模型會產生幻覺,邊界情況會躲藏,整合介面會表現出訓練資料未曾捕捉到的行為。一定會有某些錯誤通過。
但 Autotomy 消除了代價高昂的錯誤。那些代價高昂的錯誤不是單一 module 內部的邏輯錯誤,而是因為沒有人 enforce module 之間可以或不可以互相觸及、因而跨越 boundary 擴散的故障。它們是結構性疏忽所創造的錯誤,而不是邏輯不正確所造成的錯誤。
當你消除了接觸面積,你就防止了讓團隊對 AI 失去信任的那一類錯誤。一個有邊界的故障,是模型可以修復的東西;一個分散式的故障,是模型會讓它變得更糟的東西。
信任測試:你的團隊能自信地用 AI 交付程式碼嗎?
衡量一個生產系統的標準不是它的缺陷數量,而是團隊是否足夠信任這個系統,以至於願意繼續使用 AI。
一個有嚴格 boundary 的系統可以安全地吸收 AI 生成的程式碼。當 auth adapter 出問題時,你就修復 auth adapter。模型可以重新生成它,因為 boundary 清晰、contract 明確。QA 通過,團隊再次交付。
一個沒有 boundary 的系統做不到。當某個東西出問題時,故障分散在隱性依賴之間。模型無法修復它,因為它無法對一個沒有結構的系統進行推理。QA 失敗,工程師手動修復,信任侵蝕殆盡。
這就是測試。不是看 AI 能不能寫程式碼,而是看 AI 能不能寫出團隊信任到願意交付的程式碼。
抉擇:功能速度還是結構安全
使用 AI 寫碼工具的團隊面臨一個二元選擇。
他們可以利用速度在同一個脆弱系統中生成更多功能。更多程式碼,更多耦合,更多 QA 失敗。直到團隊放棄、回到人類的速度。
或者他們可以先用速度建立起防護機制。嚴格的 boundary,全面的 contract,deterministic 的 CI enforcement。然後讓 AI 在一個使違規行為不可能發生的系統內生成功能。
顯而易見的替代方案是增加 QA 人力,或花更多時間做提示詞工程。這些在邊際上有些幫助,但它們無法解決結構性問題。手動 QA 是線性擴展,而 AI 輸出是指數級增長。更好的提示詞降低了 module 內部的錯誤率,但它們無法阻止模型跨越一個它不知道存在的 boundary。唯一可擴展的防禦,是讓違規行為根本無法被合併。
第一條路在 QA 把東西退回來之前感覺像在進步,第二條路只有第一週看起來像額外負擔。
差別在於團隊在第三個月是否還信任 AI。
如果你想要一個已經內建這些防護機制的、可直接投入生產環境的基礎,請從 Autotomy Expo 入門套件 開始。