SSD Nodes Learn Hosting plans →
ガイド Matt Connor著者 Matt Connor ・更新日 2026-08-27

エージェントハーネスとは?モデルやフレームワークとの違い

エージェントハーネスは、モデルを動かすループ、ツール、権限、セッション状態を管理するプログラムです。モデルやフレームワークとの違いを、Claude CodeやDeepSeek Harnessの例で整理します。

エージェントハーネスとは

エージェントハーネスは、言語モデルの周囲で動作し、モデルをエージェントとして機能させるプログラムです。モデルを繰り返し呼び出すループ、モデルが呼び出せるツールの定義、呼び出しを実際に実行するかどうかを決める権限ルール、ターンをまたいで保持されるセッション状態、作業を行う作業ディレクトリを管理します。内部のモデルは交換できます。

最後の文が重要です。モデル単体では、質問に答えるとユーザーのことを忘れます。ハーネスはモデルに次に行うことを尋ね、モデルが要求したコマンドを実行し、結果を返して、再び尋ねます。この反復を指して「エージェント」と呼びます。周辺の用語がまだ曖昧であれば、AI エージェント、LLM、アシスタントの違いで用語を整理してからツールを選べます。

ハーネスはモデルではありません

ベンダーが両者を1つのブランド名で提供するため、混同されます。

dshとDeepSeekは別の製品です。13 August 2026にMITライセンスでgithub.com/deepseek-ai/deepseek-harnessから公開されたDeepSeek Harnessは、マシンにインストールするNodeプログラムです。DeepSeekモデルは、API(application programming interface)の背後で提供される重みです。dshに別のベンダーのモデルを指定しても動作します。ハーネスが必要とするのは、メッセージを受け取り、ツール呼び出しを返すものだけだからです。

Claude CodeとClaudeも同じ関係です。Claude Codeはハーネスです。ループ、権限システム、ファイルおよびシェルのツールを備えたターミナルプログラムです。Claudeは、Claude Codeがデフォルトで呼び出すモデルファミリーです。CodexとGemini CLIも同じように分かれています。

毎回このテストを行えば、違いを確実に判断できます。ハーネスをインストールします。モデルを呼び出します。ディスク上にバージョンがあり、ホームディレクトリに設定ファイルがあるものはハーネスです。その設定ファイル内の文字列、たとえばdeepseek-chatのようなものがモデルです。

ループで実際に行われる処理

ハーネスのループが 1 回進む流れは次のとおりです。ハーネス間の違いのほとんどは、この 5 つの手順の内部にあります。

  1. ハーネスは、それまでの会話とツール定義の一覧をモデルに送信します。
  2. モデルはテキストを返すか、いずれかのツールを呼び出す要求を返します。
  3. ハーネスはその要求を権限ルールと照合し、実行するか、停止してユーザーに確認を求めます。
  4. ハーネスはツールを実行し、出力と終了コードを取得します。出力が非常に長い場合は切り詰めます。
  5. ハーネスはその結果を会話に追加し、手順 1 に戻ります。

日常の使用感で最も大きな違いが出るのは手順 3 です。すべてのコマンドの前に確認を求めるハーネスは安全ですが、操作の負担が大きくなります。確認を一切求めないハーネスは、モデルが誤ったパスに対して破壊的なコマンドを実行することがあります。現在の本格的なハーネスには、確認なしで実行するコマンドの allowlist と、それ以外のコマンドを確認するプロンプトを組み合わせた中間設定があります。

残りの違いは、主に手順 1 で生じます。ハーネスは各リクエストに付随する system prompt も書き換えます。Claude Code では、その調整項目を直接操作できます。これは、出力スタイルが送信する system prompt を編集するため、返されるすべての応答が変わるからです。会話はループのたびに増えますが、モデルの context window には上限があります。そのためハーネスは、何を削除し、何を要約し、何をファイルに書き出して後で読み戻すかを決める必要があります。同じモデルを操作する 2 つのハーネスが異なる品質の成果を生む主な理由は、この判断にあります。この 5 つの手順がまだ抽象的に感じられる場合は、自分で簡単なループを 1 度書いてみると理解しやすくなります。これは、AI agent の学習用に段階的な構成を構築する方法で早い段階に行う作業そのものです。

現在の多くのハーネスは、MCP (model context protocol) 経由で外部ツールを接続します。これは、MCP に対応する任意のハーネスへツールを公開する標準的な方法であり、1 つの統合を複数のハーネスで利用できます。VPS 上で MCP server を実行する方法では、この側面を扱います。通常、最初に追加されるツールは Web search です。自分の SearXNG instance に agent を接続する方法を使うと、検索クエリを第三者に送信せずに済みます。また、agent がその後に読み込むすべてのページは、ループ内に到着する信頼できない入力であることも明確になります。

