npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@mars-sea/dsh-commandcode-provider

v0.13.3

Published

Unofficial DeepSeek Harness LLM provider plugin for Command Code, ported from pi-commandcode-provider (MIT). Registers the 'commandcode' provider route with a Models-page card and live model catalog.

Readme

dsh-commandcode-provider

English | 简体中文

Awesome GitHub Repo stars DeepSeek Harness PRs Welcome CI License: MIT npm

非官方 DeepSeek Harness 的 LLM provider 插件,用于 Command Code,移植自 pi-commandcode-provider(MIT 协议)。

这是一个社区集成。你需要自己的 Command Code 账号、API key 或订阅,并遵守 Command Code 的服务条款。本项目与 Command Code, Inc. 无关。

功能一览

  • 插件包:一条 dsh plugin add 命令安装到任意 dsh 配置,注册 commandcode provider 路由,带实时模型目录。
  • 专属设置页:统一的账户列表(密钥、网页登录、实时额度、专用模型)、模型显示、隐私开关与连接参数。
  • 模型分析:从设置页打开,按最近会话或日期查看历史词元、估算成本、响应速度与失败/重试,比较固定工作量在其他可见模型上的价格和客观能力。包含已关闭会话、去除分支继承用量,显示缺失数据和读取覆盖;完整时间范围可折算 30 天成本。不自动推荐、不评价任务质量。金额按当前价重算,不是账单;统计口径与限制。
  • 终端界面同样可用:同一次安装即可服务 dsh-TUI 配置,终端里有自己的 /settings → Command Code 页面来填 key 和调模型。
  • Models 页快捷卡片:设置 → Models → Command Code 卡片内直接显示 key 状态、粘贴输入框和登录按钮。
  • 浏览器内登录获取 key:设置页一键发起官方授权(与 cmd login 同一流程),完成后密钥自动写入本机凭据服务,无需手动创建或粘贴;不可用时随时退回手动粘贴。
  • 多账户轮换:一个账户用量打满后,请求自动切换到下一个账户。详见多账户轮换。
  • key 配置灵活:设置页填写、环境变量或官方 CLI 登录文件均可。
  • 模型选择器标注:每个模型标注最低套餐、折扣/FREE 徽章、峰谷时段、图片支持与上下文长度,免费模型置顶。
  • 按套餐过滤:默认隐藏超出订阅套餐的模型,可一键关闭;「模型白名单」可进一步只保留常用模型。
  • 推理强度支持:支持推理强度的模型可在选择器中选择档位。
  • 图片输入:Vision 模型支持发送图片。
  • 套餐与配额面板:可选的 Command Code 卡片位于侧边栏底部(Settings 正上方),显示当前服务账号的套餐与 5 小时 / 每周两个配额窗口;点击后在中间栏打开面板,包含计费周期、两个窗口的进度条与重置时间、月度额度消耗,以及已购买 / 赠送余额。面板右上角的 × 按钮可随时把中间栏交还给会话(不会切换当前会话)。默认关闭——在 设置 → Command Code → 集成与显示 中打开「在侧边栏显示额度卡片」即可显示,同一开关也能随时隐藏(隐藏时左侧不渲染任何内容,也不会为其后台刷新用量)。面板文案跟随 Harness 显示语言(中文 / English)。
  • 会话费用估算:在输入框下方的 token 计数旁及用量对话框中显示估算金额(≈),根据持久化历史中每次请求的模型、请求时间和上下文阶梯分别计价。切换模型或稍后查看不会重新定价之前的请求。混合供应商或缺少费率时显示已定价部分的小计(≥);缺少历史事实或完全无法定价时不显示金额。会话内的自动/手动 compaction(上下文压缩)会额外发一次模型请求,其用量记在 compaction/summary 事件上,现在同样计入 Command Code 成本(历史模型分析一并计入);其他 provider 写的摘要仍不计价。结果基于插件内的价格快照,不等同于供应商账单。同样固定为英文。
  • 联网搜索:dsh 的 web_search 工具由 Command Code Provider API(/alpha/web-search)承载,复用聊天同一个 key 与端点,无需单独配置搜索 key 或地址。详见联网搜索。

安装

本版本只支持 dsh 0.2.0-rc.2(RC,候选发布版)与 dsh 0.2.1-alpha.3(alpha,早期测试版)。维护策略为每条通道只保留官方最新且经过验证的一个版本;2026-10-14 核对时分别对应 npm 的 latest 与 alpha 发布标签。peer(对等依赖)范围和兼容记录只列这两个精确版本。使用 0.2.1-alpha.2 的配置需先升级引擎,再安装本构建:

