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

エージェントハーネスとは、言語モデルを包み込み、テキスト生成器を「仕事のできる何か」に変えるランタイム層です。ループを回し、モデルにツールを渡し、何をコンテキストに入れるかを決め、セッションを永続的な場所に保ち、エージェントが触れてよい範囲を強制します。判断力はモデルが供給し、それ以外のすべてはハーネスが供給します。

ハーネスが実際にやっていること

エージェントを削ぎ落とすと 5 つの責務が残ります。どれ 1 つとして、モデル自身が担えるものはありません。

ループ。モデルの呼び出しは 1 回返って終わりです。エージェントは進み続けます。モデルを呼び、要求されたツールを実行し、結果を追記し、また呼ぶ——タスクが終わるか上限に達するまで。このサイクルこそハーネスの中核の仕事であり、あるハーネスと別のハーネスを分けるものの大半——どうリトライするか、いつ諦めるか、ステップを並列に走らせられるか——はループについての判断です。

ツール。ファイルを読む、コマンドを実行する、Web を検索する。ハーネスは何が使えるかを提示し、モデルが生成した引数を検証し、呼び出しを実行し、結果をモデルが読める形に整えて返します。

コンテキスト。どのモデルにも有限のウィンドウがあり、現実のタスクはそれを溢れさせます。何を残し、何を要約し、何を必要に応じて取り直すかを決めるのはハーネスの責務であり、エージェントが自分のやっていたことを忘れたとき、利用者が最も直接的に感じる部分でもあります。

セッション。何時間にもわたる、あるいは再起動をまたぐ作業は、どこかに存在し続けなければなりません。トランスクリプト、中間状態、再開する能力。永続化がなければ、手元にあるのはチャットウィンドウであってエージェントではありません。

権限。シェルコマンドを実行できるエージェントは、それ自体がセキュリティ上の面です。承認プロンプト、許可リスト、サンドボックス、ファイルシステムの境界はすべてハーネスに存在します。モデルは自らを取り締まると信頼できませんし、そもそもそのように設計されてもいないからです。

ハーネスでないもの

それはモデルではありません。モデルを差し替えればエージェントの推論の質は変わりますが、セッションが再開できるかどうか、あるコマンドに承認が要るかどうかは変わりません。それらはハーネスの性質です。同じモデルがあるツールでは有能に、別のツールでは頼りなく感じられるのは、そのためです。

IDE のプラグインでもありません。とはいえエディタ越しにハーネスと出会うことが多いので、両者は混同されがちです。エディタ拡張は表面です。あなたの要求を集め、出力を表示します。ハーネスはループ、ツールの実行、状態を所有する側です。よくできたハーネスは、同じセッションの上で複数の表面——CLI、Web インターフェース、エディタ——を駆動できます。目の前にあるのがハーネスかフロントエンドかを見分ける、良い判定法です。

DeepSeek Harness の実装

DeepSeek Harness——dsh——は DeepSeek AI が 2026 年 8 月 13 日に MIT ライセンスで公開したもので、上記のすべてに対して異例なほど字義どおりの立場を取ります: すべてがプラグイン。モデル、ツール、スキル、セッション、サンドボックス、ファイルシステム、ループそのもの、オーケストレーション、ユーザーインターフェースまで、すべてが 1 つの共有ランタイムに読み込まれるプラグインです。

そのランタイムが Cordis で、プラグインの読み込みと結線を仕事とするメタフレームワークです。@deepseek-ai/cordis はすべてのハーネスパッケージの peer dependency になっています。組み立ては、起動するプラグインとそのオプションを列挙する cordis.yml ローダー設定で行われ、--profile フラグが状況に応じたバンドルを選びます——同梱プロファイルには headless があります。

その結果、dsh ではアプリケーションと拡張の間に意味のある線が存在しません。サンドボックスを差し替えることは、構造的にはツールを 1 つ足すのと同じ行為です。だからこそ、大半のエージェントツールよりもプラグインディレクトリの重要性が高いのです。能力はコアではなくパッケージに宿っています。私たちは現在、dsh 関連トピックを持つ 7900 件のリポジトリを収録しており、そのうち 3942 件に実際のプラグイン結線があります——それらを見ることも、カテゴリ別にたどることもできます。繰り返しておく価値のある注意点が 1 つ: dsh は開発者プレビューであり、README は互換性を壊す変更が来ると警告しています。ここで説明したローダー形式はスナップショットであって、契約ではありません。

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

