deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
Command Code Go API provider for dsh.
Command Code 提供的订阅分两种:
403 upgrade_required,只能通过 Command Code 私有的 CLI 网关 /alpha/generate 使用(vendor lock-in)。本插件针对第二种情况:通过 /alpha/generate 流式接入 DSH 的原生 LlmAdapter,让 Go / GOAT / Pro Plan 用户直接在 DSH 中使用订阅的模型。模型列表不写死在代码里,插件在启动时从 /provider/v1/models 拉取实时目录,并按官方 CLI catalog (CDN) 的 Min plan 列筛选:
Min plan 为 Go and above 的模型(计划顺序 Go < GOAT < Pro < Max),Go 计划包含的 premium 例外(GPT-5.6 Luna、Grok 4.5、Muse Spark 1.2 Contributor)自然落在其中,无需维护品牌名单。从 npm 安装(预构建产物,推荐):
dsh plugin --profile web add @jiesou/dsh-commandcode-go-provider
或从 GitHub 安装:
dsh plugin --profile web add github:jiesou/dsh-commandcode-go-provider
Command Code 的 API Key 应写入 ~/.dsh/.credentials.yaml:
echo 'COMMANDCODE_API_KEY: [your key, be like user_xxxx]' >> ~/.dsh/.credentials.yaml
模型列表 无需任何配置 ,插件在启动时从 /provider/v1/models 同步你的 Go 计划包含的模型,并从官方 CLI catalog (CDN) 合并每个模型的 Reasoning Effort 支持。挂载时上游不可达也不挂——目录暂时为空、不会拖垮插件。装完后在 Web 的 Models 页面选择 Command Code Go provider 及模型即可开始对话。
全部可选,默认即可用:
- id: commandcode-go-provider
name: '@jiesou/dsh-commandcode-go-provider'
config:
apiKeyEnv: COMMANDCODE_API_KEY
baseURL: https://api.commandcode.ai
maxTokens: 64000
defaultContextWindow: 1000000
maxRequestImageBytes: 2097152
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
apiKeyEnv |
string |
"COMMANDCODE_API_KEY" |
读取 API Key 的环境变量名(或 credential ref) |
baseURL |
string |
"https://api.commandcode.ai" |
Command Code 网关 base URL,/alpha/generate 自动追加 |
maxTokens |
number |
64000 |
单次请求输出 token 上限 |
defaultContextWindow |
number |
1000000 |
模型无精确 contextWindow 时的兜底值 |
maxRequestImageBytes |
number |
2097152(2 MiB) |
单次请求允许内联的 base64 图片字节上限 |
accounts |
object |
{} |
多账号字典:每个 key 是一个独立 provider 路由。缺省或空 = 单账号模式,直接使用顶层字段 |
http1 |
boolean |
false |
用 HTTP/1.1 发网关请求。Node ≥ 26 的 fetch 默认协商 HTTP/2 并把请求多路复用到一条连接上,网关边缘(Cloudflare)在高并发下会用 ENHANCE_YOUR_CALM 重置流;HTTP/1.1 把同一个限流变成可读的 429 |
accounts 字典把同一个 Go 计划的多个账号暴露成多个独立 provider(模型选择器里各占一项,各持各的 API Key)。每个账号字段缺省时回退到顶层同名字段,displayName 缺省用账号 key:
- id: commandcode-go-provider
name: '@jiesou/dsh-commandcode-go-provider'
config:
accounts:
commandcode-1:
displayName: Command Code Go 1
apiKeyEnv: COMMANDCODE_API_KEY
commandcode-2:
displayName: Command Code Go 2
apiKeyEnv: COMMANDCODE_API_KEY_2
baseURL: https://api.commandcode.ai
retryPolicy:
mode: always
| 账号字段 | 类型 | 缺省 | 说明 |
|---|---|---|---|
displayName |
string |
账号 key | 模型选择器里的显示名 |
apiKeyEnv |
string |
顶层 apiKeyEnv |
该账号的 credential ref,在 Web Models 页对应账号卡片里写入 |
baseURL |
string |
顶层 baseURL |
覆盖该账号的网关地址 |
maxTokens |
number |
顶层 maxTokens |
覆盖该账号的输出上限 |
defaultContextWindow |
number |
顶层 defaultContextWindow |
覆盖该账号的兜底容量 |
maxRequestImageBytes |
number |
顶层 maxRequestImageBytes |
覆盖该账号的图片字节上限 |
retryPolicy |
object |
顶层 retryPolicy |
覆盖该账号的重试策略 |
模型目录只扫描一次、所有账号共享;改动设置后下个请求即生效,无需重启。把 accounts 清空或删掉即回到单账号模式。
Reasoning effort 不需要配置:档位来自官方 CLI catalog,模型只暴露它真正接受的档位(low/medium/high/xhigh/max),加一个显式 Off 入口。Default 表示"不发送 reasoning_effort"字段,由上游自行决定深度。Off 与 Default 的 wire 形态一致,但显式声明"不推理"的意图。catalog 里档位为空的模型干脆不显示档位选择器。
/alpha/generate 是无状态的:网关不保存图片,也没有上传接口(官方 CLI 同样把整段历史里的图片每轮内联重发一次)。所以本插件按 DSH 的路由标准处理图片:
maxRequestImageBytes(默认 2 MiB)时,不发请求,而是抛出 IMAGE_OFFLOAD_REQUIRED 并报出需要 offload 的张数。DSH 会据此把最旧的图片记入 image/offload 事件并重试;之后每轮都以占位文本代替这些图片的字节,模型仍能从占位文本里读到图片身份和可读路径。两个值都是 base64 口径(约等于原图字节 ×4/3)。默认组合约等于"一张整尺寸图 + 一张半尺寸图":想更省流量就调小,想给模型更多图就调大。注意 maxRequestImageBytes 必须大于单张上限的 base64 长度(1 MiB 图约 1.4 MB),否则一张图也放不下。
声明在 package.json 的 dsh.compatibility:DSH >=0.1.7-alpha.1 <0.2.0,Node.js ^22.19.0 || >=24.0.0,Profile web / headless。
>=0.1.7-alpha.1 是硬下限,不是偏好:该版本起 dsh-llm 把工具结果改成独立的 role: 'tool' 消息(toolCallId 移到消息层),并重写了 dsh-settings 的表单模型(installSection 被 SettingsForms 取代、配置字段需标记 volatile() 才会出现在设置页)。本插件按新模型实现,0.1.6 及更早的 role: 'user' + tool-result block 形态不再支持。
逐版本证据(每个版本都用 dsh plugin add <tarball> 装进一次性 Profile,冷启动到发出真实请求,再卸载):
| DSH 版本 | 安装 | 启动 | 卸载 |
|---|---|---|---|
| 0.1.7-rc.2 | 通过 | 通过 | 通过 |
0.1.7-alpha.1 / alpha.2 / rc.1 满足声明下限,但未逐版本实测。
复现方式:DSH_HOME=<空目录> dsh --profile compat --from-default-profile headless,装入对应版本的 @deepseek-ai/dsh-base / 依赖与插件 tarball,dsh --profile compat --dump-config 检查插件行,冷启动用真实网关请求校验 provider 与模型目录,最后 dsh plugin --profile compat remove 复查卸载后仍能启动。
移植自 brent-weatherall/opencode-commandcode-provider 到 DSH。
本 plugin 加入了动态 reasoning effort 提取功能,从 https://unpkg.com/command-code@latest/dist/bundled/command-code-knowledge/reference/models.md 解析。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。