iT邦幫忙

2026 iThome 鐵人賽

DAY 22
0
Claude AI

用 AI Agent 重構一套無框架的 legacy PHP 系統系列 第 22

Day 22:Code Review 也交給 AI——怎麼設計審查流程避免誤判

  • 分享至 

  • xImage
  •  

前言:讓 AI 審查 AI,是不是找了個裁判自己吹哨?

「讓另一個 AI agent 來 review 剛剛那個 AI agent 寫的程式碼,這樣真的有用嗎?他們不都是同一套模型嗎?」

Day 07 提過一個具體案例:獨立的 review agent 沒有參與原本的實作過程,重新審查一次抓到了一個實作過程沒發現的架構風險。這個案例證明「獨立視角有用」,但沒有回答今天要問的問題:要怎麼設計這個審查流程,才能讓「獨立視角」真的發揮作用,而不是流於形式、變成另一個容易誤判的橡皮圖章?

今日目標

  • 理解「沒有共享上下文」是必要條件,但不是充分條件
  • 學會用明確的審查標準,取代模糊的「幫我看看有沒有問題」
  • 認識 AI review AI 解決不了什麼問題——這個機制的邊界在哪裡
  • 建立一套「發現 → 驗證」兩階段的審查流程設計

光是「換一個 agent」還不夠

如果只是把程式碼丟給另一個 agent,說一句「幫我看看有沒有問題」,得到的結果通常是一份看起來完整、其實深淺不一的清單——有些是真正的風險,有些只是風格偏好,還有一些是 review agent 憑著程式碼表面「看起來合理」就直接放行,跟原本那個 agent 犯的錯誤一模一樣,只是換了個人犯。

「沒有共享上下文」只保證這個 agent 不會被前面的假設帶著走,不保證它會用足夠嚴謹的標準去審查。 如果沒有給審查流程一個明確的標準,review agent 一樣會依賴它自己對「這段程式碼看起來合不合理」的直覺判斷——而直覺判斷正是這個系列從 Day 01 開始反覆提醒要小心的東西。

明確標準:把「幫我看看」換成具體的檢查項目

有效的審查流程,會先把「找問題」這件事拆成幾個具體、可以逐條檢查的維度,而不是丟出一個籠統的指令讓 AI 自由發揮。舉例來說:這段改動有沒有引入迴歸(跟 Day 06 的乾淨基準比對是同一件事,只是換成人工/AI 審查的角度)、這段改動有沒有踩到這個專案已知的陷阱(例如 Day 13、Day 14 講過的 DI 容器陷阱)、測試斷言是不是真的驗證了正確的事,還是只是為了讓測試變綠而放寬條件(Day 03 講過的案例)。

用一組對照來看差異:

❌ 籠統的審查指令:
「幫我看看這段程式碼有沒有問題。」
→ review agent 只能憑自己的直覺判斷「合不合理」,
  標準不明確,容易漏掉這個專案特有的已知陷阱

✅ 明確的審查標準:
「檢查這段改動:(1) 是否可能引入迴歸——
 有沒有跟 Day 06 講過的基準比對確認過;
 (2) 有沒有踩到已知的 DI 容器陷阱;
 (3) 測試斷言是不是驗證了正確的值,
 而不是用寬鬆比對迴避判斷。」
→ review agent 知道具體要對照什麼標準,
  結果可以被檢查、可以被追蹤是不是真的每一項都確認過

兩階段流程:發現不等於確認

即使有了明確標準,AI review AI 還有一個更根本的邊界:兩個 agent 都是用類似的方式在理解程式碼,它們可能會共享同一種系統性偏誤——比如都傾向信任表面邏輯合理的程式碼、都容易在「看起來測試涵蓋了」的情況下不進一步深究測試到底斷言了什麼。這不是「換一個角度審查」能自動解決的問題,因為兩個角度可能出自同一種思維習慣。

比較穩健的做法是把審查拆成兩個階段:第一階段讓 review agent 產出「可能有問題的地方」清單,第二階段針對清單裡每一項,要求提出具體的失敗情境——什麼樣的輸入、什麼樣的狀態下,這個問題會真的造成錯誤。只有能講清楚具體失敗情境的發現,才算是被驗證過的問題;講不出具體情境、只停留在『感覺怪怪的』的項目,要嘛降低信任度,要嘛回頭要求提供更多證據,不能直接當成定論。

這個「發現 → 驗證」的兩階段設計,本質上跟這個系列從 Day 07 開始強調的「驗證跟判斷要分開」是同一個邏輯——第一階段的清單只是初步觀察,不是結論;第二階段的驗證才把它變成一個可以被信任的具體宣稱。

AI Review AI 解決不了什麼

要誠實面對這個機制的邊界:它能有效抓出「實作過程中被自己的假設帶偏」的問題,但解決不了「這整個團隊、這整套 AI 工具都有的共同盲點」。如果某種錯誤判斷是這個模型普遍的行為模式(就像 Day 23 要講的,某些坑值得回饋給工具本身),單靠換一個 review agent 重新審查一次,兩邊很可能會用同一套盲點得出同一個錯誤結論。這種情況下,真正有效的把關,還是要靠人在關鍵節點提出「這個標準夠不夠嚴謹」這個問題本身。

今日思考題

回想你上一次讓 AI 幫你 review 程式碼的經驗:那次的審查指令,是具體到可以逐條檢查的標準,還是一句籠統的「幫我看看」?如果是後者,那份審查清單的可信度,其實跟隨機抽查沒有太大差別。

今日重點回顧

  • 「沒有共享上下文」是獨立審查有效的必要條件,不是充分條件——還需要明確的審查標準
  • 把「幫我看看有沒有問題」換成具體、可逐條檢查的審查維度,才能對照這個專案已知的陷阱
  • 兩階段流程:先產出「可能有問題」的清單,再要求對每一項講出具體失敗情境,才算驗證過
  • AI review AI 解決不了模型/工具共同的系統性盲點,這種情況要靠人在關鍵節點把關

明日預告

明天要往上升一層:如果某個誤判不是這個專案特有的,而是 AI 工具本身反覆出現的行為模式,這種洞察值得怎麼處理——把踩坑經驗回饋給 AI 工具本身,一份好的回饋長什麼樣。


上一篇
Day 21:多 Agent 協作——什麼情況該讓子任務跑在獨立 agent
系列文
用 AI Agent 重構一套無框架的 legacy PHP 系統22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言