エージェントフレームワークは、それを使ってアプリケーションを作るライブラリです。ループのプリミティブ、ツールの抽象、メモリのヘルパーを渡し、プロダクトとしての判断はあなたに委ねます。プログラムを書くのはあなたであり、出荷するものもあなたのものです。

ハーネスはその判断をすでに済ませています。インストールすれば動きます。既定のループ、既定のツール一式、既定の権限モデル、昨日のセッションを再開する手段があります。ライブラリと製品の間にある、いつものトレードオフです——制御は減り、作るものはずっと減ります。

dsh はこの線の上で興味深い位置にいます。すぐ動かせるハーネスでありながら、あらゆる部分が汎用フレームワーク上のプラグインであるため、十分に執念深い利用者なら、大半のハーネスが固定とみなす部分まで差し替えられます。区別自体は成り立ちます——コードを一行も書かずに dsh を使えます——が、境界は通常より柔らかいのです。

ハーネスと MCP

MCP(Model Context Protocol)はハーネスと同じ文脈で語られがちですが、両者が解く問題は違います。MCP はプロトコルです。ツールやデータソースが自らをどう記述し、呼び出しにどう応答するかを標準化し、一度書いたサーバーをそれを話す任意のクライアントから使えるようにします。答えているのは「エージェントはどうやってそこに到達するか」です。

ハーネスが答えるのは「誰がループを回すのか、そしてそのツールはそもそもいつ呼ばれるのか」です。コンテキスト、権限、セッションを管理しますが、MCP はそのどれについても意見を持ちません。ハーネスは MCP クライアントになれます。その場合、MCP サーバーは提供する他のものと並ぶツールの供給元の 1 つになります。dsh エコシステムでの具体的な姿を見たければ、当ディレクトリの MCP とツールのカテゴリが、その境界に位置するプラグインを集めています。

よくある質問

ハーネスとモデルは同じものですか?
いいえ。モデルはテキストをさらなるテキストに変えるだけで、昨日の記憶も、ファイルへのアクセスも、何かを実行する能力も持ちません。ハーネスはその周りにあるプログラムで、モデルが何を見るかを決め、要求されたツールを実行し、結果を返し、仕事が終わったらループを止めます。
エージェントハーネスは API 呼び出しをラップしただけのものですか?
1 回の呼び出しはハーネスではありません。決定的な特徴はループです。ハーネスはモデルを呼び、モデルが要求したツールを実行し、結果を会話に加え、また呼ぶ——停止条件を満たすまで繰り返します。ハーネスにまつわる難しいことのすべて——コンテキスト管理、権限、セッションの永続化、エラー復帰——は、このループがあるから存在します。
ハーネスとエージェントフレームワークはどう違いますか?
フレームワークはそれを使ってアプリケーションを作るライブラリで、ハーネスはあなたが使う実行可能なプログラムです。フレームワークは部品を渡して判断をあなたに委ねますが、ハーネスはその判断をすでに済ませ、既定値として出荷しています。ハーネスが異常なほど設定可能なとき、この線は曖昧になります。DeepSeek Harness がまさにそれです。
エージェントハーネスは MCP を置き換えますか?
いいえ、両者は違う問いに答えます。MCP は、ツールやデータソースがエージェントに自らをどう見せるかを記述するプロトコルです。一方ハーネスは、ループを回し、そのツールがそもそも呼ばれるかどうかを決めるプログラムです。ハーネスは MCP クライアントとして振る舞えるので、両者は競合ではなく補完関係にあります。
DeepSeek Harness が他のハーネスと比べて特異な点は?
「すべてがプラグイン」という設計です。モデル、ツール、スキル、セッション、サンドボックス、ファイルシステム、ループ、オーケストレーション、UI がすべてプラグインとして共有の Cordis ランタイムに読み込まれ、cordis.yml で組み立てられます。大半のツールが固定の内部構造として扱う部分が、ここでは差し替え可能なパッケージになっているのです。

続けて読む

以上の考えを動くソフトウェアとして見たいなら、dsh をインストールしてください——npx コマンド 1 つで http://127.0.0.1:3080 に Web UI が立ち上がります。「すべてがプラグイン」のハーネスが、確立されたプロプライエタリ製品と比べてどうなのかを知りたいなら、dsh と Claude Code の初期比較をどうぞ。