AIコーディングエージェントはファイル探索は得意でも行単位の修正は苦手

「正しいファイルを見つける」と「正確な行を変える」は別の話

AIコーディングエージェントへの期待が高まっています。「プロンプトを入力すればコードを自動修正してくれる」というイメージを持っている方も多いかもしれません。しかし今回の研究が示したのは、そのイメージが現実と少しずれている、という点です。

エージェントはリポジトリの中から「変更が必要なファイル」を探し当てることは比較的得意です。たとえば「ユーザー認証の処理を修正して」と伝えれば、認証まわりのファイルにたどり着く精度はそれなりに高い。ところが、そのファイルの中の「どの行を、どう変えるか」という局所的・精密な判断になると、エラーや見落としが増えるという結果が報告されています。

この違いは、直感的には少し意外に感じるかもしれません。ファイルを見つけるよりも、行を特定するほうが「より細かい作業」ではあります。しかしAIの得意・不得意は人間のそれとは異なります。全体的な文脈からファイルを推定することはできても、コードの細部に依存した精密な変更箇所の特定は、まだ弱いのが現状のようです。

なぜこの問題が起きるのか

AIコーディングエージェントは、大量のコードやドキュメントを学習していますが、実際の修正作業では「このプロジェクト固有のロジック」を理解する必要があります。たとえば同じ「バグ修正」であっても、そのプロジェクトの設計方針、変数の命名規則、依存関係によって、変更すべき行はまったく異なります。

エージェントはファイルの役割を大まかに把握することはできますが、「このif文の条件式の第3項だけ変える」という粒度の判断には、より深いコンテキストが必要です。研究が示唆しているのは、現状のエージェントはこの「最後の一歩」でつまずきやすい、ということです。

また、プロンプトの設計が不十分だと、この問題はさらに大きくなります。今回の記事の周辺情報として、良いプロンプトには「明確なミッション」「対象の指定」「制約条件」「失敗時の対処ルール」が必要だという指摘も紹介されていました。エージェントに「なんとなくバグを直して」と伝えるだけでは、ファイルにたどり着いても行単位の修正で迷子になりやすいわけです。

実務で意識したいプロンプト設計のコツ

この研究を踏まえると、AIコーディングエージェントをうまく使うための実践的な方向性が見えてきます。エージェントに任せる作業の「粒度」を意識することが、最初の一歩です。

たとえば「このリポジトリのバグを直して」という広いタスクよりも、「src/auth/login.js の handleLogin関数内で、エラーが発生したときに空のオブジェクトを返している箇所を、nullを返すように変更して」というように、できる限り対象を絞り込んで伝えるほうが精度が上がります。ファイルの特定は任せられても、行の特定は人間側で補助してあげるイメージです。

また、エージェントに推測させないことも重要です。前提情報や例外ケースは、省略せずにプロンプトに明記する。「こういうケースは変更しないで」という制約をセットで伝えることで、エージェントが判断に迷う場面を減らせます。さらに、一度だけ生成して使うのではなく、複数回出力させて結果を比較・批評するアプローチも有効とされています。

フリーランスエンジニアへの影響

フリーランスでコーディング業務を受けている方にとって、この研究は「AIに丸投げするのはまだ早い」という注意喚起として受け取れます。特にクライアントの既存コードベースに対する修正作業は、ファイル構成が独特だったり、ドキュメントが整っていなかったりすることも多く、エージェントが行単位で迷子になるリスクは高くなります。

一方で、「どのファイルに手を入れるべきか」を素早くリストアップする用途では、AIエージェントはすでに十分役立ちます。大規模リポジトリの調査や、影響範囲の把握といったタスクを任せながら、具体的な変更はレビューを挟む——という使い方が現実的な落とし所かもしれません。AI任せにしすぎず、人間のレビューを組み込む設計を維持することが、品質管理の観点からも重要です。副業でスポット開発を受けているエンジニアにとっても、エージェントへの依存度を調整する判断材料になります。

まとめ

AIコーディングエージェントはファイル探索には強くても、行単位の精密な修正ではまだ弱点があることが研究で示されています。すぐに業務を全自動化しようとするよりも、「エージェントに任せる範囲」と「自分でチェックする範囲」を意識的に分けてみるのが現実的な使い方です。興味のある方は元記事もあわせてご確認ください。

参考:The Decoder – AI coding agents find the right file but miss the exact lines that matter

コメント

タイトルとURLをコピーしました