dsh plugin --profile web add @mars-sea/dsh-commandcode-provider@latest
  • 更早的 dsh 版本。 0.1.2–0.1.7 线已不再支持:那些引擎早于 0.1.7 的设置重写、RequestMessage 消息封装和持久化图片卸载契约,用来桥接两代引擎的兼容代码已经删除。覆盖 0.1.7 的最后一个插件版本是 0.11.17;0.1.2–0.1.6 线的最后一个版本是 0.11.11;0.5.0 时代 Harness 线的最后一个版本是 0.9.1。三者都按精确版本安装,且都不再维护:

    dsh plugin --profile web add @mars-sea/[email protected]   # dsh 0.1.7
    dsh plugin --profile web add @mars-sea/[email protected]   # dsh 0.1.2–0.1.6
    dsh plugin --profile web add @mars-sea/[email protected]     # dsh 0.5.0 线

pnpm 11 会拦下刚发布的新版本。 它的 minimumReleaseAge 默认为 1440 分钟,发布不足一天的版本会被跳过,@latest 解析到上一个版本 —— 而且是静默的,命令照样以成功退出。想装 24 小时内发布的版本,必须写精确版本号:

dsh plugin --profile web add @mars-sea/[email protected]

这一点对每个 profile 都成立,包括下面的终端界面。

插件可直接在 pnpm 10 的全新插件市场 generation 中安装。所有 Harness 包都由插件声明为 Host peer,由当前 dsh profile 统一管理,不要另行添加 dependency。其中 @deepseek-ai/dsh-* 共用同一个精确版本析取;@deepseek-ai/cordis 与 @deepseek-ai/schemastery 则分别写成配对范围 ~4.0.4 || ~4.0.5-alpha.1 与 ~3.18.4 || ~3.18.5-alpha.1——上游每次发引擎都会把这两个包重写成随引擎发布的版本。上游曾在 0.2.1-alpha.1 删除 @deepseek-ai/dsh-invariants 这个包,因此插件不再声明它。

更新

用与安装时相同的 tag 更新:

dsh plugin --profile web update @mars-sea/dsh-commandcode-provider@latest     # dsh 0.2.0-rc.2 或 0.2.1-alpha.3
dsh plugin --profile web update @mars-sea/[email protected]      # 更早的 dsh(0.5.0 线,不再维护)

每个 profile 各自更新 —— 终端界面有独立的插件列表(见下文):

dsh plugin --profile dsh-tui update @mars-sea/[email protected]

要更新到发布不足 24 小时的版本,和上面的安装一样写精确版本号;pnpm 11 的年龄门禁会把 @latest 解析成上一个版本。

然后重启 Web 应用。

获取 API key

最简单的途径是官方 CLI(Node.js 22+):

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

也可以不装 CLI,直接在 设置 → Command Code 点击「登录 Command Code」:浏览器会打开 commandcode.ai 授权页(与 cmd login 相同的流程),完成后密钥自动写入本机凭据服务。还可以在 Keys 设置页 创建 key 后手动粘贴,或 export COMMANDCODE_API_KEY="user_..."。

登录流程依赖 Host 与浏览器在同一台机器(回环回调)。Host 在远程机器上时请使用手动粘贴;若组合配置里写了字面量 apiKey,它仍优先于登录写入的凭据。

验证是否生效

重启后,在 设置 → Command Code 填入 API key 并保存;设置 → Models 出现 Command Code 卡片,模型选择器在 commandcode 下列出实时目录。选择套餐内包含的模型发送消息即可。

终端界面(dsh-TUI)

插件同样支持终端前端。每个 dsh profile 有独立的插件列表,所以上面那条 Web 安装命令不会装到终端里 —— 还要把插件装进 dsh-tui profile:

dsh plugin --profile dsh-tui add @mars-sea/[email protected]

这里请写精确版本号。新版本发布后的 24 小时内,只写包名(或 @latest)会被静默解析到上一个版本 —— 安装命令照样成功,但 profile 里拿到的是旧版本,结果就是全新的终端安装里既没有 /settings → Command Code 页面,也看不到任何 commandcode 模型。

之后在模型选择器里选,或者直接指定:

/model commandcode/deepseek/deepseek-v4.1-flash

/model 会列出所有已注册的 provider,Command Code 的实时目录连同套餐/优惠/上下文标注一起出现,/commandcode 用量面板在终端里同样可用。

