LangChain のブログに掲載されたこの記事で、Vivek Trivedy は エージェントハーネス の定義を示し、それを使って今日のエージェントに見られる構成要素がなぜ存在するのかを説明している。定義は「Agent = Model + Harness」、そして「モデルでないなら、それはハーネスである」という言葉に凝縮されている。つまりハーネスとは、モデルそのもの以外のあらゆるコード、設定、実行ロジックのことである。この説明によれば、素のモデルはエージェントではなく、ハーネスが状態、ツールの実行、フィードバックループ、強制可能な制約を与えたときにはじめてエージェントになる。著者はこれを、境界の引き方として自分の意見では最も明快なものだと述べている。モデルの知能を中心にシステムを設計することを強いるからである。

本文は、望ましいエージェントの振る舞いからハーネスの機能へと逆算していく構成になっており、「望む(あるいは直したい)振る舞い → モデルがそれを実現するのを助けるハーネスの設計」というパターンに従っている。その出発点は、モデルはデータを受け取ってテキストを出力するものであり、そのままでは永続的な状態を保持することも、コードを実行することも、リアルタイムの知識にアクセスすることも、環境をセットアップすることもできない、という点である。

要点

  • ハーネスには、システムプロンプト、説明文を伴うツール・スキル・MCP サーバー、ファイルシステム・サンドボックス・ブラウザといった同梱のインフラストラクチャ、サブエージェントの起動・ハンドオフ・モデルルーティングといったオーケストレーションのロジック、そしてコンパクション・継続・lint チェックといった決定論的な実行のためのフックやミドルウェアが含まれる。
  • 記事は、ファイルシステムをおそらく最も基礎的なハーネスのプリミティブだとしている。ファイルシステムはエージェントに作業スペースを与え、作業内容をコンテキストに保持する代わりにオフロードできるようにし、複数のエージェントと人間の協働の場としても機能する。Git はそこにバージョン管理を加える。
  • bash ツールがあれば、モデルはあらかじめ用意された固定のツール群に頼るのではなく、コードを書いて実行することで問題を解決できる。記事は、コードの実行が自律的な問題解決のためのデフォルトの汎用戦略になったと述べている。
  • サンドボックスは、必要に応じて作成・破棄できる、安全で隔離されたコードの実行場所をエージェントに与える。ハーネスはそのデフォルトのツール群、すなわちランタイム、git やテスト用の CLI、ブラウザなどを設定する責任を負い、エージェントが自分の作業を観察し検証できるようにする。
  • モデルの重みを編集せずに知識を加える唯一の方法は、コンテキストへの注入である。開始時に読み込まれる AGENTS.md のようなメモリファイルや、知識のカットオフ以降の情報を得るための Web 検索や MCP ツールがそれにあたる。
  • コンテキストロット への対策として、記事はハーネスを主として優れたコンテキストエンジニアリングを届けるための仕組みだと位置づけ、コンパクション、ツール呼び出しのオフロード、そして 段階的開示(Progressive Disclosure) を用いて開始時に大量のツールが読み込まれるのを防ぐ Skills を挙げている。
  • 長期にわたる作業に対しては、ファイルシステムと git、Ralph Loop、計画、そしてフックがテストを実行して失敗をモデルにループで戻す自己検証を組み合わせる。
  • Claude Code や Codex のようなエージェント製品は、ハーネスをループに組み込んだ状態で事後学習されており、記事によればそれがモデルをそのハーネスに過学習させることがある。記事は、あるタスクに最適なハーネスは必ずしもモデルが学習に使われたハーネスではないと主張し、Terminal Bench 2.0 のリーダーボードで、Claude Code 上の Opus 4.6 のスコアが他のハーネス上の Opus 4.6 を大きく下回っていることを指摘している。
  • 記事は、今日ハーネスが担っている役割の一部はいずれモデルに吸収されると予想しつつも、プロンプトエンジニアリングがそうであったように、ハーネスエンジニアリングも有用であり続けると主張している。

背景

この記事はハーネスを提供するベンダーの内側から書かれている。締めくくりでは、チームがこの取り組みを適用している場として LangChain の Deep Agents ライブラリを挙げ、現在探究している未解決の課題を列挙している。共有コードベース上で数百のエージェントをオーケストレーションすること、エージェントが自分のトレースを分析してハーネスレベルの失敗を修正すること、ツールとコンテキストをジャストインタイムで組み立てるハーネスである。また、LangChain の以前の成果にも触れている。ハーネスだけを変更することで、自社のコーディングエージェントを Terminal Bench 2.0 のトップ 30 からトップ 5 に引き上げたというものである。エージェントハーネス も参照。