回到頂部
深色 AI 實驗室中的 AI PR 審查流程,包含程式差異、檢查節點、風險訊號與合併前驗證路徑

AI Code Review 怎麼做?AI PR 檢查清單與團隊流程

工程團隊收到 AI 產生的拉取請求時,先用任務、差異、測試、安全與擁有者審查五層檢查,判斷能否進人工審查、退回重做或升級處理。

內容查核: 來源查核:

當 AI 代理(AI agent)開始幫團隊改檔、跑測試、開拉取請求(pull request,PR),程式碼審查(code review)的第一個任務會變成「這個 PR 能不能進入人工審查」。審查者不必一開始就逐行看差異(diff);先用任務、範圍、測試與風險把 PR 分流,才能避免把時間花在方向錯誤的修改上。

這篇給正在導入 Codex、GitHub Copilot、Claude Code、Cursor 或其他 AI 程式代理(AI coding agent)的工程團隊。讀完後,你可以把 AI PR 分成三種處理:證據完整就進人工審查;任務偏掉或測試不足就退回 agent 重做;碰到權限、付款、資料庫、資安或合約行為,就升級給程式碼擁有者或資安審查者。

先用 10 分鐘分流 AI PR

AI PR 的風險常出現在合併前很早的位置:任務理解錯、改太多檔案、測試只跑表面、或為了讓流程通過而放寬限制。先做分流,可以避免審查者被大量程式細節拖住。

看到的訊號處理路線審查者要做的事
任務來源清楚、差異範圍合理、測試證據完整、沒有高風險檔案進人工審查照一般 code review 看設計、可讀性、邊界案例與團隊慣例。
PR 說明很空、改到不相關檔案、測試只寫「passed」、驗收條件沒有對應修改退回 agent 或提交者重做要求補上信任摘要、縮小範圍、重跑相關測試,必要時重開較小 PR。
觸及身分驗證、權限、付款、帳務、資料庫遷移、密鑰、外部網路、部署設定升級擁有者或資安審查指派程式碼擁有者(code owner)、資安或平台負責人,要求明確批准、回滾方案與稽核紀錄。

如果 10 分鐘分流都無法判斷,先補可審查的上下文:issue、驗收條件、測試命令與風險說明。上下文補齊後,再進入逐行審查。

五層 AI PR 審查流程

把 AI PR 當成一個可驗收的交付包;它包含檔案差異,也包含任務、測試、風險與責任紀錄。建議從外到內檢查:任務、差異、測試、安全、維護。

層級要確認的問題通過標準
任務對齊PR 是否直接解決原始 issue?驗收條件有沒有逐項對應?PR 說明能說清楚需求、非目標修改與未完成項目。
差異範圍修改檔案是否必要?是否混入格式化、重構或無關命名?每個檔案都有理由;大範圍變更被拆小或有擁有者同意。
測試證據跑了哪些測試、格式檢查(lint)與型別檢查(type check)?新測試能否抓到原本 bug?測試命令、結果、未跑原因與失敗處理都寫在 PR 內。
安全權限是否放寬權限、驗證、輸入處理、網路或檔案存取?高風險邏輯有資深審查者;沒有把安全檢查改成可選。
維護責任是否符合既有架構、命名、錯誤處理與除錯方式?修改後的程式碼仍能由團隊維護,未來回滾與追蹤不會變困難。

這個順序有一個好處:前兩層失敗時,後面不用浪費時間逐行評論。任務與範圍先穩住,測試和安全才有意義。

任務對齊:先比對 issue、計畫與差異

AI agent 會根據 prompt、程式碼庫(repository)脈絡、錯誤訊息與測試結果推理。它可能做出可執行的修改,卻解錯需求或擴大範圍。

審查者可以先問四件事:

  • 原始 issue 或 ticket 的驗收條件是什麼?
  • PR 說明是否逐項說明哪些條件已完成?
  • 差異是否只碰必要檔案?
  • 有沒有順手重構、改格式、改命名或修改測試期待值?

常見退回訊號包括:把 bug 修成另一個抽象層問題、將整個檔案格式化、增加大型 helper、改掉 public API、或把失敗測試改成通過。遇到這些情況,請要求 agent 重新提交較小的修改,並在 prompt 中明確列出禁止範圍。

差異範圍:把檔案分成三種風險

AI PR 最容易讓審查者疲勞的地方,是差異量突然變大。大 PR 仍可能合理,但要有清楚理由。

檔案類型範例審查方式
預期內檔案這次 bug、功能或測試直接相關的程式與測試檔正常審查,確認邏輯、邊界案例與可讀性。
可疑檔案格式化、共用輔助函式(helper)、看似順手調整的相鄰模組要求說明為何需要改;理由不足就退回或拆 PR。
高風險檔案權限、付款、資料庫遷移(migration)、部署、密鑰(secret)、稽核、資料結構(schema)、外部網路指派程式碼擁有者(code owner);要求測試、回滾、批准紀錄與安全檢查。