填写 API key。 终端没有网页版 Models 页面,所以插件会在终端设置页里声明自己的页面 —— /settings → Command Code —— 包含 API key、API 地址、隐藏套餐外模型、当前账号和命令语言。key 字段是只写的:它只显示"是否已配置",输入的内容写进凭据库,不会写进任何 settings 文档。只用终端的用户只需要访问这一个页面。

选择模型。 同一页面把整个模型目录列成勾选框,按套餐档位分组(Go → GOAT → Pro → Provider),免费模型排在最前,不需要手打任何模型 id。默认全部勾选——未设置白名单就等于"显示全部模型";把不想在选择器里看到的取消勾选即可。选择会以「单模型覆盖」的形式保存在网页端编辑的 visibleModels 列表旁边,两个界面可以混用,手写的 visibleModels 也照常生效。

也可以在终端外配置 key。凭据解析先命中者生效,顺序如下:

  • 组合配置里写死的字面量 apiKey 最优先,写了就一直用它。
  • 否则按凭据引用解析(apiKeyEnv,默认 COMMANDCODE_API_KEY)。在 Web、桌面端、SDK、ACP 等挂载了凭据服务的 profile 里由凭据服务统一解析:0.2.1-alpha.3 起已保存的凭据优先于启动环境变量,启动环境变量与 .env 是其后的回退;0.2.1-alpha.2 及更早的顺序相反,那时环境变量优先。
  • headless(无头)profile 有意不挂载凭据服务,因此只有启动环境变量、项目 .env、$DSH_HOME/.env 生效 —— 在页面上保存过的 key 不会到达 headless 运行,请为这类运行导出变量或写 .env。
  • 最后兜底是官方 CLI 写入的 ~/.commandcode/auth.json。
export COMMANDCODE_API_KEY="user_..."   # 启动环境变量
cmd login                               # 写入 ~/.commandcode/auth.json

把 Command Code 设为默认模型。 dsh-TUI 写死了自己的 agent 路由,它的 agent-default-model 设置不会覆盖它。要让每个会话默认走 Command Code,请在自己的 profile patch($DSH_HOME/profiles/dsh-tui/cordis.patch.yml)里覆盖 agent-loop 行:

- id: agent-loop
  inject: [tuiStartup]
  config:
    agents:
      - id: main
        provider: commandcode
        model: deepseek/deepseek-v4.1-flash
        reasoningEffort: max
        cwd: !!js process.cwd()

引擎版本要求。 插件维护两个引擎:dsh 0.2.0-rc.2 与 dsh 0.2.1-alpha.3。@deepseek-ai/dsh-* 的 peer(对等依赖)为 0.2.0-rc.2 || 0.2.1-alpha.3;@deepseek-ai/cordis 与 @deepseek-ai/schemastery 仍使用随引擎配对的范围 ~4.0.4 || ~4.0.5-alpha.1 与 ~3.18.4 || ~3.18.5-alpha.1。兼容记录恰好包含两个版本,同通道升级验证后替换旧版,不累加已支持版本、不放行未验证的邻近版本。npm run test:engine 与 npm run test:install 均逐版本验证。旧引擎安装说明见安装。

用量面板

插件注册了 /commandcode 斜杠命令,显示各账户的用量状态:

/commandcode        (或 /commandcode status)

命令的文案跟随 shell 的语言设置:在 llm-commandcode 插件配置里显式写 lang: 'en' | 'zh' 优先;否则读 LC_ALL/LANG;再否则回退到 zh。web 设置页是独立表面,跟随浏览器自身的语言偏好。

多账户轮换

有多个 Command Code 订阅时,插件可以在一个账户达到用量限额后自动切换到下一个账户:

  • 配置:在 设置 → Command Code 的「账户」卡片点击「添加账户」,可填写备注名,然后选择「网页登录」(在浏览器授权后自动保存 key;登录未完成不会留下空账户)或「粘贴密钥」。添加、重命名、更换或清除密钥、移除、固定等账户操作立即生效,无需点击页面底部的「保存」;「保存」只作用于页面上的其他设置。顶层 key 始终是第一顺位的 default 账户。
  • 手动切换:在账户行的「⋯」菜单中选择「固定使用此账户」即可指定优先账户;所选账户耗尽时自动回落到其他账户,窗口重置后自动恢复。「取消固定」回到自动轮换。
  • 专用模型:展开某个账户,从实时模型目录多选它的「专用模型」。请求这些模型且该账户可用时使用该账户;账户耗尽或密钥失效时自动回落到常规轮换。一个模型同一时间只属于一个账户,给另一个账户选择它会自动移过去(仍保存为 modelAccountRules)。
  • 只显示常用模型:在「模型」卡片的「可见模型」中勾选要保留的模型,模型选择器只列出这些;不勾选则显示全部(默认行为不变)。
  • 状态展示:每个账户行直接显示套餐、状态以及 5 小时 / 每周额度条,展开可查看完整报告;/commandcode 同样按账户显示状态。