エージェントハーネスとエージェントフレームワーク

この疑問は、新しいハーネスが登場するたびに出てきます。しかし、ベンダーの見解が一致していないため、回答も一致しません。ここでは、実際の運用に耐える整理を示します。

フレームワークは、import して使用するライブラリです。ループを自分で記述し、モデルを呼び出すタイミングを決め、ツールの結果を自分で処理します。よく知られた例は LangChain です。構成要素が提供され、それらをコードで組み合わせてエージェントを構築します。

ハーネスは、実行するプログラムです。ループはあらかじめ実装され、ツールも用意され、権限モデルにもデフォルト設定があります。最初のコマンドで動作するエージェントを使用でき、その後で設定を調整します。

通常は、インストール後の作業で判断できます。インストール後にコードを書くなら、それはフレームワークです。インストール後に対話するなら、それはハーネスです。

この境界については実際に見解が分かれており、最も明確な根拠は LangChain 自身のドキュメントです。2026 年 8 月時点で、同ドキュメントは Deep Agents を LangGraph 上に構築された「意見の反映された、必要な機能をすべて含む」フレームワークと説明しています。一方、langchain-ai/deepagents リポジトリは自らを「必要な機能をすべて含むエージェントハーネス」と称しています。どちらの説明も妥当です。Deep Agents は import して使用する Python SDK (software development kit) であるため、インストールテストではライブラリに分類されます。しかし、十分なデフォルト動作が組み込まれているため、ハーネスのように使用されています。Microsoft は 2026 年 8 月にハーネスとホスト型エージェントを一般提供したため、この言葉が単なる専門用語ではなく、製品カテゴリになったことが分かります。

そのため、代わりに作業量を予測できる質問をしてください。ループを自分で記述する場合、そのループの責任を負います。リトライ、コンテキストの削減、権限確認のプロンプト、実行内容の記録を管理する必要があります。ループが製品に組み込まれている場合は、それらすべてについて他者が決めた方式を引き継ぎます。開始は大幅に速くなりますが、後から変更するのは難しくなります。

チャットウィンドウとharnessの違い

チャットウィンドウとharnessは、どちらもモデルの出力を表示します。違いは、処理がどのコンピューター上で実行されるかです。チャットウィンドウでは、モデルが実行するコードはベンダーのsandbox内で、アップロードしたファイルを対象に実行され、セッション終了時に消去されます。harnessでは、起動したマシン上で、起動したユーザーとしてツールが実行され、実際のファイルを対象に、環境内の実際の認証情報を使用します。

これが利点のすべてであり、リスクのすべてでもあります。エージェントは、ようやく作業を実行できます。同時に、作業内容を削除することもできます。

実際に使われているハーネス

この一覧の日付を 19 August 2026 としているのには理由があります。この分野は毎週のように変化するため、まとめ記事はすぐに古くなります。

  • Claude Code と Codex はベンダー製のハーネスです。ターミナルを中心に動作し、デフォルトでは各ベンダー独自のモデルと連携し、権限管理が最も洗練されています。Claude Code、Cursor、Codex、Copilot の比較で詳しく説明しています。
  • DeepSeek Harness (dsh) は MIT ライセンスで提供され、「すべてがプラグイン」という考え方に基づいています。モデル、ツール、セッション、サンドボックス、ユーザーインターフェースをすべて交換可能な部品として扱います。インストールした各プラグインはエージェント自身の権限で実行されるため、固定されたツールセットを使うハーネスよりも、追加前に dsh プラグインがアクセスできる範囲を確認する方法が重要です。公開から 6 日後の 19 August 2026 時点で、GitHub のスター数は約 166,800 でした。
  • Nous Research の Hermes は、コーディングツールではなく汎用の自律エージェントです。2026 年 2 月に MIT ライセンスで公開され、メモリとスキルを自分のマシン上のローカル SQLite データベースに保存します。VPS 上で Hermes をセルフホストする方法で手順を説明しています。
  • Omnigent はメタハーネスです。Claude Code や Codex などの他のハーネスを、共有セッション、支出上限、オペレーティングシステムレベルのサンドボックスを備えた 1 つの API の背後で操作します。マルチエージェントハーネスとしての Omnigentで、その利点を説明しています。
  • OneCLI はチーム向けのサンドボックス化されたハーネスです。ゲートウェイを介して送信リクエストに実際の認証情報を注入し、エージェント自身にはプレースホルダーのキーしか見せない構成です。

