テック技報最新号へ →
AIコーディング

CI の AI コードレビューは「専門レビュアー+取りまとめ役」に分け、差分の大きさで人数を変える

Cloudflare は OpenCode を土台に、最大7つの専門レビュアー(セキュリティ・性能・品質・ドキュメント・リリース・社内規約・AGENTS.md)と、それをまとめる coordinator で MR をレビューしている。1か月・4.8万 MR で平均 $1.19/レビュー、中央値 3分39秒。仕組みの要点は自前のレビューにも流用できる。

@Cloudflare · 投稿 2026-04-20
#code-review#ci#opencode#マルチエージェント#プロンプト#コスト

どんな場面で使う?

  • 差分をそのままプロンプトに入れて「バグを探して」と頼んだら、曖昧な指摘や存在しないエラーばかり返ってきた
  • AI レビューを全 PR に入れたいが、typo 修正にまで高いモデルを回したくない

組み立て方

  1. 専門レビュアーごとにプロンプトを分ける。 何を見るかより「何を指摘しないか」を明記するのが効く。セキュリティ担当の例:
    ## What to Flag
    - Injection(SQL, XSS, command, path traversal)
    - 変更箇所での認証・認可のバイパス
    - ハードコードされた秘密情報
    ## What NOT to Flag
    - ありそうにない前提が要る理論上のリスク
    - 主防御が十分なときの多層防御の提案
    - この MR が触れていない既存コードの問題
    - 「ライブラリ X を検討しては」式の提案
  2. 指摘は構造化して返させる。 critical(障害・悪用可能)/warning(具体的なリスク)/suggestion の3段階で XML 出力にし、後段の処理を文章解析に頼らない
  3. coordinator が重複除去・振り分け直し・妥当性フィルタをかける。 自信がなければ自分でソースを読んで確かめる。判定は承認寄りのルール表で決める(suggestion だけなら承認、warning が複数でリスクのパターンなら承認取り消し、critical があればマージをブロック)
  4. 差分の大きさでリスク階層を決める。 10行以下は2エージェント(coordinator も Sonnet 級に落とす)、100行以下は4、それ以上か50ファイル超、またはセキュリティ関連のファイルを含めば全員(7人以上)。平均コストは trivial $0.20/lite $0.67/full $1.68
  5. ノイズを先に落とす。 lock ファイル・.min.js・.map・// @generated 付きファイルは除外。ただし DB マイグレーションは generated 扱いでも残す
  6. 差分を全文プロンプトに入れない。 ファイル別の patch をディレクトリに書き出してパスだけ渡し、MR の共通情報も shared-mr-context.txt にして各レビュアーに読ませる。7人分の重複を避け、キャッシュヒット率は 85.7%

運用で効いた小技

  • MR 本文に </mr_body> のような境界タグを書いてプロンプトを乗っ取る手口に備え、既知の境界タグは入力から正規表現で削除する
  • 長い MR 説明はコマンド引数ではなく stdin で渡す(ARG_MAX で E2BIG になる)
  • 上位モデルが長考すると「止まった」と誤解されてキャンセルされるので、30秒ごとに「Model is thinking... (Ns)」と出す
  • 再レビューでは前回の指摘と解決状況を渡し、直ったものはスレッドを自動 resolve、直っていないものは再掲、開発者が「won't fix」と返したものは解決扱いにする
  • 人が break glass とコメントしたら強制承認(全 MR の 0.6%)。hotfix と LLM 障害時の逃げ道
  • 落ちたモデルは同系列の旧世代へ切り替える(opus-4-7 → opus-4-6)。429/503 だけを切り替え対象にし、認証エラーやコンテキスト超過では切り替えない
  • AGENTS.md 専任のレビュアーが「パッケージマネージャー・テストフレームワーク・ビルドツールを変えたのに AGENTS.md を更新していない」を指摘する

注意点

出典

X の元の投稿を開く