AI News HubLIVE
サイト内リライト3 分で読了

大規模なAIコードレビューのオーケストレーション

CloudflareがOpenCodeを使用してCIネイティブのAIコードレビュアーを構築し、エンジニアがより優れた安全なコードを出荷できるようにした方法をご紹介します。専用エージェント、コーディネーター、リスク階層、サーキットブレーカーを使用して、数千のリポジトリにわたってスケーリングします。

ソースCloudflare AI Blog著者: Ryan Skidmore

大規模なエンジニアリングチームにおいて、コードレビューはバグの発見や知識共有に不可欠ですが、同時に効率のボトルネックにもなりがちです。マージリクエストはキューに滞留し、レビュアーはコンテキストスイッチを強いられ、変数名の些細な指摘が行われ、作成者が返答し、そのサイクルが繰り返されます。Cloudflareの内部プロジェクトでは、初回レビューまでの中央値時間が数時間に及ぶこともありました。

この課題に対処するため、CloudflareはCIネイティブなAIコードレビューシステムを構築しました。このシステムは、オープンソースのコーディングエージェントであるOpenCodeを基盤とし、従来の手動レビューから自動化されたインテリジェントレビューへの変革を実現しました。

初期段階では、既存のAIコードレビューツールを試しましたが、Cloudflareのような大規模組織に必要な柔軟性が不足していました。そこで、LLMにgit diffを直接投入する方法を試しましたが、曖昧な提案、幻覚の構文エラー、冗長なエラー処理のアドバイスなど、ノイズが多い結果に終わりました。単純な要約アプローチでは複雑なコードベースに対応できないことが明らかになりました。

そこでCloudflareは、OpenCodeを中心としたCIネイティブなオーケストレーションシステムを構築しました。エンジニアがマージリクエストを開くと、システムは調整されたAIエージェントのグループによる初期レビューを開始します。最大7つの専門レビュアー(セキュリティ、パフォーマンス、コード品質、ドキュメント、リリース管理、内部コンプライアンス(Engineering Codex))が起動され、コーディネーターエージェントがそれらの結果を統合します。コーディネーターは重複を排除し、実際の深刻度を判断し、単一の構造化レビューコメントを投稿します。

システムの基盤は、コンポーザブルなプラグインアーキテクチャです。各プラグインはReviewPluginインターフェースを実装し、Bootstrap(並行、非致命的)、Configure(順次、致命的)、postConfigureの3つのライフサイクルフェーズを持ちます。プラグインはConfigureContext APIを通じてエージェントの登録、AIプロバイダーの追加、環境変数の設定などを行いますが、最終的な設定オブジェクトには直接アクセスできません。これにより、例えばGitLabプラグインはCloudflare AI Gatewayの設定を知る必要がなく、疎結合が保たれます。

コスト効率を高めるため、システムはリスク階層を導入しています。diffのサイズと性質に基づいて、マージリクエストはTrivial(些細)、Lite(軽量)、Full(完全)の3つの階層に分類されます。Trivialの変更(例:タイプミスの修正)は2つのレビュアーのみを使用し、Fullでは7つの専門エージェントすべてを起動します。また、diffフィルタリングにより、ロックファイルや圧縮アセットなどのノイズファイルが除去されます。

モデル選択では、コーディネーターには最上位モデル(Claude Opus 4.7、GPT-5.4)が使用され、サブレビュアーにはタスクの複雑さに応じて標準モデル(Claude Sonnet 4.6、GPT-5.3 Codex)や軽量モデル(Kimi K2.5)が割り当てられます。すべてのモデル割り当ては、Cloudflare Workerを介して実行時に動的に上書き可能であり、プロバイダーの障害に対応できます。

システムはサーキットブレーカーパターンを実装しており、各モデル階層は独立したヘルスステータスを維持します。モデルが失敗すると、フォールバックチェーンに従って正常な代替モデルを探します。例えば、Opus 4.7が利用できない場合はOpus 4.6にフォールバックします。エラー分類子は、リトライ可能なAPIエラー(429、503)とその他のリトライ不可能なエラー(認証失敗、コンテキストオーバーフローなど)を区別し、リトライ可能なエラーでのみフォールバックをトリガーします。

プロンプトインジェクション対策として、ユーザー制御のコンテンツからXML構造を破壊する可能性のある境界タグが削除されています。共有コンテキストファイルのメカニズムにより、MRコンテキストの重複が回避され、トークン消費が大幅に削減されています。

30日間の運用後、システムは5,169のリポジトリで131,246回のレビューを完了し、48,095のマージリクエストを処理しました。中央値のレビュー時間は3分39秒、中央値のコストは0.98ドルでした。システムは合計159,103件の指摘を生成し、コード品質レビュアーが約半数(74,898件)を占めました。セキュリティレビュアーの重要問題の割合は4%と最も高くなっています。トークン使用量は合計約1200億トークンで、キャッシュヒット率は85.7%に達し、大幅なコスト削減を実現しました。

顕著な成果を上げた一方で、Cloudflareはシステムの限界も正直に認めています。AIレビューはアーキテクチャの意図、クロスシステムの影響、微妙な並行性バグの把握が苦手です。また、レビューコストはdiffサイズに比例して増加します。このシステムは人間によるレビューを置き換えるものではなく、補助ツールとして、エンジニアがより迅速かつ安全にコードをデプロイできるようにすることを目的としています。

現在、このシステムはGitLab CIに統合されており、チームは.gitlab-ci.ymlに1行追加するだけで利用できます。また、ローカルで実行することも可能で、CIと同じレビュー体験を提供します。Cloudflareは今後も最適化を続け、コミュニティからのフィードバックを歓迎しています。