DeepSeek Harness 自定义模型提供商配置指南

适用版本:deepseek-harness 0.1.0-rc.7

本文基于实际配置踩坑经验整理,覆盖从安装到跑通自定义模型的完整流程。


1. 安装 DeepSeek Harness

npm install -g @deepseek-ai/dsh
dsh --version

安装完成后,DSH 主目录位于 ~/.dsh(Windows 下为 C:\Users\<用户名>\.dsh)。

目录结构:

.dsh/
├── .credentials.yaml      # 凭据文件(API Key)
├── settings.yaml          # 主配置(热重载)
├── profiles/
│   └── web/               # Web profile 的插件和依赖
├── sessions/              # 会话日志
└── storages/              # 数据存储(含 pentest sqlite)

2. 配置自定义模型提供商

2.1 核心概念

DSH 的模型接入采用"能力缝"设计,用户只需关注两个 LLM 插件:

插件 定位 默认状态
llm-deepseek 官方 DeepSeek API 专用 默认挂载
llm-pi-ai 通用多协议提供商(基于 pi-ai) 默认休眠,有配置才激活

关键约束:api 字段是路由级必填项,一个路由只能用一种协议。合法值:

api 值 协议
openai-completions OpenAI 兼容 chat completions
openai-responses OpenAI Responses API
anthropic-messages Anthropic Messages API

2.2 配置文件

主配置~/.dsh/settings.yaml(热重载,改完即生效,无需重启)

凭据文件~/.dsh/.credentials.yaml

DEEPSEEK_API_KEY: sk-xxxxxxxxxxxxxxxx
XIAOMI_TOKEN_PLAN_CN_API_KEY: tp-xxxxxxxxxxxxxxxx

凭据优先级:进程环境变量 > .credentials.yaml > .env

2.3 配置示例:接入小米 MiMo

# ~/.dsh/settings.yaml

ui-theme:
  preference: dark

agent-default-model:
  provider: xiaomi-token-plan-cn    # 默认使用的提供商
  model: mimo-v2.5-pro              # 默认使用的模型

llm-pi-ai:
  providers:
    xiaomi-token-plan-cn:
      api: anthropic-messages                    # 必填!指定线协议
      displayName: 小米 MiMo
      baseURL: https://token-plan-cn.xiaomimimo.com/anthropic
      apiKeyEnv: XIAOMI_TOKEN_PLAN_CN_API_KEY    # 引用 .credentials.yaml 中的变量名
      models:
        - id: mimo-v2-pro
          name: MiMo-V2-Pro
          contextWindow: 1048576
          maxTokens: 131072
        - id: mimo-v2.5
          name: MiMo-V2.5
          contextWindow: 1048576
          maxTokens: 131072
        - id: mimo-v2.5-pro
          name: MiMo-V2.5-Pro
          contextWindow: 1048576
          maxTokens: 131072

2.4 配置示例:同时接入 DeepSeek 官方 + MiMo

如果同时使用多个提供商,llm-deepseek 的默认模型目录可能和 llm-pi-ai 的重复。用 models: [] 去重:

llm-deepseek:
  apiKeyEnv: DEEPSEEK_API_KEY
  baseURL: https://api.deepseek.com
  models: []              # 空数组 = 禁用默认模型目录,避免重复

llm-pi-ai:
  providers:
    deepseek:
      api: openai-completions
      baseURL: https://api.deepseek.com
      apiKeyEnv: DEEPSEEK_API_KEY
      models:
        - id: deepseek-v4-flash
          name: DeepSeek V4 Flash
          contextWindow: 1000000
          maxTokens: 384000
          compat:
            thinkingFormat: deepseek
            supportsReasoningEffort: true
        - id: deepseek-v4-pro
          name: DeepSeek V4 Pro
          contextWindow: 1000000
          maxTokens: 384000
          compat:
            thinkingFormat: deepseek
            supportsReasoningEffort: true

    xiaomi-token-plan-cn:
      api: anthropic-messages
      baseURL: https://token-plan-cn.xiaomimimo.com/anthropic
      apiKeyEnv: XIAOMI_TOKEN_PLAN_CN_API_KEY
      models:
        - id: mimo-v2.5-pro
          name: MiMo-V2.5-Pro
          contextWindow: 1048576
          maxTokens: 131072

2.5 验证模型配置

方式一:Web UI

浏览器打开 http://127.0.0.1:3080 → Settings → Models,检查模型是否出现。

方式二:API

curl -s http://127.0.0.1:3080/api/llm.models \
  -H "Content-Type: application/json" \
  -d '{"type":"client-request","rpcId":"test","method":"llm.models","payload":{}}'

响应中 result.value.groups 列出各提供商及其模型,failures 列出注册失败的提供商与原因。


3. 常见问题排查

3.1 模型请求报 404 / PI_AI_ERROR

原因settings.yaml 中缺少 api 字段。

症状:DeepSeek 模型能用,但其他模型(如 MiMo)报错:

本轮运行失败404
<html><body><h1>404 Not Found</h1></body></html>
PI_AI_ERROR

修复:给提供商配置加上 api 字段,根据端点选择正确的协议:

llm-pi-ai:
  providers:
    your-provider:
      api: anthropic-messages    # ← 加这一行
      baseURL: https://...

3.2 模型选择器看不到新模型

  • 检查 settings.yaml 的 YAML 缩进是否正确
  • 检查 .credentials.yaml 中的变量名是否和 apiKeyEnv 一致
  • 打开 http://127.0.0.1:3080 → Settings → Models 查看是否有注册失败信息

3.3 模型选中后请求失败

原因api 字段和端点实际协议不匹配。

排查:先用 curl 直连端点验证:

# 测试 Anthropic 协议端点
curl -X POST https://your-endpoint/v1/messages \
  -H "x-api-key: YOUR_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model":"your-model","max_tokens":10,"messages":[{"role":"user","content":"hi"}]}'

# 测试 OpenAI 协议端点
curl -X POST https://your-endpoint/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"your-model","max_tokens":10,"messages":[{"role":"user","content":"hi"}]}'

4. 配置参考速查

# ~/.dsh/settings.yaml 完整模板

ui-theme:
  preference: dark

agent-default-model:
  provider: <提供商路由名>
  model: <模型ID>

llm-deepseek:
  apiKeyEnv: DEEPSEEK_API_KEY
  baseURL: https://api.deepseek.com
  models: []          # 如果用 llm-pi-ai 接 deepseek,这里置空去重

llm-pi-ai:
  providers:
    <路由名>:
      api: <协议>                    # 必填:openai-completions | openai-responses | anthropic-messages
      displayName: <显示名>
      apiKeyEnv: <凭据变量名>
      baseURL: <端点地址>
      models:
        - id: <模型ID>
          name: <显示名>
          contextWindow: <上下文窗口>
          maxTokens: <最大输出>
          compat:                    # 可选:模型级协议方言
            thinkingFormat: deepseek
            supportsReasoningEffort: true
      reasoning: <推理级别>          # 可选:off | minimal | low | medium | high | xhigh | max
# ~/.dsh/.credentials.yaml

DEEPSEEK_API_KEY: sk-xxxxxxxxxxxxxxxx
XIAOMI_TOKEN_PLAN_CN_API_KEY: tp-xxxxxxxxxxxxxxxx
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