最終確認は 2026年9月11日。DeepSeek Harness 公式リポジトリ、Skills サブシステム、Process Sandbox 文書に基づきます。
DeepSeek を Claude や Gemini に替えても、会話は良くなることがあります。現場で同じ場所に落ちる理由は変わりません。モデルがツールを呼び、ファイルを直し、スクリプトを回すのに、「なぜその一歩が起きたか」「再現できるか」「どこに書いたか」「再実行してよいか」を誰も説明できない。2026年の Agent の瓶颈は「誰が上手に答えるか」ではなく、誰が仕事を安全に終わらせるかです。
先に結論です。モデルは次の意図を決めます。Harness はループ、セッション、プラグインの組み立てを持ちます。Skill は手順書を必要なときだけ読み、システムプロンプトに全部詰め込まない。Sandbox は、その一回の子プロセスが触ってよいファイルを決め、隔離できないなら黙って素の実行へ落とさず失敗します。どれかが欠けるとデモは通り、監査は通りません。
ツール呼び出しが止まらなくなった経験があるなら、失敗の形はほぼ同じです。本サイトの Kimi K3 の Tool Calls 循環対策 も、メッセージ列と再実行の規律を先に直します。フィールド名が違うだけで、モデルを替えてもループは自己修復しません。
モデルを替えても直らない三つの崩れ方
「強いモデル」を Agent 計画そのものにすると、だいたい三か所で同時に壊れます。ベンダーを変えても直りません。
一つ目は信頼できないループ記憶です。実作業は一覧、読み取り、修正、テストを何度も往復します。履歴がプロセス内の配列だけだと、再起動や画面更新でモデルの作業記憶が消えます。調査する人も同じイベントログを読めず、チャットのスクリーンショットで推測します。
二つ目は手順書の過負荷です。リリース規則、スタイル、チケット手順を全部システムプロンプトへ貼ると、窓が埋まり、手順が抜け、「必ず守れ」を足すほどうるさいだけになります。普段はカタログだけ見せ、着手した Skill の本文だけ読めば足ります。
三つ目は閉じ込めのない副作用です。シェルが使えればリポジトリ外へ書けます。秘密ファイルを触り、失敗した半成品をディスクに残せます。「するな」と書いたプロンプトは制御面ではありません。
コンテキストを広げても直りません。悪い手順書が長く居座るだけです。ループとファイル境界は実行層の仕事です。セッションを残す話は、記憶データベースの選定とも重なります。長期記憶をどこに置くかは AI Memory 向けデータベースの比較 側の問題で、Harness の Session Log は「この一回の作業を再現できるか」の問題です。混ぜない方が判断が速いです。
Harness が引き受けるもの
DeepSeek Harness(dsh)はチャット画面ではなく、オープンソースの Agent Harness です。公式の言い方は Everything is a Plugin で、モデル接続、システムプロンプト、ツール登録、セッションログ、Agent インタフェース、既定ループが差し替え可能なパッケージになり、Cordis で組みます。リポジトリは開発者プレビューのままです。破壊的変更はあり得ます。それでも「実行層が何を持つべきか」を見る材料にはなります。
実測で Harness が肩代わりするのは次の三つです。
- 次の一歩を誰が回すか。既定の
agent-loopはAgent契約の実装の一つです。プラグインは既定ドライバではなくインタフェースに依存します。目標が曖昧なら開放ループ、承認がある業務は外側を確定ワークフローにします。 - 再建できるセッション。次のモデル要求は Session Log から導けるべきです。一時配列ではありません。生のチャンクを残すのは再生、画面、調査のためです。
- 上書きできる組み立て。Profile、Bundle、Patch が実行時のプラグイン木になります。モデル提供者やサンドボックス、UI を替えるなら、コアを複製する前に Patch です。
dsh --profile web --dump-configで実際に起動する木を見られます。
つまり Harness はモデルを賢くしません。誰が次を回すか、履歴はどこにあり、どの継ぎ目を差し替えてよいかに答えます。これが無いと Skill の注入時点が定まらず、Sandbox の呼び出し元も定まりません。
Skill が引き受けるもの
公式の Skill は任意の指示であり、セッションイベントではありません。モデルが普段見るのはカタログだけです。並び替えた name と、切り詰め・エスケープした description(既定上限 500)です。本文、パス、出所、ルーティングヒントは先にプロンプトへ入りません。着手するとモデルは skill({ name }) を呼び、枠組みがセッションの cwd で勝った Skill を解決して正規の結果を返します。
ローカル Skill の名前は kebab-case です。ディレクトリ束の SKILL.md か、平坦な Markdown です。入れ子の **/SKILL.md 再帰発見はサポートされません。ローカル提供者は順位どおり根を見ます。プロジェクトの .dsh/skills が最先、次が .agents/skills、その後がカスタム、ユーザー、同梱です。プロジェクト根は最も近い Git 根で、無ければ cwd 自身です。
この層が答えるのは「手順書はいつ出るか」です。リリース点検やテスト修正手順を Skill にすれば、その仕事のときだけ本文が載ります。本文を直しても古いツール結果は書き換わりません。カタログは熱更新できますが、未完了の発見で前回の使えるカタログを潰してはいけません。
Skill は権限システムではありません。やり方を教えるだけで、ワークスペース外への書き込みを許すかどうかは決めません。Sandbox が無いと、よく書けた「デプロイ Skill」ほど危険です。危険な手順が実行しやすくなるからです。
Sandbox が閉じ込めるもの
公式の Process Sandbox が見るのは同じホストの子プロセスが起こすファイル副作用です。ネットワークもプロセス可視性もこの語彙の外です。コンテナ、microVM、遠隔実行は別の能力の継ぎ目であり、ctx.sandbox の実装ではありません。ローカル提供者は Linux で bwrap / Landlock、macOS で Seatbelt、Windows で制限トークンと ACL です。
モードは三つで、隔離提供者に渡せるのは最初の二つだけです。
read-onlyは書き込みを拒みます。POSIX 実行器はシェルが要る/dev/nullだけ足します。workspace-writeは、セッションの不変 cwd と、バックエンドが約束した一時領域への書き込みを許します。danger-full-accessは隔離を飛ばします。呼び出し側が元の argv を直接起動し、ctx.sandboxは呼びません。
実験で効く規律は閉じた失敗です。隔離を求めたのに使えるバックエンドが無ければ SANDBOX_UNAVAILABLE を投げ、黙った素通しは禁止です。方針は呼び出しごとに決まるので、bash を読み取り専用のまま、子 Agent の状態ディレクトリだけ書けます。失敗も二つに分けます。ランナーが起きなかったのか、隔離が働いて書き込みを止めたのか。前者は基盤、後者は Sandbox の成功です。
強制の完全性は full か partial です。古い Landlock や Windows ACL の一部境界はいま partial です。絶対約束が要るなら、partial をロック済みと見ないでください。
一つのタスクで三段がつながる順番
「落ちたテストを直してパッチを出す」を開くと、抽象が消えます。
- Harness が Session Log から文脈を再建し、見える Skill カタログ(名前と説明だけ)を入れます。
- モデルは記憶で手順を作らず、
repo-test-patchのような Skill を先に読みます。 skillツールがこの cwd の本文を読み直し、指示と相対リソースの案内を返します。- モデルがファイル読みやテスト実行を頼み、Harness がツール管を回し、Sandbox が今回の方針で argv を包みます。
- 結果は Session Log に戻ります。次の一歩はログから導きます。「たぶんやった」という大域変数からではありません。
Harness が無いとカタログ注入も結果の定着も不安定です。Skill が無いとシステムプロンプトがマニュアルで溢れます。Sandbox が無いと、分かりやすい Skill は分かりやすい権限昇格ガイドです。三段は補完であり、同じ機能の別名ではありません。
起動と最初の Skill
公式の最短は npx @deepseek-ai/dsh web で、既定は http://127.0.0.1:3080 の Web UI です。ソースからなら clone のあと pnpm install && pnpm run build && pnpm dsh web です。SSH 起動ではホスト URL だけ出し、転送先はクライアント側に任せることが多いです。
最初のプロジェクト Skill は、ローカル提供者が最先に見るリポジトリ根へ置きます。
--- name: repo-test-patch description: 失敗テストを最小パッチで直すときだけ使う。 --- # repo-test-patch 1. ワークスペース根でブランチを確認する。 2. 本番コードを触る前に失敗テストを回す。 3. パッチは失敗に関係するファイルだけにする。 4. ワークスペース外へ書かない。
名前は kebab-case 必須です。束は SKILL.md です。深い入れ子は発見されません。frontmatter の disable-model-invocation と user-invocable が、モデルと人がカタログで見るかを決めます。両方オフなら、信頼された ctx.skills.get() だけが読めます。
起動後は三つ見ます。セッションにカタログメッセージが出たか。skill が本文を返し、マニュアル全体をシステムプロンプトへ先貼りしていないか。read-only でワークスペース外への書き込みが、プロンプトではなくバックエンドに拒まれるか。隔離バックエンドが無ければ、素の実行を続けずエラーで止めるべきです。
DeepSeek Harness は検証用の建築見本です。本番認定済みの基盤として扱わないでください。受け入れるのはループ、カタログ、confine の経路であり、デモ動画ではありません。
フルスタックを載せるべきとき
| 状況 | 判断 | 理由 |
|---|---|---|
| 一回の構造化取得や単一関数 | フル Harness は先送り | 関数呼び出しループで足りる |
| 連続した修正、テスト、再生 | Harness + Session Log | 再建できないと調査がスクショになる |
| 同じ手順を複数リポジトリで使う | Skill にする | 必要なときだけ読めばプロンプトが膨らまない |
| モデルがシェルや書き込みを持つ | Sandbox を fail-closed で | プロンプトはファイル方針ではない |
| 承認と補償が固定 | 外側を確定ワークフローに | 開放ループは局所推論だけ |
自作の while と数個のツールに比べ、DeepSeek Harness の得は組み立て、セッション再建、呼び出しごとの隔離が分かれていることです。払うのは Cordis の理解、プレビュー期の破壊、Skill と Sandbox を別物として覚えるコストです。今年ほんとうにモデル後端やサンドボックス実装を替える、あるいは Skill カタログを複数リポジトリで共有するなら、この分割は元が取れます。
最後に。2026年の安定した Agent は、もう一社のチャットモデルではありません。判断、ループ、手順書、ファイル境界を分けます。Harness が走り切り、Skill が必要なとき説明し、Sandbox が今回書いてよい場所を決めます。三つ揃うと、デモが監査できる仕事になります。
よくある質問
Harness とモデル API の違いは?
モデル API は次の意図やツール呼び出しを出します。Harness はループを回し、セッションを残し、プラグインを組み、カタログを入れる時点と隔離へ渡す時点を決めます。
Skill は書き込み権限を与えますか?
与えません。Skill は必要なとき読む手順書です。カタログは名前と説明が基本です。書いてよいかは、その呼び出しの Sandbox 方針が決めます。
Sandbox は通信も止めますか?
公式の Process Sandbox はファイル副作用だけです。通信とプロセス可視性は範囲外です。通信隔離が要るなら別の能力を足してください。read-only に出方向の遮断を期待しないでください。
本番基盤として使えますか?
建築見本と試作ホストとしては使えます。本番認定済みとは見なさないでください。公式リポジトリは開発者プレビューのままです。
クラウド Mac mini で Agent 実験を分ける
macOS 上の DeepSeek Harness サンドボックスは Seatbelt で、Skill はプロジェクト cwd を見ます。唯一の本番ビルド機でプレビュー Agent を回すと、ループと手順書とファイル隔離が顧客案件の上に重なります。M4 Mac mini の統一メモリなら、安定ビルドと捨てられる dsh 環境を並べやすい。待機おおよそ 4W なので、「Agent 専用、リリース分岐には触らない」ノードを 24 時間置けます。素の Unix、Homebrew、SSH の方が、自宅の Windows ノートを遠隔操作するより作業根を固定しやすいです。
Harness の試作を出荷機から外したいなら、Kvmkit のクラウド Mac mini M4 で隔離ノードを足せます——プランを見る。Skill カタログとサンドボックス方針が、安全に失敗できる場所を持てます。