DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

freeqin123 /

freeqin123/dsh-commandcode-plans-provider

Verified

Command Code 订阅(Go/GOAT/Pro/Max)接入 DeepSeek Harness:档位过滤不隐藏任何模型、可视化配置 API Key、底部用量环、图片输入

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@8b52e672

dsh-commandcode-plans-provider

English · 第三方声明

让 DeepSeek Harness (dsh) 直接使用 Command Code 订阅(Go / GOAT / Pro / Max)里的模型 —— 不需要安装 Command Code CLI,也不需要 Provider API。

  • 实时模型目录:启动时拉取,按档位过滤,默认不隐藏任何模型
  • 模型名标注上下文容量:Claude Sonnet 5.5 [1M]、GPT-5.5 [400K]、Kimi K2.7 Code [256K]
  • 逐模型「推理等级」:只列出该模型真实支持的档位
  • 可视化配置 API Key:在插件卡片里粘贴保存即可,不用手改任何配置文件
  • 底部用量环:5 小时窗口占用 + 重置倒计时(≥90% 转红),点击展开周窗口与余额
  • 图片输入、工具调用、流式输出

为什么需要这个插件

Command Code 的订阅分两类:

类型 接入方式
Provider API 计划 提供标准 OpenAI 兼容端点,dsh 原生就能接,不需要本插件
Go / GOAT / Pro / Max 订阅 调用 OpenAI 兼容端点会返回 403 upgrade_required,只能走私有 CLI 网关 POST /alpha/generate

本插件复刻那个私有网关的协议 —— 请求信封、逐行 JSON 流、事件映射 —— 把订阅变成一个 dsh 原生 provider。

所以不需要额外安装任何东西:那个网关就是普通的 HTTP + JSON,官方 CLI 只是它的一个客户端而已。


安装

dsh plugin --profile web add github:freeqin123/dsh-commandcode-plans-provider

如果报 ERR_PNPM_ADDING_TO_ROOT,说明你的 profile 目录是一个 pnpm 工作区,加上 -w 即可:

dsh plugin --profile web add -w github:freeqin123/dsh-commandcode-plans-provider

装完重启 dsh。插件列表里会出现本插件(bundle id 为 commandcode-plans-provider)。


配置 API Key

在 dsh 里进入 插件 → 本插件 → 配置:

API 密钥   [粘贴你的 key]                    [保存] [清除]
           ● 已保存(来源:file)· user_xxxx…ABCD

套餐档位   ( Go ) ( GOAT ) ( Pro ) ( ●Max )
           显示该档位及更低档位 · 配置状态 ready

           [测试连接]   网关可达 · 5 小时用量 0%

几点说明:

  • 密钥写进 dsh 的凭据库(引用名 COMMANDCODE_API_KEY),不写进设置文档
  • 读路径不返回明文 —— 这是 dsh 凭据服务的设计("Secret values cross in one direction only")。所以界面只显示掩码指纹 user_xxxx…ABCD,用来确认"当前用的到底是哪把 key",而不是把密钥显示出来
  • 测试连接会真的拿你的 key 打一次计费接口,成功/失败都给出原文(例如 key 失效会显示上游的 401)
  • 不想用界面也可以:把 COMMANDCODE_API_KEY 写进 ~/.dsh/.credentials.yaml,或设为环境变量

使用

1. 选模型

设置 → 模型 → Command Code,然后选一个模型。名字后面的 [1M] 就是它的上下文容量,取自模型列表接口的 context_length(真实逐模型值,不是固定值)。

2. 选档位

在插件卡片里点档位按钮。语义是「显示该档位及以下包含的全部模型」:

档位 显示范围
Go 所有 Go 模型
GOAT 所有 Go + GOAT 模型
Pro 所有 Go + GOAT + Pro 模型
Max(默认) 全部(凡 catalog 标了已知档位的模型)

默认 max + 「档位未知的模型也显示」两者合起来 = 开箱不隐藏任何模型。

这是刻意的设计:不少同类实现默认档位是 go,导致 GOAT 用户看不到自己有权使用的模型。

3. 推理等级

模型选择器里的「推理等级」由本插件逐模型填充,列出该模型真实支持的档位(来自官方 CLI catalog 的 Efforts 列,比如 Low / Medium / High / X-High / Max)。

另有 Off —— 它表示不发送 reasoning_effort 字段,也就是让模型自己决定。

如果某个模型没有推理等级可选,选择器会显示"当前模型未提供推理等级",这也是真实情况。

