「うちのモデルはSWE-benchで◯◯%」という数字を見たとき、その裏で動いている「ハーネス」を気にしたことがあるだろうか。ハーネスとは、モデルにツールやシェル、ループ、プロンプトを与えて自律的に動かす足回りのことだ。同じモデルでも、この足回りの作り方ひとつでベンチマークのスコアは平気で数ポイント動く。ところがこのハーネスは各社のリポジトリの奥に埋もれていて、外からは中身が見えないことがほとんどだった。
そこにDeepSeekが8月13日、ちょっと珍しいものを出してきた。DeepSeek Harness(コマンド名は dsh)という、MITライセンスのエージェント基盤だ。何が珍しいかというと、これが「新しいモデルのおまけデモ」ではなく、DeepSeek自身が DeepSeek-V4-Flash のコーディングエージェント性能を測るのに社内で使っていた、その評価ハーネスそのものだという点にある(AlphaSignalの報道)。ベンチの数字を出した張本人の測定器を、丸ごと公開したわけだ。
モデルではなく「足回り」を配ってきた
Claude CodeやCodexのような既存のエージェントは、便利だが中身が固定された完成品として届く。DeepSeek Harnessの発想は逆で、公式ページの言葉を借りればこうだ。
Every capability is a plugin that can be swapped or recomposed: models, tools, skills, sessions, sandboxes, storage, loops, scheduling, and the UI.
モデルもツールも、あるいはエージェントの中核であるはずのループ処理やスケジューラまでもがプラグインとして差し替え可能になっている。この基盤は Cordis という「プラグインの空間的・時間的な合成」を扱うTypeScript製フレームワークの上に載っていて、プロセスを再起動せずにプラグインをマウント/アンマウントできる。依存性注入コンテナのエージェント版、とイメージすると近い。ソースを書き換えずに設定だけで能力を足し引きできる、という設計思想がここにある。
4つのモードと、ベンチマークの正体
dsh には4つの動作モードがある。実務上いちばん腑に落ちるのは、この一覧を見たときだ。
| モード | 中身 | 用途 |
|---|---|---|
| Standard | ファイル編集・シェル・検索・スキル・プランニング・サブエージェント全部入り | 通常のコーディング |
| Code | ツールを Code Mode SDK 経由で公開し、複数ステップを1本のTypeScriptで書かせる | 多段のツール呼び出し |
| Minimal | 永続bashと str_replace_editor の2ツールだけ |
ベンチマーク |
| Creator | Standard機能+ランタイム検査・プラグイン実験 | 独自プリセット作成 |
注目してほしいのは Minimal モードだ。「永続的なbash」と「文字列置換エディタ」という最小2ツール構成は、SWE-benchやTerminal-Bench系の評価でおなじみの、いわば素のエージェント足場そのままである。つまり冒頭で触れた「DeepSeekがベンチに使ったハーネス」の実体は、この飾りのないMinimalモードだと考えると筋が通る。派手なオーケストレーションで下駄を履かせていない構成で測っていた、と読み取れるのは公開されて初めて分かることだ。
1回のTypeScriptでツールを叩くCode Mode
個人的に面白いと思ったのが Code モードの考え方だ。従来のツール呼び出しは「1ターンに1回ツールを呼び、結果を見て次を決める」という往復の繰り返しになる。Code モードはこれを変えて、公開された Code Mode SDK を使い、モデルに複数ステップの操作を1本のTypeScriptプログラムとして書かせて一気に流す。ファイルを列挙してフィルタして書き換えて、といった定型の多段処理を、往復のオーバーヘッドなしにまとめられる。ツール呼び出しをJSONの往復ではなくコードとして扱う流れは各所で出てきているが、それを標準搭載のモードとして持ってきたのは実装として素直だ。
追記onlyのログを分岐・再生できる
もう一つ、地味だが効くのがセッションログだ。DeepSeek Harnessはエージェントが動くあいだ、システムプロンプト、推論、ツール呼び出しとその結果、サブエージェントのスケジューリング、そしてモデルに注入されたすべてのコンテキストを、追記onlyのログに記録する。このイベントストリームに対して resume(再開)・fork(分岐)・search(検索)・replay(再生)ができる。
エージェントは非決定的で、「なぜこの手を打ったのか」を後から追うのが本当に難しい。全コンテキストが残っていて、途中から枝分かれさせて別のモデルやツールで再生できるなら、デバッグと評価の再現性は段違いに上がる。ベンチマーク用の基盤としてこの記録・再生機構を最初から持っているのは理にかなっている。
試すなら
Node環境があれば、Web UIをその場で立ち上げられる。
npx @deepseek-ai/dsh web
デフォルトで http://127.0.0.1:3080 にUIが立つ。ソースから動かす場合はこうだ。
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
現時点はv0.1の開発者プレビューで、互換を壊す変更が続くと明記されている。腰を据えて依存するには早いし、DeepSeek自身のモデルに最適化されている面はあるだろう。それでも、ベンチマークの数字を出した当人が測定器をそのまま公開したという事実の価値は大きい。他社の「◯◯%」を検証したい人にとっても、自分のエージェント基盤をゼロから組みたくない人にとっても、覗く価値のあるリポジトリだと思う。ループもスケジューラもプラグインという割り切りが実運用でどこまで気持ちよく回るのか、そこは自分の手で確かめたい。
※本記事は一次情報の調査をAIが行い、事実確認のうえ執筆・公開しています。