如果 PR 混入太多可疑檔案,先不要逐行留言。請提交者把無關格式化、重構與功能修改拆開,讓審查成本回到可控範圍。

測試證據:不要只看「測試通過」

AI 工具很會在 PR 說明寫「tests passed」。審查者要看的是哪些測試、為何足夠、哪些沒有跑。

最低測試證據應包含:

  • 已執行命令與結果摘要。
  • 這些命令如何對應本次變更。
  • 新增或修改的測試,以及它會在 bug 存在時失敗的理由。
  • 未執行測試與原因,例如環境限制、外部服務、時間成本。
  • 失敗測試如何處理;若略過,誰批准。

修 bug 時,先看有沒有能重現 bug 的測試;做新功能時,先看驗收條件是否都有對應測試。若 AI 只跑單一路徑(happy path)、用 mock 避開核心行為、刪掉不穩定測試(flaky test)卻沒有理由,這個 PR 需要退回補測試證據。

安全與權限:找出「為了通過而放寬」的改動

AI PR 的安全問題常藏在看似方便的修補裡。它可能把檢查改成可選、吞掉錯誤、放寬允許清單(allowlist)、拉長逾時時間(timeout),或把使用者輸入推近命令列(shell)、SQL、HTML、URL、檔案路徑(file path)。

高風險審查請特別看:

  • 身分驗證(authentication)、授權(authorization)、權限(permission)或角色檢查(role check)是否被改動。
  • 付款(payment)、帳務(billing)、配額(quota)或稽核紀錄(audit log)是否被繞過或弱化。
  • 密鑰(secret)是否出現在程式、log、測試 fixture 或 PR 討論中。
  • 新增依賴、外部網路、檔案系統權限或命令執行是否必要。
  • 輸入驗證(validation)、清理(sanitization)、速率限制(rate limit)、CORS、CSRF 或內容安全政策(content security policy)是否變寬。
  • 資料庫遷移(migration)、資料結構(schema)或資料修復腳本是否有備份、回滾與人工批准。

Claude Code 的安全文件提醒,使用者仍要審查建議的程式與命令,並為批准動作負責。這個原則也適用於其他代理:工具可以先找風險,批准權要留在團隊流程裡。若團隊要把權限、沙盒與稽核一起設計,可以延伸看 AI Agent 安全新共識

要求每個 AI PR 附上信任摘要

把下面這段放進 PR 範本(template),或要求 agent 在開 PR 前填好。目標是讓審查者快速知道 AI 做過什麼、沒有做什麼、哪裡需要人工判斷。

## AI PR 信任摘要

### 任務來源
- issue / ticket:
- 目標:
- 驗收條件:
- 明確不處理的範圍:

### 修改範圍
- 修改檔案:
- 檢查過但未修改的檔案:
- 可能影響的 API / schema / 設定:
- 高風險區域:

### 測試證據
- 已執行命令:
- 新增或修改測試:
- 未執行測試與原因:
- 需要審查者手動驗證的情境:

### 風險與限制
- 主要假設:
- 需要程式碼擁有者或資安審查者確認:
- 回滾方式:
- 後續追蹤項目:

信任摘要的價值,是把 agent 的行為軌跡轉成可審查證據,讓審查者不必從差異裡逆向猜測每一步原因。

Copilot、Codex、Claude Code 在審查裡各自適合做什麼

工具審查可以當第二雙眼睛,但不要讓工具取代批准人。比較穩的做法,是把它們放在不同位置:

工具 / 機制適合放的位置團隊仍要補的判斷
GitHub Copilot 程式碼審查(code review)GitHub PR、整合開發環境(IDE)或支援環境中的自動/手動審查;可搭配全庫或特定路徑的自訂指令它能提出回饋與建議修改(suggested changes),但團隊要決定哪些建議符合產品、架構與風險承擔。
OpenAI Codex 的 GitHub 程式碼審查(code review)在 PR 留 @codex review 或設定自動審查,要求它聚焦嚴重問題、測試缺口或安全路徑Codex 審查是高訊號檢查層;合併前仍要看 issue、測試證據與擁有者批准。
Claude Code 權限與沙盒設定本機或雲端執行修改前,限制可讀寫路徑、命令與工具權限權限設定能減少越界操作;使用者仍需審核提議命令與產出差異。
PR 範本 / CODEOWNERS / 持續整合(CI)把人工責任、測試與高風險路徑固定在流程裡這些規則要由團隊維護,並定期更新 agent 指令與檢查清單。

