ハーネスとは何か — モデルを「エージェント」に変える層

Claude Code、Cursor、Devin、OpenAI Codex——これらはいずれも、同じ系列の大規模言語モデル(LLM)を使いながら、振る舞いがまるで違います。 なぜでしょうか。答えは、モデルそのものではなく、モデルを取り囲むソフトウェア層にあります。この層を ハーネス(harness) と呼びます。

最も簡潔な定義は、Thoughtworks の Birgitta Böckeler が Martin Fowler のサイトで示したものです——ハーネスとは 「AIエージェントのうち、モデル自体を除くすべて(everything in an AI agent except the model itself)」。 そして LangChain の Vivek Trivedy が掲げた等式が、このシリーズ全体を貫く中心命題になります。

「harness」という英単語は、もともと馬具(馬を制御する装具)やソフトウェアのテストハーネス(テスト対象を駆動・観測する足場)を指す言葉でした。 AI の文脈では、この「対象を外から駆動・制御する足場」というメタファーがそのまま借用されています。 モデルが知性を提供し、ハーネスが手・目・記憶・安全境界を提供する——この役割分担を押さえると、エージェント開発の全体像が一気に見通せるようになります。

graph LR
  M[Model\nLLM本体\n推論・生成]
  H[Harness\nループ / ツール\nコンテキスト管理 / 権限]
  M --> A[Agent\n自律的に\nタスクを遂行]
  H --> A
  style M fill:#3b82f6,stroke:#1d4ed8,color:#fff
  style H fill:#8b5cf6,stroke:#6d28d9,color:#fff
  style A fill:#14b8a6,stroke:#0d9488,color:#fff
エージェントは「モデル」と「ハーネス」の合成物。モデルが知性を、ハーネスが手・目・記憶・安全境界を担う

ワークフローとエージェント — 区別が出発点

ハーネスを設計する前に、そもそも「エージェント」とは何かを明確にする必要があります。 Anthropic は影響力の大きい記事「Building Effective Agents」(2024年12月、Erik Schluntz・Barry Zhang)で、両者を次のように区別しました。

観点 ワークフロー (Workflow) エージェント (Agent)
制御構造 LLMとツールを事前定義されたコードパスで編成 LLMが自分のプロセスとツール使用を動的に方向づける
経路の決定 人間が設計時に固定 モデルが実行時に判断
向くタスク ステップ数が予測できる定型処理 必要なステップ数が読めないオープンエンドな問題
コスト/速度 予測可能・低コスト レイテンシ・コストを性能と引き換えにする

重要なのは、Anthropic 自身が「多くのユースケースでは、検索とインコンテキスト例で単一のLLM呼び出しを最適化すれば十分」と述べている点です。 「エージェントを作る」と言っても、実際には固定パスのワークフローで足りる場合が大半なのです。 ハーネス設計の第一歩は、エンジニアリングの常として「本当に動的なエージェントが必要か」を見極めることにあります。

テーゼ — 「ハーネスはモデルと同じくらい重要」

なぜハーネスにこれほど注目するのか。理由は、同じモデルでもハーネス次第で性能が大きく変わるという、繰り返し観測される事実にあります。 Anthropic は SWE-bench(実際のGitHub課題でコード修正能力を測るベンチマーク)に関する記事で、こう明言しています—— 「エージェントの性能は、同じ基盤モデルを使っていても、このスキャフォールド(足場)次第で大きく変わりうる」。

この考えを最も鮮明に言い表したのが、Google の Addy Osmani です。

具体的な証拠は後の章で詳しく見ます(第5章のSWE-agentでは、モデルを変えずにインターフェース設計を改善しただけで解決率が3.8%から12.5%へ跳ね上がりました。第9章では論争の反証側も含めて検証します)。 ここではまず、「モデル選びと同じくらい、ハーネス設計が成果を左右する」という視点を持つことが出発点になります。

ハーネスの解剖 — 何でできているか

では、ハーネスは具体的に何で構成されるのでしょうか。Vivek Trivedy の整理によれば、ハーネスは次の要素から成ります。 この一覧は、そのまま本シリーズの章立てに対応しています。

ハーネスの構成要素 役割 対応する章
システムプロンプト モデルの振る舞いを規定する最上位の指示 第3・4章
ツール / スキル / MCP とその記述 外界と相互作用する手段 第5章
同梱インフラ(FS・サンドボックス・ブラウザ) 永続状態と安全な実行環境 第7章
オーケストレーション論理(サブエージェント生成・ルーティング) 作業の分解と委譲 第6章
フック / ミドルウェア(compaction・継続・lint) 決定論的な制御の差し込み 第3・4・7章

注目すべきは、これらの要素がいずれも「モデルが単独ではできないこと」を補うために存在する点です。 Anthropic は「ハーネスのあらゆる構成要素は、モデルが単独ではできないことについての前提を符号化している」と述べ、 Osmani も「各ハーネス機能は、モデルが単独では実現できない振る舞いから導出される」と続けます。 この「失敗から逆算してハーネスを組む」という発想は、第10章で再び重要になります。

なぜ2026年に「規律」になったのか

ハーネスという考え方自体は新しくありません(歴史は第2章で辿ります)。しかし「ハーネスエンジニアリング」という名前を持つ独立した規律として語られるようになったのは、2026年に入ってからです。 背景には、エンジニアの関心の進化があります。

graph LR
  P[プロンプト工学\n良い指示文を書く] --> C[コンテキスト工学\n文脈を最適に\nキュレーションする]
  C --> HE[ハーネス工学\nモデル以外の\nすべてを設計する]
  style P fill:#3b82f6,stroke:#1d4ed8,color:#fff
  style C fill:#8b5cf6,stroke:#6d28d9,color:#fff
  style HE fill:#f97316,stroke:#ea580c,color:#fff
関心の進化: プロンプト工学 → コンテキスト工学 → ハーネス工学。扱う範囲が単発の指示から実行系全体へ広がった

象徴的なのは、わずか数週間のあいだに独立した権威筋が相次いでこのテーマを論じたことです。 LangChain(Trivedy、3月10日)、Anthropic(「Harness design for long-running application development」、3月24日)、 Martin Fowler のサイト(Böckeler、4月2日)、Addy Osmani(4月19日)—— この同時多発性こそ、用語が業界に定着したことの証左だと言えます。 GitHub には「awesome-harness-engineering」のようなコミュニティ集約も生まれました。

理解度チェック

問題 0 / 40%
Q1

このシリーズが掲げる中心命題「Agent = Model + Harness」における「ハーネス」の説明として最も適切なものはどれですか?

キーボード: 1〜4 で選択、Enter で回答