用 dsh-commandcode-provider 在 DeepSeek Harness 里调用 Command Code 模型

前言

DeepSeek Harness(dsh)把模型适配、工具、会话和界面都做成插件。官方仓库的说法是 Everything is a Plugin:换一套模型提供方,通常不需要改 Harness 源码,只要往当前 profile 里加一层 bundle。社区里已经有人把各类云厂商、代理和本地模型接到这条缝上。

Command Code 是另一套带订阅额度的多模型网关。账号里往往同时能看到 DeepSeek、Qwen、Kimi、MiniMax,以及按套餐开放的 Claude / GPT / Gemini / Grok。很多人希望这些额度直接在 dsh web 里用,而不是再开一份 CLI。Command Code 对外有一套 OpenAI / Anthropic 兼容的 Provider API;它自己的 CLI 实际走的是另一条生成接口 POST /alpha/generate

dsh-commandcode-provider 接的是后一条路:在 DeepSeek Harness 里注册原生的 commandcode 提供方,把对话请求翻译成 CLI 使用的生成接口。它不是 DeepSeek 或 Command Code 的官方插件,社区目录 deepseek-harness-plugin.com 也只是独立收录站点,和 DeepSeek / 幻方没有从属关系。

这是什么

dsh-commandcode-provider 是一款 模型与提供方 插件,由 Mars-Sea 维护,npm 包名是 @mars-sea/dsh-commandcode-provider(裸名 dsh-commandcode-provider 已被无关包占用)。当前仓库 package.json 与 npm 页面上的版本是 0.4.0(2026-08-17 发布),许可证是 MIT。社区目录页把许可证标成 NOASSERTION,以仓库里的 LICENSEpackage.json 为准。

它移植自 pi-commandcode-provider(同样 MIT)。README 写明:请求格式对应官方 CLI command-code@1.26.0,由原 pi 插件逆向得到。这是社区集成,需要你自己的 Command Code 账号、API key 或订阅,并遵守对方服务条款;项目与 Command Code, Inc. 无关。

目录页上有一句「让 Command Code 直接使用 DeepSeek Harness 的模型」。按仓库 README 和 package.json 的 description,方向其实相反:是让 DeepSeek Harness 去调用 Command Code 账号里的模型。下文以仓库一手说明为准。

核心功能

按仓库 README 与 0.4.0 的 CHANGELOG,已经核实的能力可以分成下面几块。

1、实时模型目录

插件注册 commandcode 路由后,会请求 GET {apiBase}/provider/v1/models 拉当前目录,缓存在 ~/.commandcode/models-cache.json。目录端点是公开的,没有 key 也能浏览;真正发推理要走 POST /alpha/generate,这一步需要密钥。

选择器里每个模型会带一批标注:包含它的最低套餐(KNOWN_PLANS)、活动折扣或 FREE 徽章(过期折扣会自行隐藏)、按时段计价模型的 Peak / Half、Vision 模型的 Image,以及上下文长度(1M / 256K / 262K)。列表按套餐排序:Go → GOAT → Pro → Provider/Max,当前套餐能用的排在前面。

0.4.0 起,选择器默认会藏掉超出你订阅档位的模型。判断依据是账户账单状态。账单接口不可用、套餐未知,或账户里有按需余额(官方 CLI 把这当成解锁全部模型)时,插件会失败开放,继续展示完整目录;服务端仍是最终闸门,不在套餐内会返回 MODEL_NOT_IN_PLAN(403)。设置页可以关掉「隐藏套餐外模型」,或在配置里写 filterModelsByPlan: false

2、专属设置页和 Models 卡片

安装并重启 Web 应用后:

  • 设置 → Command Code:API key 输入框、API 地址、工作目录、请求/流超时,「隐藏套餐外模型」开关。密钥走 dsh 凭据服务,写入 $DSH_HOME/.credentials.yaml,只写不回显;连接参数写进 llm-commandcode 段,对下一次请求生效,不用重启。
  • 配好 key 之后,同一页顶部会出一张 账户用量 卡片:请求统计、额度、5 小时/周窗口进度条、套餐徽章和账期截止。数据在宿主进程里拉取,浏览器不持有 key。
  • 设置 → Models:出现 Command Code 卡片;模型选择器在 commandcode 下列出实时目录。

