在 DeepSeek Harness 中接入 WanAPIs

DeepSeek Harness(命令行里叫 dsh)是 DeepSeek 开源的编码智能体。除了官方端点和内置的提供方目录,它还支持「自定义提供方」——只要对方讲 OpenAI 兼容协议就能接。把 API 地址指向 WanAPIs,你就能在同一个 Key 下切换多家厂商的模型,而不必为每家单独开账号。下面以 deepseek-v4.1-flash 为例走一遍,并标出两个最容易卡住的地方。

接入步骤

  1. 1

    注册拿 API Key

    在 WanAPIs 控制台注册,创建一个 sk- 开头的 API Key。建议给 dsh 单独建一个令牌 —— 控制台的日志和用量按令牌分开统计,之后能一眼看出这个智能体花了多少。

  2. 2

    在界面里添加自定义提供方

    打开 设置 → 模型 → 添加自定义提供方,按下面填。⚠️ Provider ID 必须小写,而且基本上是不可改的 —— 请求、已保存的会话、凭据引用都指向它,起名时想清楚。

    设置 → 模型 → 添加自定义提供方
    Provider ID: wanapis
    显示名称:   WanAPIs
    API 地址:    https://api.wanapis.com/v1
    API 协议:    openai-completions
    API 密钥:    sk-xxx
    模型:        deepseek-v4.1-flash
  3. 3

    ⚠️ API 地址填到 /v1 就行,不要填完整路径

    dsh 会自己补 /chat/completions,所以 API 地址填 https://api.wanapis.com/v1 即可,填成 .../v1/chat/completions 反而会拼成重复路径而失败。这一点和 WorkBuddy 正好相反(那边要求填完整路径),从别的工具照抄配置时最容易在这里翻车。

  4. 4

    ⚠️「获取可用模型」可能列不出 deepseek,手填 ID 即可

    表单上的「获取可用模型」会拿你填的地址和密钥去问端点有哪些模型。但 WanAPIs 返回的清单是【按令牌所属分组过滤】的 —— 如果你的令牌在某个专用分组里,列表可能只有那个分组的模型,看不到 deepseek-v4.1-flash。这不是配置错了:直接把模型 ID 手动敲进去就能用。想让列表更全,就用 default 分组的令牌。

  5. 5

    也可以直接写配置文件

    不想点界面就编辑 $DSH_HOME/settings.yaml。密钥不写在这个文件里,而是用 apiKeyEnv 指向一个环境变量名(通过 Web UI 保存的凭据存在 $DSH_HOME/.credentials.yaml)——这样配置文件可以安全地跟着项目走。下面是官方文档给出的结构,字段以你所用版本的实际文档为准。

    $DSH_HOME/settings.yaml
    llm-pi-ai:
      providers:
        wanapis:
          apiKeyEnv: WANAPIS_API_KEY
          api: openai-completions
          baseURL: https://api.wanapis.com/v1
          models:
            - id: deepseek-v4.1-flash
            - id: gpt-5.6-sol
            - id: claude-opus-5
  6. 6

    协议怎么选

    dsh 的「API 协议」有三个选项,WanAPIs 三种都支持:openai-completions 对应 /v1/chat/completions,兼容性最好,不确定就选它;openai-responses 对应 /v1/responses;anthropic-messages 对应 /v1/messages。协议要和你填的地址匹配 —— 选错了通常表现为 404 或参数不被识别,而不是明确的报错。

  7. 7

    成本:长会话靠缓存省很多

    deepseek-v4.1-flash 在默认分组是 输入 ¥0.50 / 输出 ¥4.00(每百万 token)。编码智能体的特点是同一段上下文被反复发送,而命中缓存的输入按 8% 计费 —— 平台上的真实调用里,单次请求携带十几万 token 的缓存上下文很常见,实际付费的只是新增部分。所以别被「上下文很长」吓到,真正贵的是输出。

    默认分组单价(元 / 百万 token)
    deepseek-v4.1-flash    输入 0.50   输出 4.00   命中缓存的输入按 8% 计
    gpt-5.6-sol            输入 5.00   输出 30.00
    claude-opus-5          输入 5.00   输出 25.00
  8. 8

    跑通之后再放开用

    先让它做一件小事,确认三件事:请求确实打到了 WanAPIs(控制台日志页能看到这条调用)、模型名没写错、扣费正常。日志里能看到每次调用的 token 数、走的哪条上游线路和耗时,排查问题比在客户端猜要快得多。

