ModelRouterModelRouter
接入工具

DeepSeek Harness

在 DeepSeek Harness(dsh)中添加ModelRouter作为模型供应商,改一个 settings.yaml 即可。

DeepSeek Harness(命令名 dsh)是深度求索开源的 AI Agent 框架,支持通过 settings.yaml 接入 OpenAI 兼容的第三方模型服务。本站的 DeepSeek、GLM、Kimi 系列都可以添加,接入方式是:把 Base URL 换成本站地址,再填本站的 API 密钥。

项目填写
配置文件$DSH_HOME/settings.yaml,未设置 DSH_HOME 时为 ~/.dsh/settings.yaml(Windows 为 %USERPROFILE%\.dsh\settings.yaml)
协议 apiopenai-completions
Base URL baseURLhttps://modelrouter.club/v1
模型 ID本站模型 ID,例如 deepseek-v4-pro

给 AI 助手的一段话

DeepSeek Harness 本身就是 AI 助手,可以直接把下面这段话发给它,让它自己写好配置。这段话会包含你的完整密钥,接收它的 AI 服务会看到,请只发给你信任的 AI 助手。把 YOUR_API_KEY 换成你的密钥,deepseek-v4-pro 换成你要用的模型 ID。

请帮我把 DeepSeek Harness 接入ModelRouter(OpenAI 兼容的 API 服务)。

1. 把 API 密钥保存到环境变量 TOKENDISCOUNT_API_KEY,不要写进 settings.yaml:
   - macOS / Linux:在 ~/.zshrc 或 ~/.bashrc 里加一行 export TOKENDISCOUNT_API_KEY="YOUR_API_KEY"
   - Windows PowerShell:[Environment]::SetEnvironmentVariable("TOKENDISCOUNT_API_KEY", "YOUR_API_KEY", "User")
2. 打开 $DSH_HOME/settings.yaml(未设置 DSH_HOME 时为 ~/.dsh/settings.yaml,Windows 为 %USERPROFILE%\.dsh\settings.yaml),不存在就新建。在 llm-pi-ai.providers 下新增 tokendiscount 供应商,并把默认模型设为它;已有的其他供应商和设置保持不变:

```yaml
llm-pi-ai:
  providers:
    tokendiscount:
      displayName: ModelRouter
      apiKeyEnv: TOKENDISCOUNT_API_KEY
      api: openai-completions
      baseURL: https://modelrouter.club/v1
      models:
        - id: deepseek-v4-pro

agent-default-model:
  provider: tokendiscount
  model: deepseek-v4-pro
```

3. 保存后提醒我打开一个新终端(让环境变量生效),再重新启动 dsh。

这段话里有我的 API 密钥:只把它写进环境变量,回复时不要完整复述,也不要提交到代码仓库。

准备

  • 安装 DeepSeek Harness,能在终端运行 dsh(或 npx @deepseek-ai/dsh)。
  • 在 API 密钥 页面创建一个密钥,并确认 钱包 有余额。
  • 在 模型广场 选好模型,复制模型 ID,例如 deepseek-v4-pro。

第 1 步:把密钥保存到环境变量

DeepSeek Harness 推荐用 apiKeyEnv 从环境变量读取密钥,这样 settings.yaml 里不会出现明文密钥。

把下面这行加到 ~/.zshrc(bash 用户是 ~/.bashrc),然后打开一个新终端:

export TOKENDISCOUNT_API_KEY="YOUR_API_KEY"

第 2 步:编辑 settings.yaml

打开 ~/.dsh/settings.yaml(设置了 DSH_HOME 时为 $DSH_HOME/settings.yaml),加入下面的内容并保存。文件里已经有 llm-pi-ai.providers 时,只把 tokendiscount 这一段加到它下面:

llm-pi-ai:
  providers:
    tokendiscount:
      displayName: ModelRouter
      apiKeyEnv: TOKENDISCOUNT_API_KEY
      api: openai-completions
      baseURL: https://modelrouter.club/v1
      models:
        - id: deepseek-v4-pro
        - id: deepseek-flash
        - id: glm-5.3

agent-default-model:
  provider: tokendiscount
  model: deepseek-v4-pro

各字段的作用

字段说明
tokendiscount供应商的名字,可以自己起,agent-default-model.provider 要和它一致
displayName界面里显示的名字
apiKeyEnv存放密钥的环境变量名,必须和第 1 步里的变量名完全一致
api填 openai-completions,即 OpenAI Chat Completions 协议
baseURL填 https://modelrouter.club/v1,不要在后面加 /chat/completions
models[].id本站的模型 ID,必须和模型广场里的完全一致,要添加多个模型就多写几行
agent-default-model默认使用的供应商和模型;不设置时,可以在 DeepSeek Harness 里手动切换

第 3 步:验证

settings.yaml 修改后会自动生效。在设置好环境变量的新终端里运行:

dsh --profile headless "Reply with OK"

能收到回复就说明接入成功。再试一次工具调用,确认模型可以读写文件:

dsh --profile headless "读取当前目录下的任意一个文件,告诉我它的第一行"

每次调用的用量和费用都可以在 使用日志 里查到。

常见问题

提示 No API key for provider

DeepSeek Harness 没读到环境变量。确认 apiKeyEnv 的名字和你设置的环境变量名一致,并且是在设置之后新打开的终端里启动 dsh。用 echo ${TOKENDISCOUNT_API_KEY:+set} 检查,输出 set 说明变量已生效(不会显示密钥本身)。

报 404

baseURL 填错了。填 https://modelrouter.club/v1:不要只填 https://modelrouter.club,也不要在后面加 /chat/completions。

提示模型不存在(model_not_found)

models[].id 或 agent-default-model.model 填成了显示名。例如 DeepSeek V4 Pro 不对,要填模型广场里复制的 deepseek-v4-pro。

settings.yaml 改了不生效

检查 YAML 缩进:只能用空格,不能用 Tab,tokendiscount 要缩进在 providers 下面。文件里不能出现两个 llm-pi-ai 或两个 agent-default-model,已有的话合并成一个。

提示余额不足或密钥无效(401 / 403)

密钥填错、被禁用、过期或额度用完,都会返回 Invalid token。到控制台检查密钥状态和钱包余额,详见 错误排查。