3、推理强度和图片

官方目录标了 reasoning 的模型,插件按 KNOWN_EFFORTS(与 command-code@1.26.0 对齐)暴露 reasoning-effort。没有分档、但仍会思考的模型会自动思考,行为和官方 CLI 一致。

带 Vision 能力的模型可以通过 dsh 附件服务发图片;纯文本模型会明确拒绝(UNSUPPORTED_CONTENT),不会把图片悄悄丢掉。官方 CLI 对纯文本模型还有一层客户端 VISION 副调用,这个插件 不复现,需要换带 Image 标记的模型。

4、密钥解析顺序

同一把 key 可以从多处来,优先级是:

  1. 组合配置里的字面量 config.apiKey
  2. 凭据引用 apiKeyEnv(默认 COMMANDCODE_API_KEY
  3. 启动时的环境变量
  4. 官方 CLI 登录文件 ~/.commandcode/auth.jsoncommand-code login / cmd login 写入)

最后这一档是兜底。如果卡片显示「未配置」但请求其实能发出去,多半是走了 auth.json,把 key 再贴进设置页一次即可。

安装与启用

插件以当前 dsh 进程的权限运行,安装时可能执行代码。装之前先看仓库源码和许可证;要可复现安装,请固定 commit 或版本号。

社区目录页给出的安装命令是:

dsh plugin add github:Mars-Sea/dsh-commandcode-provider

固定某一提交时,目录页的写法是:

dsh plugin add github:Mars-Sea/dsh-commandcode-provider#commit

#commit 换成完整 SHA。不加后缀会跟随默认分支,后面一次 push 就可能改变你实际装到的内容。

仓库 README 更推荐从 npm 装到 web profile(客户端声明了 "platform": "web"):

dsh plugin --profile web add @mars-sea/dsh-commandcode-provider

当前 npm 版本是 0.4.0,需要钉死版本时:

dsh plugin --profile web add @mars-sea/dsh-commandcode-provider@0.4.0

从 GitHub 装的是源码,包的 prepare 脚本会在安装后构建 lib/。pnpm 10 及以上默认拦住这个脚本,需要把 pnpm 打印的包 key 写进 ~/.dsh/profiles/web/pnpm-workspace.yamlallowBuilds,再重新 add。日常使用走 npm 可以避开这一步。

装完后验证合成层,再启动(或重启)Web UI:

dsh --profile web --dump-config
dsh web

--dump-config 里应出现 # == @mars-sea/dsh-commandcode-provider 这一层。cordis.patch.yml 里的 name 必须是带引号的完整包名:

- insert:
    - id: llm-commandcode
      name: "@mars-sea/dsh-commandcode-provider"
      config:
        apiKeyEnv: COMMANDCODE_API_KEY

写成裸名 dsh-commandcode-provider 会在启动时报 ERR_MODULE_NOT_FOUND@ 开头的标量若不加引号,YAML 解析会失败。这两种情况在 0.1.6 及更早的手改配置里出现过,升级时如果曾经把旧 patch 行复制进自己的 profile,需要改成上面这一段,或直接删掉那份拷贝。

卸载用 scoped 名,凭据和 ~/.commandcode/auth.json 不会被删:

dsh plugin --profile web remove @mars-sea/dsh-commandcode-provider

典型用法

下面步骤都来自仓库 README,可以按原样做一遍。

1、准备 API key

Command Code 的 API key 文档写明永不过期。官方 CLI 需要 Node.js 22+(插件 engines 同样要求 node >= 22):

npm i -g command-code@latest
cmd login        # macOS / Linux;Windows 原生版用 cmdc login

浏览器登录成功后,key 写到 ~/.commandcode/auth.json。也可以在 Command Code Studio 新建一把,粘贴到 设置 → Command Code,或:

export COMMANDCODE_API_KEY="user_..."

2、在界面里接上提供方

重启 dsh web 之后:

  1. 打开 设置 → Command Code,填入 API key,点保存。徽章变成「已配置」表示宿主已经存下密钥。
  2. 打开 设置 → Models,应看到 Command Code 卡片。
  3. 在模型选择器的 commandcode 分组里选一个当前套餐包含的模型,发一条消息。