等价的 YAML($DSH_HOME/settings.yaml 或组合配置):

llm-commandcode:
  apiKeyEnv: COMMANDCODE_API_KEY        # 第一顺位(default)账户
  activeAccount: COMMANDCODE_API_KEY_2   # 可选:手动指定当前账户(default 或某账户的凭据引用)
  accounts:                              # 之后的轮换顺序
    - label: Go #2
      apiKeyEnv: COMMANDCODE_API_KEY_2
    - label: Go #3
      apiKeyEnv: COMMANDCODE_API_KEY_3
  modelAccountRules:                     # 可选:按模型路由到账户(第一条命中生效)
    - models:                            # 目录模型 id(可多选)
        - deepseek/deepseek-v4-pro
        - deepseek/deepseek-v4-flash-vision-exp
      account: COMMANDCODE_API_KEY_2
    - models:
        - tencent/hy4-preview
      account: default
  visibleModels:                       # 可选:只在选择器中显示这些模型(目录模型 id),不填显示全部
    - deepseek/deepseek-v4-pro
    - tencent/hy4-preview

配置

设置 → Command Code 分为:账户(密钥、网页登录、实时额度、固定账户、专用模型)、模型(隐藏套餐外模型、可见模型)、隐私与安全(零数据保留 ZDR,默认关闭,见下)、集成与显示(用 Command Code 承载联网搜索、在侧边栏显示额度卡片,默认关闭),以及默认折叠的高级设置(API 地址、请求/流超时、传输重试次数、历史图片缓存优化)。工作目录已不在页面上显示,配置中的 workingDir 仍然有效。

同一组选项也位于 $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: 300000          # 默认 300s(与官方 CLI 一致)
  streamIdleTimeoutMs: 300000      # 默认 300s
  # offloadSeenImagesForCache: true # 可选:模型回复后不再重发旧图片,默认关闭
  showSidebarQuota: true           # 可选:在侧边栏显示套餐与配额卡片(默认关闭)
  zdr: true                        # 可选:请求只经由零数据保留上游(默认关闭)

连续图片导致的缓存回退

在 CLI 传输(/alpha/generate)上,即使此前所有请求消息逐字节一致,新图片也可能让服务端报告的缓存命中量退回第一张历史图片处。可在「高级设置」打开「已看过的图片不再重复发送」(offloadSeenImagesForCache):同一模型看过图片并回复后,插件通过 dsh 持久的 image/offload 事件把旧图替换成稳定文字占位;当前新图仍会送给模型,后续文本更容易保持缓存。默认关闭,因为模型如需重新查看已 offload 的图片,必须重新读取原文件或由用户再次附加。这是费用缓解方案,未修复 Command Code 服务端的多模态缓存行为。实测证据与限制。

联网搜索

当你的 dsh 部署加载了 web 能力(@deepseek-ai/dsh-web + @deepseek-ai/dsh-tool-web)时,模型所用的 web_search 工具会由本插件的 commandcode 搜索 provider 承载——它用与聊天相同的 API key 与 base URL 调用 Command Code Provider API 的 /alpha/web-search 端点。你无需另外配置搜索 key、端点或模型。

默认开启。 插件的 设置 → Command Code 页里有一个「用 Command Code 承载联网搜索」开关(webSearch,默认开)。开启时插件会自动把 commandcode 选为当前搜索后端;关闭则把选择权交还给之前的后端(比如 modsearch 等其他搜索插件可继续工作——不会被强制回退到 dsh 自带的 DeepSeek 搜索)。该开关在下一次搜索时生效,无需重启。

  • 该 provider 仅在 web 服务存在时以 commandcode 注册进 ctx.web;没有它,本插件仍是纯聊天插件。
  • 开关通过启动时与每次设置变更时在 web 接缝里选中 commandcode 来实现,同时记住被顶掉的后端;关闭开关(或卸载插件)时会恢复那个后端。若你想更稳妥地固定,可设置 searchProvider: commandcode(或 $DSH_WEB_SEARCH_PROVIDER=commandcode);即使本插件的运行时选中不可用,该配置仍然生效。
  • dsh 工具的 numResults 会被收敛到 Command Code 的取值范围(1–10,默认 5);结果映射为 dsh 的 WebSearchSource 结构(url/title/snippet)。