GitHub 官方文件說明,Copilot code review 可以審 PR 並提供可套用的建議修改。OpenAI Codex 文件則把 GitHub code review 定位為會檢查 PR 差異(pull request diff)、遵循程式碼庫指引(repo guidance)、發出標準 GitHub review 的流程。這些能力很適合用來補審查者的盲點,但請把「可合併」的決定留給負責該系統的人。

團隊流程:從 issue 到合併的 7 步

如果團隊已經有 AI 程式代理(AI coding agent),建議把 code review 往前移,不要等 PR 開出來才補上下文。

  1. Issue 先寫驗收條件與禁止範圍:包含不該碰的檔案、必跑測試、高風險功能、回滾要求。
  2. 要求 agent 先提出計畫:列出預計修改檔案、測試策略與風險;人類先批准計畫再讓它改。
  3. 讓 agent 小步提交:能拆成兩個 PR 就拆;重構、格式化、功能修改分開。
  4. PR 說明必填信任摘要:缺任務、測試或風險說明時,不進人工審查。
  5. 持續整合(CI)與靜態檢查先跑完:格式檢查(lint)、型別檢查(type check)、單元測試(unit test)、安全掃描、結構檢查(schema check)依專案需要設定。
  6. 工具審查補第二輪:Copilot、Codex 或其他工具聚焦測試缺口、安全路徑與可維護性。
  7. 人類擁有者做最後批准:確認業務行為、架構取捨、高風險檔案與回滾方式。

這套流程不會讓每個 PR 變慢。相反地,它會讓不合格的 AI PR 更早退回,讓審查者把時間留給值得合併的修改。

一個可直接套用的情境

假設團隊要修客服後台的訂單狀態 bug,AI agent 開了一個 PR。審查者可以這樣處理:

  • 讀者情境:產品工程師負責後台訂單頁,最近讓 Codex 或 Claude Code 協助修 bug。
  • 交給 AI 的任務:只修正狀態轉換錯誤,禁止修改付款流程、權限判斷與資料庫 schema。
  • 預期輸出:小範圍 diff、能重現 bug 的測試、PR 信任摘要、未碰高風險檔案的說明。
  • 驗證方式:跑訂單狀態單元測試(unit test)、相關整合測試,手動確認兩個邊界狀態;檢查身分驗證、付款與帳務檔案沒有差異。
  • 風險與非適合情況:如果 agent 改到付款、權限或資料庫遷移,這已超出普通 bugfix PR,應升級擁有者審查並要求拆分。

這種情境的價值,是把 AI 限制在可驗收任務裡。任務越清楚,審查者越能分辨是程式細節需要修,還是整個 PR 方向需要退回。

AI PR 審查清單(Review Checklist)

任務與範圍

  • PR 是否直接對應 issue / ticket?
  • 驗收條件是否逐項對應程式或測試?
  • PR 是否明確說明不處理的範圍?
  • 有沒有無關重構、格式化或命名調整?
  • 是否需要拆成更小 PR?

差異與架構

  • 每個修改檔案是否都有理由?
  • 是否改到公開程式介面(public API)、資料結構(schema)、設定檔(config)、資料庫遷移(migration)或部署設定?
  • 是否新增依賴、工具權限、外部服務或網路存取?
  • 是否符合既有命名、錯誤處理與模組邊界?
  • 回滾方式是否清楚?

測試與驗證

  • 是否有重現 bug 或覆蓋驗收條件的測試?
  • 是否跑過相關測試、格式檢查(lint)、型別檢查(type check)或安全掃描?
  • 未跑測試的原因是否可信?
  • 新測試是否測使用者可觀察行為,而非只看實作細節(implementation detail)?
  • 失敗測試或 flaky test 是否被清楚處理?

安全與資料

  • 是否放寬身分驗證、授權、權限或角色檢查?
  • 是否碰到密鑰(secret)、權杖(token)、憑證、log 或稽核軌跡(audit trail)?
  • 是否降低輸入驗證、清理、速率限制或其他輸入限制?
  • 是否讓使用者輸入更接近命令列(shell)、SQL、HTML、URL 或檔案路徑(file path)?
  • 是否需要資安審查者或法規/隱私負責人確認?

合併前決策

  • PR 是否有足夠信任摘要?
  • 工具審查提出的高風險建議是否已處理或明確拒絕?
  • 程式碼擁有者是否批准高風險檔案?
  • 產品行為、監控、回滾與後續追蹤是否清楚?
  • 若明天需要解釋這個合併,PR 內是否有足夠紀錄?

與 Mason 其他 AI coding 文章怎麼搭配

如果團隊還在建立完整流程,可以照這個順序讀:

AI PR 的好處是交付速度變快;代價是審查者要更早要求證據、界定權限、留下責任紀錄。把信任摘要、五層檢查與升級規則固定下來,AI 程式代理(AI coding agent)才會變成團隊生產力,並降低新的漏審風險。

資料來源

№ · further reading

延伸閱讀