このうち 3 つは同じ候補として比較されることが多いため、DeepSeek Harness、Claude Code、Omnigent の比較で、モデルとの結合、ライセンス、成熟度、サーバー上で動かすために必要なものを確認する価値があります。

dsh のクイックスタートは 1 つのコマンドで実行できます。1 回実行するだけで、ハーネスとは何かを最も早く確認できます。マシンに Node.js が必要です。

npx @deepseek-ai/dsh web

これにより、Web UI(ユーザーインターフェース)が http://127.0.0.1:3080 で起動します。利用を前提にする前に README を読んでください。dsh 自身が developer preview であると説明しており、互換性を損なう変更が発生すると明記しています。最初のコマンドが完全に失敗する場合や、想定していないビルドを取得した場合は、dsh の正確なバージョンを固定し、npx のキャッシュを削除する方法で通常は再び動かせます。VPS 上で DeepSeek Harness を実行する方法ではサーバーへのインストールを扱い、そのアドレスが 127.0.0.1 で始まる理由ではループバックのデフォルト設定を説明しています。

ハーネスの上位にルーターを置く

モデルルーターは、ハーネスとプロバイダー API の間に置くローカルプロキシです。一般的な例は Claude Code Router です。デフォルトでは 127.0.0.1:3456 にバインドし、Claude Code が本来ベンダーへ送信するリクエストを受け付け、設定したプロバイダーへ転送します。ハーネス側は何も変更されていないように動作します。

モデルを交換できるためルーターが存在しており、このことはこの記事の主張を示すよい例です。一方で、プロキシはすべてのプロンプトを参照し、すべてのプロバイダーキーを保持するため、リスクが集中します。単なる便利機能ではなく、インフラストラクチャとして扱ってください。ハーネスが API キーとモデル設定を保持する場所も、1 層下で発生する同じ問題です。

VPS 上でハーネスを実行すると何が変わるか

ハーネスをノート PC から、借りたサーバー上へ移すと、4 つの点が変わります。

蓋を閉じても実行が続きます。 長時間のタスクは、移動中もバッテリー切れ後も継続します。tmux 内で起動し、そこから切り離します。

tmux new -s agent
# start the harness, then press Ctrl-b and then d to detach
tmux attach -t agent

再起動後も復帰させる必要がある処理では、ターミナルセッションよりユーザーサービスが適しています。

loginctl enable-linger $USER
systemctl --user status my-agent.service

loginctl enable-linger が見落とされがちな部分です。これがないと、最後の SSH (secure shell) セッションを閉じた時点で systemd がユーザーのサービスを停止するため、ログアウトするとエージェントも終了します。しかも、エラーは出力されません。systemd で dsh をヘッドレス実行する に unit ファイルがあります。そのサーバー上で 1 つのセッションを動かしていれば、2 つ目を追加しても負荷はほとんど増えません。また、同じホスト上の 2 つの Claude Code セッションで相互にメッセージを送る こともできます。そのため、朝に起動したセッションから、手動で中継せずに別のセッションへジョブを渡せます。

キーを保持します。 プロバイダーのキーは、そのサーバー上の設定ファイルに保存されます。誰が読み取れるかを確認します。

ls -l ~/.config

ユーザーとして実行されるプロセスは、そのファイルを読み取れます。エージェントと、エージェントが実行するプロセスも含まれます。

他のマシンへ接続できます。 他のホストと同じプライベートネットワーク上にある VPS なら、エージェントからそれらのホストへ到達できます。これが VPS を使う目的ですが、同時に影響範囲にもなります。

どこからでも到達できます。 多くのハーネスは Web UI を公開し、多くの場合、理由があって loopback に bind します。設定を確認してください。

ss -tlnp | grep 3080

127.0.0.1:3080 は、サーバー自身だけが接続できることを意味します。0.0.0.0:3080 は、アドレスを見つけた誰でも接続できることを意味します。bind アドレスを変更するのではなく、SSH トンネル経由で loopback UI に接続します。

ssh -N -L 3080:127.0.0.1:3080 you@your-server

次に、ノート PC のブラウザーで http://127.0.0.1:3080 を開きます。トラフィックは SSH セッション内を通るため、インターネットに新たな接続先を公開せずに済みます。

それらはすべて、セキュリティ上の根拠にもなります

攻撃者の視点で、4 つの特性をもう一度確認してください。

自動で動作するため、モデルがパスを誤って解釈した瞬間を監視する人はいません。鍵を保持するため、読み取り可能な設定ファイルが 1 つあるだけで、プロバイダーのアカウント全体にアクセスされます。他のマシンに接続できるため、プロンプトインジェクション、つまりエージェントが読む Web ページやファイルに埋め込まれた指示によって、データベースホストへの経路が生じます。どこからでも到達できるため、パスワードなしで 0.0.0.0 にバインドされた Web UI は、パブリックインターネット上に公開されたシェルと同じです。