这里直接使用 Command Code Provider API(与官方 CLI 内置的 web_search 相同),因此与 DeepSeek 原生搜索后端不同。

零数据保留(ZDR)

Command Code 可以让请求只经由「不留存提示词与回复、也不用于训练」的上游——官方 CLI 的开关是 CMD_ZDR=1,Provider API 上则是在请求头发 x-cmd-zdr: 1(官方文档)。

默认关闭。 在「隐私与安全」卡片里打开「零数据保留(ZDR)」(zdr),或写进 profile 配置。本插件的实现方式:

  • 开启后,每次聊天请求都会带上 ZDR 请求头。插件仍维护官方 CLI 的例外名单(KNOWN_NON_ZDR_MODELS,截至 2026-10-14 共 22 个模型,例如 xai/grok-4.5、stealth/glyph-cluster:free、stepfun/Step-3.7-Flash、meta/muse-wonder-1.0)供查询。没有可用 ZDR 上游时,服务端返回 422 cmd_zdr_no_providers;插件不会去掉请求头重试。
  • 万一仍被拒绝(名单过期,或那一刻没有空闲的 ZDR 上游容量),错误信息会说明原因并给出关闭 ZDR 的办法,而不是抛出一个光秃秃的 HTTP 422。
  • ZDR 通常更贵:容量有限,按各上游实价透传计费,且每次请求落在哪个上游可能不同。会话费用读数仍按常规目录价估算;真实单价见 Command Code Studio 的用量页。
  • 各套餐均可使用;ZDR 请求按套餐的默认额度(而非提升额度)计量。

注意事项与限制

  • 图片输入按模型能力限制:仅 Vision 模型接受图片,纯文本模型会直接拒绝。
  • 图片尺寸按实际请求上报:适配器覆盖 imageRequestTarget(图片请求目标),把本路由真正发送的目标上报给宿主 —— 长边 1568、编码后上限 1 MiB;宿主的截图类调用方据此估算,拿到的是网关实际收到的尺寸与字节数,而不是归一化原图。
  • 含图片的会话切换到纯文本模型会被 dsh 拒绝——请改选带 Image 标记的模型,或先移除图片。
  • 图片很多的长会话不会中途失效:服务端对单次请求体有大小上限(约 50 MB,官方未公开),会话累积大量截图后,原本会在此后每一次请求都失败。现在超出预算的最旧图片会被替换成一段标明附件的"图片已省略"文字,较新的图片照常发送;若请求仍被判为过大,会先以更小的图片预算重试一次,再报错。
  • 不支持 stop 序列:携带它的请求会报错。
  • 在旧版 /alpha/generate 传输中,推理块不会重放到后续轮次;在 /provider/v1/chat/completions 传输中,历史推理会以 reasoning_content 回传,以便工具调用循环保留思维链。两种传输都只重放带配对工具结果的工具调用。
  • 模型目录无需 key 即可浏览;对话请求需要 key。

权限与隐私

本插件只在本地与你的 Command Code 账号之间通信:本地仅读写凭据存储与模型缓存文件(兜底读取 ~/.commandcode/auth.json);网络仅访问 Command Code API。无遥测。打开零数据保留(同样默认关闭)后,聊天请求必须经由 ZDR 上游;没有可用 ZDR 上游的模型会报错,不会按常规方式继续发送。

关闭 / 卸载

  • 禁用(不删除):编辑你 profile 的 cordis.patch.yml,注释掉(或移除)llm-commandcode 行,或设置 disabled: true,然后重启。

  • 完全卸载:

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

    你在 dsh 凭据库和 ~/.commandcode/auth.json 中的 API key 不会被改动。

开发

npm install
npm run typecheck   # tsc --noEmit
npm run build       # tsdown -> lib/

在 profile 里试用本地构建:

dsh plugin --profile web add /path/to/dsh-commandcode-provider

修改 src/ 后需重新运行 npm run build 并重启应用。

社区与反馈

许可证

MIT —— 见 LICENSE。部分内容移植自 pi-commandcode-provider(MIT)。

界面截图

模型选择器 —— 套餐档位、折扣/FREE、峰谷时段、Image 与上下文标注:

用量面板 —— /commandcode 的分账户报告:

设置页 —— 带实时额度的账户列表、模型显示、隐私开关与连接参数:

发布入口

发布包提供插件根入口、/client 网页入口、/locale/*.json 语言包及 /package.json 元数据。 源码只保存在仓库中;未发布的 ./src/* 不再列入导出声明。npm run test:pack 根据实际打包文件核对入口。