2026年6月18日 星期四

[AI 影響] AI程式碼審查失效危機

 [AI 影響] AI程式碼審查失效危機

摘要 : AI大幅提升產碼速度,卻讓人類審查跟不上,傳統Code Review正失效,團隊需改用分層與證據驅動審查。




內容:

這裡主要在談一個越來越明顯的現象:團隊裡使用 AI 寫程式的人愈來愈多,產出速度暴增,但人類審查程式碼的能力並沒有同步提升。結果就是,面對動輒幾百上千行的 diff,很多人其實已經無法真正看完,只能草草 approve。這不是工程師變懶,而是既有的審查機制正在被 AI 的產出速度壓垮。


過去 50 年,程式碼審查之所以能有效運作,關鍵原因其實很簡單:人類寫程式很慢。因為寫得慢,審查者才有時間在合理成本下讀完程式碼,順便找 bug、討論架構、傳承知識,形成健康的協作閉環。但現在不同了,只要對 AI 工具下個指令,幾秒鐘就能生成上千行程式碼。機器產出的速度翻了好幾十倍甚至上百倍,但人類閱讀與理解程式碼的速度並沒有改變,傳統 PR 流程因此開始失靈。


幾組工業界數據來說明問題的嚴重性。Ferros AI 追蹤 4000 個團隊、22000 多名開發者後發現,深度採用 AI 之後,程式碼變動率暴增 861%,而審查時間也增加了 441.5%。更驚人的是,有 31.3% 的 PR 幾乎沒有經過任何人類審查,就直接合進主分支。結果缺陷率從 9% 升到 54%,正式環境事故率提高了 2.4 倍。GitClear 的分析也指出,雖然 AI 讓程式碼量增加到原本的四倍,但實際業務價值只增加 12%。也就是說,團隊付出了大量閱讀與維護成本,換來的卻不一定是對等的價值提升。


為什麼 AI 生成的程式碼常常比人類初學者的程式碼還難審。第一個原因是「意圖與推理過程的消失」。人類寫程式時,背後通常有設計理由與取捨脈絡,審查時還能口頭補充;但 AI 在產出最終程式碼後,這些思考過程往往不會完整保留下來,審查者只能從結果反推它的意圖。第二個原因是 AI 擅長局部最佳化,卻缺乏完整的業務上下文與組織默契。它可能在技術上可行,但未必符合系統長期演進方向。第三個原因是 AI 很會寫「看似合理但實際空洞」的程式碼,包含過度包裝、冗長防禦性設計與華麗但低價值的實作,讓審查者需要花更多力氣辨識真正重要的邏輯。


面對這種情況,認為不能再用單一標準看待所有團隊,而要根據系統的「爆炸半徑」來決定審查策略。也就是說,這段程式碼一旦出錯,影響有多大?這套系統要維護多久?是否涉及高風險業務?這些因素才是決定審查方式的核心。


針對不同團隊型態,內容整理出三種策略。第一種是單人開發者或原型驗證專案。這類場景下,程式碼審查的知識共享價值不高,應把重心放在自動化測試上,不要把時間浪費在形式化審查或風格細節上。但前提是測試要足夠扎實,否則等於只是延後爆雷。


第二種是多數人所在的成長型團隊。這類團隊已有真實使用者,也需要多人共同維護程式碼,因此要採取「分層審查」。機器負責重複性高的髒活,例如靜態分析、安全掃描、CI/CD 自動檢查;人類則聚焦在真正高價值的部分,包括核心業務邏輯是否正確、架構是否被帶偏、知識是否有同步傳遞。高級工程師不應該把時間花在逐行檢查 AI 生成的小細節,而應該去判斷那些程式碼是否真的有存在必要。


第三種是企業級重型系統,例如核心交易鏈路、金融支付或高風險基礎設施。這類系統不能只收程式碼,必須要求「證據驅動審查」。也就是說,若使用 AI 產生 PR,就應附上決策日誌,例如 decision log.md,把推理脈絡、備選方案、取捨原因一起交出來。若只有程式碼、沒有說明,就不應該直接 merge。因為在高風險系統中,光看結果遠遠不夠,審查者還必須理解背後決策。


除了調整審查策略,內容還提出一個很關鍵的實作方向:用 AI 來審查 AI,也就是所謂的 loop engineering。既然機器生成程式碼的速度太快,那就應該在 CI 流程中加入專門的 review agent,讓它先根據團隊的架構規範、設計原則與常見風險,自動檢查 PR 是否違規、是否引入壞味道、是否偏離既定架構。這樣一來,人類工程師在正式看到 PR 之前,已經有一層機器初審幫忙過濾,能有效減少那些表面工整、實際價值不高的 AI 垃圾程式碼。


最後,內容點出一個值得反思的結論。很多人擔心 AI 把寫程式的門檻拉低,會讓程式設計師失業;但真正有價值的能力,從來不是「把程式碼敲進電腦」本身,而是如何判斷一段程式碼能不能被信任、是否符合業務需求、會不會傷害系統長期穩定性。當 AI 讓產碼變得廉價,人類工程師真正重要的角色,反而會更集中在判斷、取捨、審查與系統思維上。

沒有留言:

張貼留言