創刊準備号 · 2026年秋English · RSS
AgentKoji

AIコードレビューは何周で止める?

計画書のレビューは4回目でようやくGOが出た。終わらないループと、途中で切ってはいけないループの見分け方を、実例とCLIの罠で書く。

別系統のモデルにコードレビューを任せると、「何周で止めるか」が毎回の悩みになります。止めるのが早すぎると穴が残ります。遅すぎると、理想論の指摘が延々と続きます。打ち切りの基本の考え方は「コーディングエージェントの選び方」に書きました。この記事では、そこに書かなかった実例と、レビュー CLI の罠をまとめます。実装の前、設計の段階で別のAIに反論させる手順は「別のAIに設計を反論させる」にまとめました。

CLI は、編集部の検証環境に入れた Codex CLI(@openai/codex、codex-cli 0.163.0、2026-10-16)で確かめました。

1回で GO にならないもの

計画書:ある計画書は、v1 から v4.1 まで4回レビューを通しました。反映した指摘は、累計で Critical 9件、Important 12件です。「互換性を完全に維持」と書いた箇所は、毎回、レスポンスの形が少しずつ違っていて壊れていました。互換性は、文章ではなく、実際のレスポンス body を並べて確かめます。

失敗しても本処理を止めない実装:通知が失敗しても本処理は続ける(fail-open)実装では、P2 が5ラウンド続けて積み上がりました。中身は、ステップ単位の結果の扱い、set -e の下で黙って落ちる処理、引数からの URL の漏れ、--fail-with-body の付け忘れでした。「secret が未設定」「payload の失敗」「HTTP の失敗」「通信の失敗」を、一段ずつたどってレビューしてもらうと収束しました。

修正のコミットもレビューする

指摘を直したコミットを、もう一度レビューに出すと、修正から派生した P2 が出てきます。「push の失敗は全部リトライする」と直したら、恒久的な 4xx のエラーまでリトライの列に積まれ、無限にたまる作りになっていました。直したあとは、直した差分だけでも1周回します。

指摘をそのまま直しに行かない

会話の履歴を持たないレビュアーは、合意済みの論点を蒸し返します。 設計の段階で決着した点が、Critical として返ってきます。受け取ったら、合意文書の該当する節と照合します。既に合意していれば、節の番号を根拠に却下します。

既存の実装を「欠陥」と呼ぶ前に、決定ログとコミットの本文を読みます。ある相談では、返ってきた3つの指摘が、どれも既に決めた事項の蒸し返しでした。別のモデルに費用を払って、既に決めたことを追認させただけでした。既決と分かったら、「前提が変わったか」だけを尋ねます。

重い結論には、互いを見せないレビュアーを

取り返しのつかない結論は、主張ごとに複数の観点のレビュアーを当てます。レビュアーどうしには互いの結果を見せません。ある分析では、9つの主張のうち生き残ったのは1つだけでした。

敵対的レビューで誤削除が見つかった例は「緑のテストは何も証明しない」にあります。

CLI の罠

レビューを自動で回すときに踏んだものです。

$ codex review --base main "check"
error: the argument '--base <BRANCH>' cannot be used with '[PROMPT]'

--help の Usage には codex review --base <BRANCH> [PROMPT] と出るので、併用できそうに見えます。編集部は、プロンプトを codex exec に stdin で渡し、本文の1行目に「git diff main...HEAD をレビューして」と書く形にしています。

製品ごとのレビューの出し方は「AIコーディング3製品を運用で比較」に書きました。

まとめ