AIのコーディング性能を決めるのはコード構造である
- •AIコーディングモデルにおいて、コードベースは外部データではなくクエリプロンプトとして機能する。
- •優れたローカルなコードは圧縮効率が高く、モデルがシステム内の欠落部分を正確に推論することを可能にする。
- •複雑なコードベースでAIを使いこなすには、課題を絞り込み、より鋭いクエリとして圧縮して提示する必要がある。
ソフトウェア開発者のティモン・クレブス(Timon Krebs)は、AI主導のコーディングタスクにおいて、コードベース全体がプロンプトとして機能していると主張する。AIモデルは事実のデータベースとして機能するのではなく、認識したパターンに基づいて妥当な継続部分を再構成するシステムである。コードベースに取り組む際、命名規則やアーキテクチャ、隠れた前提、テスト状況、ファイルレイアウトといった要素がすべてクエリの一部として機能する。
クレブスはAIコーディングツール「Fable 5」を用いた自身の経験を通じ、停滞した個人プロジェクトを復活させる際に高い効果を確認した。モデルは解の形状を可視化することで複雑な問題を解決できたが、専門的なコードベースに適用するとパフォーマンスが不安定になることを発見した。この差異は出力品質がコード構造に直結していることを示唆している。カプセル化や明確なインターフェースを重視した優れたコードは局所的であり、モデルが欠落した情報を容易に推論できる。対照的に、悪質なコードは非局所的であり、隠れたグローバル状態や遠くの依存関係に依存するため、しばしばコンテキストウィンドウから外れてしまう。
また、単にクリーンな例や「ベストプラクティス」をモデルに提供しても、それらが矛盾するクエリの一部となるため失敗することが多い。整理されていないコードベースでは、モデルがベストプラクティスを遵守しても、そのコードを不規則にしたシステムの暗黙的な制約を見落とす。クレブスはこれを「コンテキスト腐敗」と呼び、古いファイルや無関係な例がモデルのアクティブウィンドウに残り、出力を混乱させる状態を指すとしている。結論として、乱雑なコードベースでの性能改善は巧みなプロンプトではなく、特定の非局所的なコンテキストを補完することに依存する。LLMを成功させる鍵は、タスクを縮小して局所性を確保し、隠れた不変条件を特定することで、モデルが定義された境界内で機能できるようにすることにある。