概要
Sebastian Raschka氏が、単なるLLMを高度な開発ツールへと進化させる「エージェント・ハーネス」の設計思想と、リポジトリ文脈、キャッシュ、ツール利用、メモリ管理などの主要な6要素を解説。
詳細内容
### 概要
本記事では、Claude CodeやCodexのようなコーディングエージェントが、生のLLMや推論モデルとどう異なるのか、そしてそれらを支える「エージェント・ハーネス(制御フレームワーク)」の内部構造を詳細に解説しています。エージェントを「エンジン(モデル)を制御するループと周辺システム」と定義し、その実用性を左右する設計要素を紐解きます。
### 6つの主要コンポーネント
1. **ライブ・リポジトリ・コンテキスト**: Gitの状態やREADME、プロジェクト構造を把握し、作業の前提条件を自動的に収集します。
2. **プロンプト形状とキャッシュ再利用**: 命令やツール定義などの「不変部分」を効率的にパッケージ化し、トークン消費と遅延を抑制します。
3. **構造化されたツール利用**: 自由な出力を制限し、定義されたツールを通じて安全にファイル操作やコマンド実行を行います。
4. **コンテキスト肥大化の抑制**: 長大なログのクリッピング、古い履歴の要約、情報の重複削除を行い、トークン効率と精度を維持します。
5. **構造化されたセッションメモリ**: 全履歴の記録(Transcript)と、現在のタスクに特化した「作業メモリ」を分離して管理し、セッションの中断と再開を可能にします。
6. **サブエージェントへの委譲**: 特定の調査やテスト実行などのサブタスクを、境界を限定したサブエージェントに任せることで並行性を高めます。
### 結論
優れたコーディング体験は、モデル単体ではなく、リポジトリのナビゲーションやコンテキスト管理を担う周辺システム(ハーネス)の品質によって決まります。筆者はこれらの概念を実装した「Mini Coding Agent」をGitHubで公開しています。