4. 用量

底部 composer 那一行会多出一个环:

Command Code ◯ 34%  2h13m
  • 环 = 5 小时窗口的占用比例
  • ≥90% 转红,用于提前发现"快用满了"
  • 后面跟重置倒计时
  • 点击展开:5 小时 / 周窗口 / 余额,以及各自的已用值与上限

注意:5 小时窗口用了 0% 时环是空的一圈,这是正常的,不是坏了。

5. 图片

支持视觉的模型可以直接贴图。

按官方 CLI 的分类,DeepSeek / GLM / Qwen / MiniMax / Grok 4.6 等是纯文本模型,给它们贴图会被明确拒绝(不是静默丢弃 —— 静默丢图会让你以为模型"看不见"是它笨)。换 Claude 或 Grok 4.5 这类模型即可。

关于图片有两个设计事实值得知道:

  1. 网关是无状态的:不保存图片,也没有上传接口。所以每轮都要把整段历史里的图片重新内联发送(官方 CLI 同样是这个行为)。这意味着同一张图在第 3 轮对话里仍要再付一次开销。
  2. 有总预算:一轮里内联的 base64 总量超过 maxRequestImageBytes(默认 2 MiB)时,插件不发请求,而是要求 dsh 先把最旧的图片 offload 掉再重试。所以没有图片会被无声地丢弃。

已知限制

  • 用的是未公开接口:/alpha/generate 是 Command Code 的私有网关,官方随时可能改动或封禁。本项目与 Command Code 无任何关联。
  • 必须有订阅:没有订阅的话 Provider API 那条路本来就够用,不需要本插件。
  • 单账号:不支持多账号并行。
  • 暂无自动重试:遇到 RATE_LIMIT 会直接把错误报出来,不会自动退避重试(网关前面有 Cloudflare 并发限流,多开几个会话可能触发)。
  • 图片重复内联:见上文,长对话里图片多会明显增加开销。

故障排查

现象 先看哪里
底部环一直是 — 宿主日志里 [commandcode-plans-provider] 开头的行
模型列表为空 日志里的扫描结果。模型列表接口失败时会保留上次目录而不是清空
401 key 失效了,重新贴一把
403 upgrade_required 版本头过期。插件会自动失效缓存并重试一次;仍失败请提 issue
RATE_LIMIT 网关限流,稍后再试
贴图被拒 该模型按官方分类是纯文本,换支持视觉的模型
Command Code 对话接入尚未完成 dsh 没重启 —— 宿主代码改动必须重启进程才生效

日志位置:~/.dsh/logs/,或者直接看你启动 dsh 的那个终端窗口。


开发

npm install
npm run verify   # 类型检查 + 编译 + 三个冒烟测试
src/                宿主半边
  index.ts            配置、目录扫描、定时重扫、注册 provider / 适配器 / 用量命名空间
  catalog.ts          双源模型目录、档位策略、图片能力判定、上下文标签
  plan-tier.ts        档位定义与 planId 映射
  protocol.ts         /alpha/generate 信封、逐行 JSON 解析、事件 → StreamChunk 映射
  adapter.ts          LlmAdapter 实现(listModels / resolveModel / stream)
  cli-version.ts      x-command-code-version 动态解析(缓存 + 回退 + 过期重试)
  usage.ts            用量与限额接口
  remote.ts           Remote 服务控制器
  typert.ts           把命名空间注册到 Typert 注册表
client/index.js     浏览器半边:底部用量环 + 插件配置卡
scripts/            三个离线冒烟测试(客户端加载 / 目录解析 / 协议映射)

lib/ 是故意提交进仓库的 —— dsh 直接从 lib/index.js 加载,而从 github: 安装不会执行构建步骤。改完源码记得跑一次 npm run build 再提交。

三个冒烟测试都不联网,但覆盖的是真会出错的契约:客户端半边能否加载(曾经有一版错误让整个 Web UI 起不来)、catalog 列序被调换后档位是否仍正确、流式映射的块开闭与用量去重不变量。


Credit

协议层源自 brent-weatherall/opencode-commandcode-provider(MIT,Copyright © 2026 Brent Weatherall)。那是一个给 opencode 实现同样能力的项目。

本项目是它在 dsh 上的重写:请求信封结构、逐行 JSON 流的事件映射、工具调用与图片的转换规则、纯文本模型名单等,均沿用其契约。按 MIT 要求,上游版权声明已保留在 THIRD-PARTY-NOTICES.md 中。

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 8b52e672df15

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout