何ヶ月も大規模なコードベースでAIコーディングエージェントを動かしてきましたが、気になる点に気づきました。エージェントに「新しいAPIエンドポイントを追加する」などのタスクを渡すたび、物事の場所を把握するだけで15〜20回のツール呼び出しを費やしてしまいます。ルーティングのgrepをしたり、ミドルウェアのファイルを読んだり、型を確認したり、さらなるファイルを読み込んだりします。実際にコードを書き始める頃には、すでに大量のコンテキストウィンドウを使い果たしていました。
コンテキストの位置が実際にどれほど重要かを知りました。研究(Liu らの「Lost in the Middle」)によると、Llama や Claude のようなモデルは、コンテキストウィンドウの初期で推論能力がはるかに高くなるそうです。したがって、全ての探索とファイル読込はモデルが最も鋭いときに発生し、実際のコーディングは注意が低下した後に起こります。私が見たところ、同じモデルでも20回のオリエンテーション呼び出しの後では3回と比べてコードの品質が明らかに劣っていました。
これを最適化理論のヒルクライミング問題として考え始めました。エージェントはゼロのコンテキストから開始し、一歩進んで(grep)、評価し、もう一歩進んで(ファイルを読む)、再評価し、十分な理解を得るまでこれを繰り返します。知らないことは分からないので、ステップを飛ばすことはできません。
最良の修正が、より良いプロンプトやエージェント設定ではなく、コードベースのドキュメントを3層の階層構造に再編成し、エージェントが20回ではなく1-3回のツール呼び出しでナビゲートできるようにすることだとは思いませんでした。タスクをドキュメントへ紐づけるインデックスファイル、意図別に整理された検索可能なディレクトリ、各深さで適切なサイズの参照資料。
オリエンテーションに費やすコンテキストの割合を、20-40%から一貫して10%未満へと削減しました。
セットアップやローカルモデル固有の詳細についての質問にはお答えします。




