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) |
协议 api | openai-completions |
Base URL baseURL | https://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。到控制台检查密钥状态和钱包余额,详见 错误排查。