Skip to Content
工具集成DeepSeek Harness

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 命令。

npm install -g pnpm # 已安装可跳过 pnpm add -g @deepseek-ai/dsh dsh --version

pnpm 的全局 bin 目录需要在 PATH 上,用 pnpm bin -g 可以查到具体路径。

安装过程中 pnpm 可能提示 Ignored build scripts: node-pty, koffi …,可以忽略 —— 这两个依赖自带各平台预编译二进制,不需要本地编译。

不想全局安装也可以直接试跑:

npx @deepseek-ai/dsh web

2. 配置 OfoxAI 供应商

dsh 的配置根目录是 $DSH_HOME,macOS / Linux 默认 ~/.dsh,Windows 默认 %USERPROFILE%\.dsh。以下两种方式任选其一。

Base URL 按网络环境选择:国际网络用 api.ofox.ai,中国大陆网络用 api.ofox.io。两者是同一套服务的镜像,API Key 通用,路径都是 /v1

dsh web

终端会打印一个带 token 的地址(默认 http://127.0.0.1:3080)并自动打开浏览器。点左下角的 设置

打开 dsh 设置

在左侧切到 模型

切到模型设置

内置的 deepseek-official 是 DeepSeek 官方直连,走 OfoxAI 要新建一个自定义提供方 —— 点 添加自定义提供方

添加自定义提供方

按下表填写,然后点 获取可用模型

字段填入
Provider IDofox
显示名称ofox
API 地址https://api.ofox.ai/v1
API 协议openai-completions
API 密钥你的 OfoxAI API Key

填写自定义提供方

截图里的 API 协议openai-responses,那是表单的默认值,只有 DeepSeek 系模型能用;选 openai-completions 才对整个模型目录通用。

勾选要用的模型,点 添加所选,回到表单后点 创建提供方

勾选要添加的模型

回到会话界面。首次使用需要先选一个工作区(就是 dsh 可以读写的项目目录),之后在输入框右下角的模型选择器里,就能看到 ofox 分组下的全部模型:

在会话里选择 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 已经在凭据文件里,可以跳过这一步。

~/.zshrc
export OFOX_API_KEY=<你的 OFOXAI_API_KEY>

4. 验证

dsh --profile headless "只回复两个字:可用。不要调用任何工具。"

输出 可用 就说明模型层已经走通 OfoxAI。日常使用可以启动 Web 界面(dsh web),或者用 dsh --profile headless "run the tests" 跑完单次任务后退出。

三平台差异

配置文件的内容三平台完全一致,只有路径和环境变量写法不同。

macOSLinuxWindows
配置根目录 $DSH_HOME~/.dsh~/.dsh%USERPROFILE%\.dsh
API Key 持久化~/.zshrc~/.bashrcsetx
Shell 工具沙箱BashBashPowerShell(Bash 沙箱自动禁用)

常见问题

TIMEOUT: Request timed out. — dsh 是 Node 应用,不读取 http_proxy / all_proxy 环境变量,系统代理能连通不代表 dsh 能连通。如果 baseURL 指向的域名在你的网络下不可达,中国大陆用户请改用镜像 https://api.ofox.io/v1

MISSING_CREDENTIALapiKeyEnv 写的凭据名没解析到值。确认环境变量在启动 dsh 的那个终端里已经生效,或者 Key 已经存进 $DSH_HOME/.credentials.yaml。另一种情形是选错了模型:内置的 deepseek-official 即使没配 Key,它的模型也照样列在模型选择器里,名字和自定义路由的很像,注意别选到它。

回复是空的,也不报错 — 这个组合最容易踩:api: openai-responses 配 Anthropic 系模型时,请求会正常结束(finish reason: stop)但内容为空。把该模型挪到 openai-completions 路由,或挪到指向 https://api.ofox.ai/anthropicanthropic-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.ymlsettings.yaml 里是否都定义了 ofox

进阶:用 patch 层配置

settings.yaml 改的是运行时用户设置,改完下一个请求就生效。如果要改插件装配本身(替换或禁用某个插件),用 patch 层 $DSH_HOME/cordis.patch.yml

~/.dsh/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 官方仓库 

Last updated on