どの場合も対策は地味で、毎回同じです。自分のアカウントではなく、エージェント専用の非特権ユーザーアカウントを用意します。

sudo adduser --disabled-password --gecos "" agent

Web UI は loopback に限定し、SSH 経由でアクセスします。ジョブを完了できる範囲で最も権限の狭い認証情報をエージェントに与えます。AI エージェントからシークレットを遠ざける方法については、別途詳しく説明します。自分が監視していない間に動作するものには、慎重に構成したマシンよりも使い捨てのマシンが適しています。使い捨て VM でコーディングエージェントを実行する方法と、VPS 上で Claude Code を安全に実行する方法はいずれも、この方針を採用しています。

エージェントハーネスは必要ですか?

作業が一度に1つの質問へ回答するだけなら、チャットウィンドウで十分です。ハーネスを導入しても、監視が必要なループが増えるだけです。実ファイルを対象に多くの手順を実行するタスクや、ユーザーが不在の間も処理を継続する必要があるタスクでは、ハーネスの導入効果が現れます。

この分野の多くはまだ新しい段階です。dsh は、2026年8月時点の README で developer preview と明記しています。他の製品も非常に速く変化しているため、今日作成した設定ファイルを来月修正する必要が生じる場合があります。そのため、構成は小さく再現可能に保ち、変更内容を記録してください。この慎重な方針はループ内でも有効です。動作する最小限の変更をエージェントに促すスキルを使えば、無人実行の終了後にも実際に読み取れる差分が残ります。まずは1台のサーバーに1つのハーネスを導入し、1つのジョブと1つの限定的な鍵だけを与えてください。最初のジョブが1週間問題なく実行されてから、アクセス範囲を広げます。最初に導入するハーネスを選ぶ際は、現在運用する価値のあるセルフホスト型エージェントが参考になります。

FAQ

エージェントハーネスとは、簡単に言うと何ですか?

モデルを取り囲むプログラムです。モデルはテキストを生成し、ツールの使用を要求します。ハーネスは、モデルに繰り返し要求を送るループを実行し、モデルが要求したツールを実行し、どのツールを許可なしで実行できるかというルールを適用します。また、ターンをまたいでセッションの状態とファイルを保持します。モデルを入れ替えてもハーネスが動作することが、両者が別のものであることを示す最も明確な例です。

Claude Code はモデルですか、それともハーネスですか?

Claude Code はハーネスです。ループ、権限システム、組み込みのファイルおよび shell ツールを備えた端末プログラムです。Claude は、デフォルトで呼び出されるモデルファミリーです。同じ分離は DeepSeek Harness (dsh) にも当てはまります。これはインストールする Node プログラムであり、DeepSeek models は API 経由で提供されます。ハーネスはマシンにインストールします。モデルはネットワーク経由で呼び出します。

エージェントハーネスとエージェントフレームワークの違いは何ですか?

フレームワークは、import してコードから利用するライブラリです。そのため、ループ、リトライ、コンテキスト処理は自分で管理します。ハーネスは実行するプログラムです。そのため、これらの機能はデフォルト設定とともに組み込まれており、コードを書くのではなく設定します。実際には境界が曖昧です。LangChain's Deep Agents は import 可能な SDK ですが、2026 年 8 月時点で、そのリポジトリ自身が batteries-included agent harness と呼んでいます。自分でループを書くのかどうかを確認してください。その答えによって、状況に適した用語が決まります。

エージェントハーネスの実行に VPS は必要ですか?

いいえ。ここで挙げたすべてのハーネスは laptop 上で実行できます。サーバーを使うと、4 つの点が変わります。蓋を閉じてもエージェントが実行を継続します。常時稼働するマシンに鍵を保持できます。他のサーバーへ接続できます。どのデバイスからでも同じセッションに戻れます。これらはすべてセキュリティ上の考慮事項でもあります。そのため、エージェント専用のユーザーアカウントを用意し、Web UI は 127.0.0.1 に bind したままにしてください。

同じハーネス内で別のモデルを使用できますか?

通常は使用できます。これがハーネスの定義上の特性です。多くのハーネスでは、設定にモデル名と base URL を指定します。そのため、別の provider に向ける場合も、書き直しではなく設定の編集で済みます。ハーネス側で変更できない場合は、Claude Code Router などの local router をハーネスと provider の間に配置し、要求を変換できます。デフォルトでは 127.0.0.1:3456 に bind します。この proxy には注意してください。すべての prompt を参照でき、すべての鍵を保持するためです。