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

より良いツールがCopilotコードレビューを悪化させた。実際の改善方法はこれだ

Copilotコードレビューを共有のUnixスタイルコード探索ツールに移行したところ、レビューコストが増加し発見される問題が減少した。問題はツールではなく指示にあった。指示をレビュアーのワークフローに合わせて書き直すことで、レビュー品質を維持しつつ平均コストを約20%削減した。

ソースGitHub AI & ML著者: Napalys Klicius

エージェントに優れたツールを与えれば、より良い作業ができるはずだ——それが直感的な考えだ。しかしGitHubチームがCopilotコードレビューのコード探索ツールを共有のUnixスタイルツール(grep、glob、view)に置き換えたところ、レビューコストが増加し、発見される問題が減少した。問題は新しいツール自体ではなく、エージェントがそれらを使用するための指示にあった。元の指示は汎用的なコーディングアシスタント向けに設計されており、エージェントはプルリクエスト(PR)の差分から出発するのではなく、リポジトリ全体をブラウジングするように振る舞った。この「ブラウジングモード」により、エージェントは無関係なコンテキストを蓄積し、コストが増加し注意が分散した。

チームはツールの指示を書き直すことでこの問題を解決した。新しい指示は人間のレビュアーのワークフローを模倣している。PRの差分から始めて具体的なレビュー質問を形成し、grepとglobで候補ファイルやシンボルを素早く発見するが読み取りは遅らせ、位置が確定した場合のみviewを使用して正確なコード範囲を読み取る。この「まず絞り込み、次に正確に読む」パターンにより効率が大幅に向上した。例えば、認証ヘルパー関数の変更をレビューする際、エージェントはその関数を呼び出すすべてのファイルを検索するのではなく、grepで呼び出し元を探し、globで関連するルートファイルを特定し、viewで重要な呼び出し箇所を読み取るようになった。

さらに、指示はエラー回復戦略も改善した。grepが失敗した場合はより単純なエスケープ検索を試み、パスが間違っている場合は隣接パスを推測するのではなくglobに切り替える。これにより、小さなツールの失敗が大きな探索ループに発展するのを防いだ。内部ベンチマークはこのプロセスで重要な役割を果たした。最終スコアだけでなく、エージェントがどのツールを呼び出し、どのような出力を得て、どこでエラーが発生したかという軌跡を表示することで、チームはエージェントの行動を可視化し、指示を反復改善できた。

最適化の結果、本番環境では平均レビューコストが約20%削減され、レビュー品質は維持された。この改善から得られた教訓は、ツール自体は汎用的だが、指示は特定のタスクに合わせて最適化する必要があるということだ。同じgrep、glob、viewツールでも、Copilot CLIはインタラクティブなコーディングタスクを処理するため、異なる指示が必要であり、ツール周りのワークフローを製品に合わせることが重要である。共有ツールとカスタマイズされた指示、厳格なベンチマークの組み合わせが真の効率向上をもたらす。