

Amitosh Swain
May 14, 2025
11 min read
How we built our AI code review agent for IDEsの日本語訳です。
CodeRabbitは最近、無料のVS Code拡張機能を公開し、コンテキストが豊富なAIコードレビューをエディターへ直接導入しました。
私たちのエンジニアリング哲学は常にシンプルです。既存のワークフローへシームレスに適合するツールを構築します。開発者からは、包括的なPRレビューによってリリースを加速し、より多くのバグが本番環境へ到達するのを防げたという声がある一方、プルリクエストを送る前にコードを確認するためのIDEレビューも多く求められていました。
VS Code(およびCursorやWindsurfなどの互換エディター)内へ別のレビュー段階を作ることで、作業を中断するコンテキスト切り替えを最小限に抑え、PRを送る前に論理エラーや恥ずかしいタイプミスを発見できるようにしました。社内で実際に利用した結果、問題を早期に発見し、プルリクエスト段階でチームを遅らせる反復的なやり取りを減らせることがわかりました。
IDEレビューの設計で直面したエンジニアリング上の課題の1つは、IDEで即時レビューを期待する開発者へ応えるため、コードレビューパイプラインを再構築することでした。この記事では、この転換をどのように考え、最初のコメントまでの時間を約90%短縮しながら高品質なレビューを確保するために講じた手順を紹介します。

CodeRabbitはPRが送信されるとすぐにレビューを開始するため、最も有用なレビューを提供できるようPRコードレビュープロセスを最適化し、レビューが完了するとレビュアーへ通知します。
このプロセスには数分かかり、コードベースを最も深く認識したレビューのため、数十のコンテキストデータポイントを取り込む複雑で非線形なパイプラインを伴います。

次に、各提案が実際に役立つことを検証する複数段階のプロセスへすべての推奨事項を通し、レビューのノイズを可能な限り減らします。コードベースの各部分と変更がどのように組み合わさるかを特定して問題を探す複数回の処理を行い、その後に各提案を個別に処理、検証します。このプロセス中は、提案が有用でない可能性が判明する場合に備え、提案をユーザーへ共有せず、パイプラインのすべての手順が完了するまで待ちます。この方法により、ノイズを最小限に抑えるため一括で配信する、高度で非線形なレビューグラフができます。
ただし、PRを受け取ったユーザーがすぐに対応する可能性は低いため、処理時間は意識されません。その場合は、速度より品質を優先することが理にかなっています。しかしIDEレビューでは事情が異なります。IDEでは、レビューを開始してからマージリクエストを送るまでユーザーが待っている可能性があるため、レビューがすぐに始まり、速く配信されることを期待します。変更への対応を直ちに始めたいのです。ユーザーの期待へより適合するIDEレビューを作るには、レビュー品質や有用性へ影響を与えず、そのコンテキストでのレビュー手法を調整する必要がありました。

コーディング環境内へほぼリアルタイムのフィードバックを直接提供できる効率的なパイプラインを開発するには、イベントとレビューコメントの作成、送信方法を再構築する必要がありました。
このプロセスは、リアルタイムで価値ある知見を作るために利用できる性質について、意図を持って考えることから始まりました。リアルタイムレビューでは、関連性を確保するためにすべてのコメントを検証手順へ通すことはできません。しかし、パイプラインからその手順を取り除くと、レビューのノイズが増え、役に立たない提案の割合も高まります。どの時点で信号対雑音比が悪化し、AIコードレビューが支援よりも迷惑になるのでしょうか。
PR段階にもソリューションを提供しているため、IDEレビューをその段階で最も重要なものへ絞れました。アーキテクチャに関係するものやコードベース全体での深い検証が必要なものは、複数段階の検証が必要で時間がかかりすぎるため、PR段階に適していると判断しました。PRレビューでは、サンドボックス内でコードの実行を試みるところまで確認します。しかし、それをリアルタイムで行うことはできません。
その代わり、開発者がコーディングまたは編集している間に見落とす可能性がある、ミス、仕様への適合、バグ、論理的な問題のレビューを優先しました。こうした問題はPRを変更のために差し戻す原因になったり、同僚から「どうして見落としたのか」と疑問に思われたりするため、IDEで探すべき最も重要な問題だと考えました。たとえば、私自身がIDEレビュアーを使ったとき、誤って変更して気づかなかった条件式を発見しました。
提案が有益であることを検証するプロセスも維持したい一方、より軽量な方法を構築する必要がありました。
最高のIDEレビューを開発することが目標でしたが、PRレビューほど包括的である必要はないとわかっていました。IDEレビューの目標は、IDEで確認して最も重要な変更へ開発者が対応し、より自信を持ってマージできるようにして、PRプロセスを効率化することです。その後、コードはより詳細なPRレビューを受けます。