README 给的入门级例子是 deepseek/deepseek-v4-flash。开放权重模型(DeepSeek / Qwen / Kimi / MiniMax)通常可用;Claude / GPT / Gemini / Grok 这类前沿模型可能要 Pro / Max,或走按需额度。

3、看用量

标准 web profile 带 commands 服务。对话里输入:

/commandcode

/commandcode status。输出和设置页的账户用量卡片同源:账号、请求数、花费、额度、窗口限制。某个账户接口临时失败时,其余项仍会显示,并在末尾注明失败。

4、需要改连接参数时

同一组选项也可以写在 $DSH_HOME/settings.yaml,按请求覆盖,不用重启:

llm-commandcode:
  apiKeyEnv: COMMANDCODE_API_KEY
  apiBase: https://api.commandcode.ai
  workingDir: /path/to/project
  modelsCachePath: ~/.commandcode/models-cache.json
  requestTimeoutMs: 60000
  streamIdleTimeoutMs: 300000

workingDir 可选,留空则用进程当前工作目录,并上报给 Command Code API。requestTimeoutMs 是等待首个响应字节的上限,默认 60 秒;streamIdleTimeoutMs 是流停顿多久算死连接。0.2.3 起默认 300 秒,避免 xhigh / max 这类长时间静默思考被看门狗误判。网络慢但稳定时,可以在设置页把这两个值再调大。

适用场景与注意事项

适合这些人:

  • 已经有 Command Code 订阅,希望在 dsh web 里直接选模型、改推理强度,而不是只在官方 CLI 里用
  • 需要实时目录、套餐过滤、用量卡片,而不是在配置文件里手写一份模型列表
  • 入门套餐主要用开放权重模型,偶尔再按套餐或按需额度点开前沿模型

使用前注意下面几条,均来自目录页安全提示和仓库 README,不是额外发挥。

  1. 权限。 插件以当前 dsh 进程权限运行,安装可能执行构建脚本。先核对 GitHub 仓库和 MIT 许可证;生产环境用版本号或 commit 哈希钉死。
  2. 这不是官方应用商店。 DeepSeek Harness 官方只提供插件机制和 dsh-plugin topic;社区目录 是独立站点。插件本身也声明与 Command Code, Inc. 无关。
  3. 套餐仍由服务端裁决。 选择器过滤会失败开放,真正拦住不在套餐内的模型的是 403 MODEL_NOT_IN_PLAN
  4. 图片。 只有官方注册表标了 Vision 的模型收图片,且依赖 dsh 附件服务。会话里已经有图时,切到纯文本模型会被 Harness 层拒绝;插件只会把提示改写成更清楚的中文,拦不住这次切换。
  5. 协议能力。 线上格式没有 stop 序列,带了会抛 UNSUPPORTED_OPTION。推理块不会重放到后续轮次,只有带配对结果的工具调用会重放。
  6. 网络。 默认只访问 api.commandcode.ai(可用 apiBase 改)。Node 的 fetch / undici 不读 HTTP_PROXY / HTTPS_PROXY,需要代理的环境会表现为传输层失败(ECONNREFUSEDENOTFOUNDsocket hang up 等),而浏览器访问同一站点却正常。README 建议配 dispatcher,或把该主机加入白名单。
  7. 无遥测。 本地会兜底读取 ~/.commandcode/auth.json,读写模型缓存;密钥经凭据服务读取,README 写明不打进日志。

小结

dsh-commandcode-provider 在 DeepSeek Harness 的 web profile 里补了一个 commandcode 提供方:实时目录、套餐感知的选择器、reasoning-effort、Vision 图片,以及设置页上的密钥和用量卡片。它把 dsh 的请求接到 Command Code CLI 使用的 /alpha/generate,让已有订阅可以留在 Harness 里用,而不必再维护一份手写模型表。

装的时候优先 npm 包 @mars-sea/dsh-commandcode-provider,并固定版本;从 GitHub 装则按目录页命令加上 commit。装前检查源码和 MIT 许可证,记住插件与当前 dsh 进程同权。

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-commandcode-provider/

GitHub:https://github.com/Mars-Sea/dsh-commandcode-provider

npm:https://www.npmjs.com/package/@mars-sea/dsh-commandcode-provider

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