DeepSeek Harness の設定
DeepSeek Harness (コマンド名 dsh)は、DeepSeek が公式にオープンソースで公開している agent harness です。「すべてがプラグイン」というアーキテクチャを採用しており、モデル・ツール・スキル・セッション・サンドボックス・UI のすべてが差し替え可能なプラグインになっています。デフォルトでは DeepSeek 公式 API を呼び出しますが、モデルプラグインの向き先を OfoxAI に変更すれば、同じ harness のまま 100 以上のモデルを利用できます。
dsh は開発者プレビュー段階であり、メンテナーは破壊的変更が発生すると明言しています。本記事は @deepseek-ai/dsh 0.1.2-rc.1 を基準に記述しています。
設定手順
1. dsh のインストール
まず Node.js をインストールします。dsh は npm で @deepseek-ai/dsh として配布されており、インストールすると dsh コマンドが使えるようになります。
macOS
npm install -g pnpm # インストール済みならスキップ
pnpm add -g @deepseek-ai/dsh
dsh --versionpnpm のグローバル bin ディレクトリが PATH に含まれている必要があります。pnpm bin -g で実際のパスを確認できます。
インストール中に pnpm が Ignored build scripts: node-pty, koffi … と警告することがありますが、無視して問題ありません。どちらのパッケージも各プラットフォーム向けのビルド済みバイナリを同梱しており、ローカルでのコンパイルは不要です。
グローバルインストールせずに試したい場合は:
npx @deepseek-ai/dsh web2. OfoxAI プロバイダーの設定
dsh は設定を $DSH_HOME 配下で管理します。macOS と Linux では ~/.dsh、Windows では %USERPROFILE%\.dsh です。以下のどちらかの方法を選んでください。
Base URL はネットワーク環境に合わせて選択してください:国際ネットワークでは api.ofox.ai、中国本土のユーザーは api.ofox.io を使用します。どちらも同じサービスのミラーで、API Key は共通、パスはいずれも /v1 です。
Web UI(推奨)
dsh webターミナルにトークン付きの URL(デフォルトは http://127.0.0.1:3080)が表示され、ブラウザが自動的に開きます。左下の Settings をクリックします:

左側のナビゲーションで Models に切り替えます:

組み込みの deepseek-official は DeepSeek への直接接続なので、OfoxAI 経由にするにはカスタムプロバイダーを追加します。Add a custom provider をクリックしてください:

次の表のとおりに入力し、Fetch available models をクリックします:
| 項目 | 値 |
|---|---|
| Provider ID | ofox |
| Display name | ofox |
| Base URL | https://api.ofox.ai/v1 |
| API protocol | openai-completions |
| API key | あなたの OfoxAI API Key |

スクリーンショットの API protocol は openai-responses になっていますが、これはフォームのデフォルト値で、DeepSeek 系のモデルしか受け付けません。モデルカタログ全体で使うには openai-completions を選んでください。
使用するモデルにチェックを入れて Add selected をクリックし、フォームに戻って Create provider をクリックします:

セッション画面に戻ります。初回はまずワークスペース(dsh が読み書きできるプロジェクトディレクトリ)を選ぶ必要があります。その後、入力欄の右下にあるモデルセレクターから ofox グループのすべてのモデルを選べるようになります:

API Key は $DSH_HOME/.credentials.yaml(OS 上の自分のユーザーのみ読み取り可能)に、プロバイダー設定は $DSH_HOME/settings.yaml に書き込まれます。どちらも保存後すぐに反映され、再起動は不要です。
モデル ID にはベンダープレフィックスが必要です。anthropic/claude-sonnet-5 のように指定し、プレフィックスなしの claude-sonnet-5 は拒否されます。全モデルの一覧は モデルマーケットプレイス をご覧ください。
3. API Key の設定
apiKeyEnv に指定するのは認証情報の名前であり、Key そのものではありません。dsh は「dsh を起動した環境の環境変数 → $DSH_HOME/.credentials.yaml → プロジェクトの .env → ホームディレクトリの .env」という決まった順序で解決します。Web UI で設定した場合は Key がすでに保存されているため、この手順は省略できます。
macOS
export OFOX_API_KEY=<あなたの OFOXAI_API_KEY>4. 動作確認
dsh --profile headless "OK とだけ返信してください。ツールは一切呼び出さないでください。"OK が返ってくれば、モデル層が OfoxAI に到達しています。日常的な利用では dsh web で Web インターフェースを起動するか、dsh --profile headless "run the tests" のように単発のタスクを実行して終了します。
プラットフォームごとの違い
設定ファイルの内容は 3 つのプラットフォームで完全に同じで、異なるのはパスと環境変数の書き方だけです。
| macOS | Linux | Windows | |
|---|---|---|---|
設定ルート $DSH_HOME | ~/.dsh | ~/.dsh | %USERPROFILE%\.dsh |
| API Key の永続化 | ~/.zshrc | ~/.bashrc | setx |
| Shell ツールのサンドボックス | Bash | Bash | PowerShell(Bash サンドボックスは自動的に無効化されます) |
トラブルシューティング
TIMEOUT: Request timed out. — dsh は Node アプリケーションであり、http_proxy / all_proxy を読み込みません。そのため、システムプロキシが機能していても dsh が接続できるとは限りません。baseURL のドメインがご利用のネットワークから到達できない場合、中国本土のユーザーはミラーの https://api.ofox.io/v1 に切り替えてください。
MISSING_CREDENTIAL — apiKeyEnv で指定した認証情報が解決できませんでした。dsh を起動したターミナルで環境変数が有効になっているか、または Key が $DSH_HOME/.credentials.yaml に保存されているかを確認してください。もう 1 つの原因はモデルの選び間違いです。組み込みの deepseek-official は Key を設定していなくてもモデルセレクターにモデルを表示し、その名前もカスタムルートのものとよく似ているため、選び間違えないよう注意してください。
応答が空なのにエラーも出ない — もっとも踏みやすい落とし穴です。api: openai-responses に Anthropic 系のモデルを組み合わせると、リクエストは正常に終了する(finish reason: stop)のに中身が空になります。そのモデルを openai-completions のルートか、https://api.ofox.ai/anthropic を指す anthropic-messages のルートに移してください。
INVALID_REQUEST / HTTP 400 endpoint_not_supported — レスポンスには Model '…' does not support the /v1/responses endpoint on this platform. Please use /v1/chat/completions instead. と書かれています。Google や Qwen などのモデルを openai-responses で使うとこうなります。この場合も api を openai-completions に変更してください。
プラグインの読み込みがルート重複エラーで失敗する — 同じルート名が 2 回登録されています。$DSH_HOME/cordis.patch.yml と settings.yaml の両方で ofox を定義していないか確認してください。
応用:patch レイヤーでの設定
settings.yaml はランタイムのユーザー設定を保持し、次のリクエストから反映されます。プラグインの構成そのものを変更する場合(プラグインの差し替えや無効化)は、$DSH_HOME/cordis.patch.yml の patch レイヤーを使います:
- id: llm-pi-ai
config:
providers:
ofox:
apiKeyEnv: OFOX_API_KEY
api: openai-completions
baseURL: https://api.ofox.ai/v1
- id: agent-default-model
config:
provider: ofox
model: deepseek/deepseek-v4-pro-0813dsh web --dump-config を実行すると、合成後のプラグインツリーが出力され、設定が反映されているかを確認できます。
推奨モデル
推奨モデルは モデルマーケットプレイス をご参照ください。
dsh は開発が急速に進んでおり、設定項目がバージョンによって変わる可能性があります。DeepSeek Harness 公式リポジトリ も併せてご確認ください。