IDEレビュー向けの新しいパイプラインを、次のように開発しました。
特に大きく変更したのは、レビューの処理と配信方法です。SCMではすべての提案をまとめて処理し、レビューを完了してから結果をユーザーへ配信します。一方、IDEでは、パイプラインが提案を作成するたびに、リアルタイムで段階的に配信する方法を選びました。より表面的なレビューで完全な結果を速く配信することもできましたが、包括性と品質を、即時フィードバックを求めるユーザーのニーズと両立したいと考えました。経過時間を長く取りながら提案を共有することで、提案の品質を高める追加手順のための時間を確保できました。
この方法でシステムを設計したため、CodeRabbitは同じレビュープロセスとパイプラインを使い、コーディング中に継続的なフィードバックも提供できるようになりました。

コンテキストの強化は、コードベースを深く認識した、関連性の高い推奨事項を提供する方法の重要な部分です。しかし、PRレビューでのコンテキスト準備プロセスは非常に包括的です。リンクされた課題と過去の課題を取り込み、リポジトリをクローンし、依存関係を分析するためコードベースのCode Graphまで構築します。こうしたコンテキスト強化はIDEでは不可能でした。その代わり、レビューを速くするため、主にコードへ注目してコンテキストを軽くしました。
今後は、チーム向けの
と同様に、ユーザー固有のLearningsも追加する予定です。エージェントが過去のコミットとフィードバックから学習するにつれて、コードレビューの関連性が時間とともに高まります。パイプラインをより線形に再設計して手順を減らしたものの、PRレビューで使用する複数モデルのオーケストレーションは変更しませんでした。両方のレビューで同じモデルオーケストレーションを使用しますが、レビューの異なる部分を処理するモデルをインテリジェントに選ぶため、重みの選択を変えました。意思決定エンジンの動作も微調整し、より線形なプロセスフローを作りました。最後に、応答時間を短縮し、IDEレビューで特定した異なる優先事項へ対応するよう、プロンプトを最適化しました。
当初は、ChatGPTのように言語モデルが単語を1つずつ生成するストリーミング応答がIDEレビューに最適だと考えました。特にリアルタイム作業で人気があるためです。しかし、プロンプトが大きく、レビューを開始する前に大幅なコンテキストエンジニアリングを行うため、モデルの出力が乱れたり、ツール呼び出しが欠落したりする問題が起きました。
AIコーディングアシスタントとの気軽なチャットとは異なり、ユーザーは完全なレビューコメントを期待します。そのため、表示する前にモデルの出力を整える必要があります。ストリーミングモデルは出力をチャンクで生成するため、モデルが完全なコメントを生成するまでLLM出力をバッファーし、その後で処理パイプラインへ送る必要がありました。この遅延により、今回のケースではストリーミングの効果がほとんどありませんでした。その代わり、少し長く待ち、複数のファイルについて完全な出力を同時に得ることを選びました。

VS CodeでUIをゼロから設計する必要がありました。当初は、SCMと同様にコメントを追加する独自のコメントパネルを考えました。しかし、コメントパネルはリアルタイムコメントに適した方法ではないとわかりました。ユーザーがコードの場所でコメントを受け取れるよう、コメントをエディターへより直接統合することにしました。これはIDEにより自然な戦略であり、より良いUXフローを作ると考えています。
非常に多くの開発者がIDEでAIコーディングツールを使っているため、それを活用し、CodeRabbitの提案を解決する方法を開発者が選べるようにしたいと考えました。ユーザーは、CodeRabbitが提案するコードで問題を解決するか、提案を好みのAIコーディングアシスタントへ渡してコードを提案させるかを選べます。すべてワンクリックです。

IDEレビューのバージョン1.0を公開しましたが、さらに役立つものにするため、ロードマップには複数の予定があります。
ユーザーレベルのLearnings:
を追加したり提案へフィードバックしたりする機能を追加し、エージェントが好みの提案と好みでない提案を自動的に学習できるようにします。現在SCMにはがありますが、自分だけに適用するカスタムLearningsを追加したい個々の開発者へ、この機能を拡張します。ツール: PRレビューで使用できる30種類を超えるツールをIDEレビューへ導入する予定です。IDEですでにリンターを実行している場合も、CodeRabbitによる1回のレビューですべて行えるようになります。今年後半の追加にご期待ください。
Webクエリ: IDEツールへコンテキスト強化機能を統合し、LLMが最新でなくても、誤検知を減らしてコードのバグをなくし、バージョン、ライブラリのドキュメント、脆弱性に関するレビューを常に最新の状態に保つ予定です。
Docstring: マージ前にdocstringを作成したいですか。現在PRレビューの一部であるこの機能を、将来IDEレビューへ追加します。
コードベースの認識を強化: IDEでコードベースをさらに深く認識したレビューを作るため、追加のデータポイントを取り込みます。
無料の IDEレビューをこちらからお試しください。同様の課題へ取り組むことに興味がありますか。 チームへご参加ください。