Skip to content
dsh.fish
Bundle

@jiesou/dsh-commandcode-go-provider

Command Code Go provider adapter for dsh: scan the Go-plan model catalog dynamically and serve /alpha/generate through the harness LLM seam

Source
jiesou
stars
6 stars
License
MIT
Updated
Updated 3 days ago

Readme

# dsh-commandcode-go-provider

Command Code Go API provider for dsh.

[English](README.en.md)

Command Code 提供的订阅分两种:

1. **Provider API**:提供标准 OpenAI 兼容端点,可以直接接入任何 agent harness,不需要第三方插件。
2. **Go / GOAT / Pro Plan**:调用 Provider API 端点会返回 `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)自然落在其中,无需维护品牌名单。
- 同一份 catalog 还提供每个模型支持的 Reasoning Effort 档位。

## 安装

从 npm 安装(预构建产物,推荐):

```sh
dsh plugin --profile web add @jiesou/dsh-commandcode-go-provider
```

或从 GitHub 安装:

```sh
dsh plugin --profile web add github:jiesou/dsh-commandcode-go-provider
```

## 安装之后

Command Code 的 API Key 应写入 `~/.dsh/.credentials.yaml`:

```sh
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 及模型即可开始对话。

### 配置项

全部可选,默认即可用:

```yaml
- id: commandcode-go-provider
  name: '@jiesou/dsh-commandcode-go-provider'
  config:
    apiKeyEnv: COMMANDCODE_API_KEY
    baseURL: https://api.commandcode.ai
    maxTokens: 64000
    defaultContextWindow: 1000000
```

| 配置项 | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| `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 时的兜底值 |
| `accounts` | `object` | `{}` | 多账号字典:每个 key 是一个独立 provider 路由。缺省或空 = 单账号模式,直接使用顶层字段 |

### 多账号

`accounts` 字典把同一个 Go 计划的多个账号暴露成多个独立 provider(模型选择器里各占一项,各持各的 API Key)。每个账号字段缺省时回退到顶层同名字段,`displayName` 缺省用账号 key:

```yaml
- 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` | 覆盖该账号的兜底容量 |
| `retryPolicy` | `object` | 顶层 `retryPolicy` | 覆盖该账号的重试策略 |

模型目录只扫描一次、所有账号共享;改动设置后下个请求即生效,无需重启。把 `accounts` 清空或删掉即回到单账号模式。

Reasoning effort 不需要配置:档位来自官方 CLI catalog,模型只暴露它真正接受的档位(`low`/`medium`/`high`/`xhigh`/`max`),加一个显式 `Off` 入口。**Default** 表示"不发送 `reasoning_effort`"字段,由上游自行决定深度。**Off** 与 Default 的 wire 形态一致,但显式声明"不推理"的意图。catalog 里档位为空的模型干脆不显示档位选择器。

## Credit

移植自 [brent-weatherall/opencode-commandcode-provider](https://github.com/brent-weatherall/opencode-commandcode-provider) 到 DSH。

本 plugin 加入了动态 reasoning effort 提取功能,从 <https://cdn.jsdelivr.net/npm/command-code@latest/dist/bundled/command-code-knowledge/reference/models.md> 解析。

## License

[MIT](LICENSE)

Install

dsh plugin --profile web add github:jiesou/dsh-commandcode-go-provider

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source