DeepSeek Harness 配置
DeepSeek Harness (命令名 dsh)是 DeepSeek 官方開源的 agent harness,採用「一切皆外掛」架構 —— 模型、工具、技能、工作階段、沙箱、介面全部是可替換的外掛。它預設呼叫 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終端機會印出一個帶 token 的網址(預設 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(僅目前使用者可讀),供應商配置寫入 $DSH_HOME/settings.yaml,儲存後立即生效,無需重新啟動。
模型 ID 必須帶供應商前綴,例如 anthropic/claude-sonnet-5,只寫 claude-sonnet-5 會被拒絕。完整目錄見模型廣場 。
3. 設定 API Key
apiKeyEnv 填的是憑證名稱而不是明文 Key。dsh 按「啟動時的環境變數 → $DSH_HOME/.credentials.yaml → 專案目錄 .env → 家目錄 .env」的順序解析。用 Web UI 設定過的話 Key 已經在憑證檔案裡,可以跳過這一步。
macOS
export OFOX_API_KEY=<你的 OFOXAI_API_KEY>4. 驗證
dsh --profile headless "只回覆兩個字:可用。不要呼叫任何工具。"輸出 可用 就說明模型層已經走通 OfoxAI。日常使用可以啟動 Web 介面(dsh web),或者用 dsh --profile headless "run the tests" 跑完單次任務後退出。
三平台差異
配置檔案的內容三平台完全一致,只有路徑和環境變數寫法不同。
| 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。另一種情形是選錯了模型:內建的 deepseek-official 即使沒配 Key,它的模型也照樣列在模型選擇器裡,名字和自訂路由的很像,注意別選到它。
回覆是空的,也不報錯 — 這是最容易踩到的雷:api: openai-responses 配 Anthropic 系模型時,請求會正常結束(finish reason: stop)但內容為空。把該模型挪到 openai-completions 路由,或挪到指向 https://api.ofox.ai/anthropic 的 anthropic-messages 路由。
INVALID_REQUEST / 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。
外掛載入失敗、提示路由重複 — 同一個路由名被註冊了兩次,檢查 $DSH_HOME/cordis.patch.yml 和 settings.yaml 裡是否都定義了 ofox。
進階:用 patch 層配置
settings.yaml 改的是執行時的使用者設定,改完下一個請求就生效。如果要改外掛裝配本身(替換或停用某個外掛),用 patch 層 $DSH_HOME/cordis.patch.yml:
- 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-0813用 dsh web --dump-config 可以印出合成後的完整外掛樹,確認配置有沒有生效。
推薦模型
推薦模型請參考 模型廣場 。
dsh 處於快速迭代階段,配置欄位可能隨版本變化,請同時參考 DeepSeek Harness 官方倉庫 。