常见问题

DeepSeek Harness 可以接入第三方 API 吗?

可以。除了官方端点和内置提供方目录,dsh 支持「自定义提供方」,能接任意 OpenAI 兼容的网关或自建服务。在 设置 → 模型 → 添加自定义提供方 里配置,或直接写 $DSH_HOME/settings.yaml。

API 地址要填到 /chat/completions 吗?

不要。dsh 会自己补路径,填到 https://api.wanapis.com/v1 就行。填成完整路径会拼出重复的 /chat/completions 而失败。注意这和 WorkBuddy 的要求正好相反,别照抄。

点「获取可用模型」找不到 deepseek-v4.1-flash?

这通常不是配置错了。WanAPIs 的模型清单按令牌所属分组过滤,如果你的令牌在某个专用分组里,列表就只有那个分组的模型。直接把模型 ID 手动敲进去即可正常调用;想让列表更全,换一个 default 分组的令牌。

Provider ID 可以改吗?

基本不能。请求、已保存的会话和凭据引用都指向这个 ID,官方文档也说明它实际上是永久的。起名时想清楚,建议用简单的小写英文,比如 wanapis。

API 协议三个选项该选哪个?

不确定就选 openai-completions(对应 /v1/chat/completions),兼容性最好。WanAPIs 三种都支持:openai-responses 对应 /v1/responses,anthropic-messages 对应 /v1/messages。协议和地址必须匹配,选错通常表现为 404 或参数不被识别。

API Key 存在哪?会不会跟着配置文件泄露?

不会。settings.yaml 里用 apiKeyEnv 指向一个环境变量名,密钥本身不写在里面;通过 Web UI 保存的凭据存在 $DSH_HOME/.credentials.yaml。所以 settings.yaml 可以安全地跟着项目走,但 .credentials.yaml 不要提交到仓库。

配好了但请求失败,怎么查?

先去 WanAPIs 控制台的日志页看有没有这条请求:有记录说明请求已经到网关,直接看报错原因;完全没有记录,说明请求还没发出去,问题在客户端 —— 依次检查 API 地址是否多了 /chat/completions、密钥有没有复制全(末尾空格是常见坑)、模型 ID 是否与模型市场里完全一致。

deepseek-v4.1-flash 贵吗?编码智能体上下文那么长。

默认分组是 输入 ¥0.50 / 输出 ¥4.00 每百万 token,而且命中缓存的输入按 8% 计费。编码智能体反复发送同一段上下文,大部分输入都会命中缓存,实际付费的只是新增部分。真正的成本大头是输出。

可以在 dsh 里混用多家模型吗?

可以,这正是接中转的好处。在同一个自定义提供方的 models 列表里把 deepseek-v4.1-flash、gpt-5.6-sol、claude-opus-5 都列上,就能在一个 Key 下随时切换,不必为每家单独开账号和配置。

国内能直连吗?需要梯子吗?

不需要。WanAPIs 的接口国内可以直接访问,dsh 里填上就能用,不用额外配代理。

支持哪些模型?

GPT、Claude、Gemini、DeepSeek、Kimi、Qwen、GLM、Grok 等主流文本模型都能填,完整清单见模型市场。dsh 是编码智能体,建议选支持工具调用的模型。

现在就把 DeepSeek Harness 接到 WanAPIs

一个 API Key 调用 GPT、Claude、Gemini、DeepSeek、Kimi、GLM 等模型,国内直连、按 token 实付。