AIコーディングエージェントの文脈において、「ハーネス」とは、ユーザーと大規模言語モデル(LLM)の間の相互作用を管理する基礎となるフレームワークを指します。これには、実行ループ、コンテキスト管理、およびモデルへのフィードバックを提供するメカニズムが含まれます。ハーネスは単なるラッパーではなく、エージェントの動作における「真実の源泉(source of truth)」として機能し、各プロンプトにどれだけの情報を投入するか、またエージェントが多段階のリファクタリングをどのように処理するかを決定します。小規模なモデルの場合、モデル自体がネイティブに処理できないメモリやコンテキスト管理をオフロードする必要があるため、堅牢なハーネスが極めて重要になります。対照的に、非常に大きなモデルの場合、ハーネスは基本的なbashプロンプトツールを提供しさえすればよく、モデル自身に内部コンテキストを管理させることも可能です。
Pi-Agent、Claude Code、OpenCodeといった異なるコーディングエージェントの研究から、ハーネスはツールの呼び出し失敗や不適切な編集を防ぐことで、不可欠な「洗練度(polish)」を提供していることが明らかになりました。しかし、これらの洗練度の違いは、必ずしも基礎となるモデルの核心的な知能を向上させるわけではありません。独自のハーネスとサードパーティのハーネスの間には、重要なトレードオフが存在します。Claude Codeのようなラボ提供のツールには、安全指示やその他のオーバーヘッドを含む「肥大化した」システムプロンプトが含まれている可能性があり、それがAPIコストを増加させることがあります。場合によっては、特定の動作やパターンに合わせて調整された専門的なハーネスの方が、デフォルトのツールが優先順位を置いていない要素をカバーできるため、モデルを自身のネイティブなものよりも異なるハーネスと組み合わせた方が優れたパフォーマンスを発揮することもあります。
実用的な実装は、モデルがどのようにファインチューニングされたかにも依存します。新しいモデルは、ネイティブなハーネスのツール呼び出しでは優れた性能を発揮することが多いですが、一般的なハーネスのデフォルトに似たカスタムツールに対しては苦労する場合があります。例えば、Claude Codeのトレースで訓練されたモデルは、別のフレームワークの馴染みのあるパラメータ名を優先して、カスタムツールの定義を無視してしまう可能性があります。さらに、ハーネスの選択は、使いやすさと相互運用性の間のトレードオフを伴うことがよくあります。ラボ提供のハーネスはシームレスな体験を提供しますが、ユーザーがプロバイダーやモデルを切り替えたり、異なるセッション間で一貫したトランスクリプトを維持したりする能力を制限することが多く、これが開発者がサードパーティのフレームワークを選択する主な要因となっています。現在、これらのハーネスを幅広いオープンソースモデルと比較する信頼性の高い標準化されたベンチマークが不足しているため、あるフレームワークが別のフレームワークに対して正確にどれだけのパフォーマンス向上をもたらすかを定量化することは困難です。
