@ rainervil/ opencode- command 代码
命令代码 API 供应商 打开代码. 使用 Claude,GPT,双子座,DeepSeek,Quen,Kimi,GLM,MiniMax,Step等模型通过单一API键.
此插件用于命令代码账户, 包含 API 访问 。 GOAT是现场测试的基准;其他API启用的计划可以使用其账户有权获得的模型. 1美元Go计划没有提供商API接入. 该目录遵循了全提供商的模型列表,因此OpenCode中出现的模型并不意味着每个账户都可以调用. 见 GOAT计划细节 财务报告和审定财务报表 API 文件提供者。 。 。 .
此软件包保留一个 捆绑 模式目录流通过 CI. 没错 没有 需要一个本地 command-code CLI(英语:CLI). Catalog 补丁在绿色 PR 合并到 main。 。 。 .
原载 @brainervirus/commandcode-go-opencode-provider。使用这个名称.
贷项
此软件包基于 FanFan4204/ 打开代码命令代码提供者。这项工作始于 brent-weatherall/opencode-command-code-提供程序 以 布伦特·韦瑟尔. 感谢你们两个——FanFan为OpenCode提供这个repo继续,而Brent为原始插件,目录提取.
此软件包添加的内容
- 捆绑
models.json是默认的运行时间目录( 没有本地 CLI raise) . - V1和V2使用其本土插件和提供商表面. 五一号
server()填补provider.commandcode并注册 API- key 认证; V2setup()登记册提供者/模型的转换和关键/功能集成/connect财务报告和审定财务报表opencode auth login。 。 。 . - 通过边界验证
src/schemas.ts捆绑models.json编号 :manifest.json读取、提供商可用有效载荷,以及插件配置文件. - CLI 成本提取可能失败而不丢出模型; 官方文件填补缺失成本, 剩余支付缺口使用 模式.dev 作为同步时间的参考价格。 命令代码 免费 SKUs 保留
$0。 。 。 . - Vision vs 仅文本来源于指令代码 CLI 目录 (
inputModalities每个SKU. 模式.dev 仅在匹配时添加额外输入(video/audio/pdf). - 作出合理努力 变体 关于宣布的模型
reasoningEfforts。 。 。 . - 发布日期,家庭,输入限制,模型状态,销售商上下文限制,以及相匹配的上下文价格级流经捆绑的目录. V2 获得本地释放、家庭、投入、状态和分级田地;V1 保留其支持田地和基价
context_over_200k在有代表性的地方. - 供养者
supported_endpoints元数据选择每个模型的API路由. 消息在广告时首选;否则则首选"聊天补全"(Chat Fullers),而回放只在唯一的广告路线时使用. 这避免了在 DeepSeek V4.1 Flash 上观察到的错位响应函数调用启动事件#max在 OpenCode V2.0.18 中:response.output_item.added内含function_call所需项目arguments绳子。 准确的呼叫工具流现在通过 V1 和 V2 上的 Chat Professions. 反应图仍然可供仅用于反应模型,但目前的目录没有. Claude Sonnet 4.6 回来了MODEL_NOT_IN_PLAN(b) 题为“Claude访问”的信息“可在Pro及以上计划或额外点播使用”; 如果一个模型在有权使用的账户上失败,请 打开一个问题 与型号ID和OpenCode版本相接,或提交带有可复制固定的PR. - 静默的 OpenCode 启动( 诊断器到
startup.json,没有 studout. - 免费模式显示
(Free)当所有目录价格为零时, 在 V1 和 V2 上的显示名称之后 。 型号ID和路由不变;这是名后缀,不是本土桌面徽章. 已经结束的名称Free或者说(Free)保留现有的标签. - 应请求保留零数据:
CMD_ZDR=1或者说zdr: true在插件配置中添加x-cmd-zdr: 1给每个命令代码的 API (/provider/v1/*关于两个OpenCode世代的请求.
如何运作
对于已出版的插件版本, 六小时的 CI 调度会提取最新的 command-code npm捆绑并刷新可调用的模型外加端点元数据,即使CLI版本没有变化. 它只有在生成的文物发生变化时才会打开目录公关;起动时插件会将这些文物加载并用"OpenCode"注册——绝对不会相反.
- 提取 + 过滤器 示范条目(编号、名称、推理、,
inputModalities,限制)从精细化的CLI捆绑(src/catalog.ts,然后与提供者API报告的可调用身份证相交. - 元数据+费用合并 ——供应商上下文长度只收紧倒叙上下文限制,而
supported_endpoints选择信件,聊天补全,或按此偏好顺序对每个模型进行回复;缺失的端点元数据保留了最后已知的路由数据. 模特们 dev贡献发布日期,家庭,输入限制,状态,模式,以及存在时的成本等级. 二级行只有在其基准价格符合此命令代码目录时才被接受. 基本成本使用CLI捆绑 → 官方指令代码 docs → 免费 SKUs ($0页:1 模式.dev 参考价格 = 未匹配的占位符。 凡有未相比之事,都标出目录degraded。它只在同步时间运行;运行时间从不获取元数据或价格. - 艺术品 —— 说
models.json(目录),_version.txt(上游版本),manifest.json(计算,每源成本统计,healthy编号 :degraded编号 :broken页:1. - 特定版本的登记 - V1采用
plugin配置密钥, 直接 AI SDK 软件包server()提供者地图, 及其认证回调 。 V2 用途plugins,OpenCode的本地提供者运行时间,提供者/模型转换,以及 acommandcode与关键和COMMANDCODE_API_KEY环境方法。 两者都保留了"指挥码"的线条型号ID. V2 曝光分级上下文定价; V1 发布其支持的context_over_200k字段,并保持其他层级的平价. - 退化/缓存 a 包括:
degraded编号 :broken显示已退化的旗帜有原因; 无法读取的捆绑models.json返回到最后的好缓存; 即使有一个空目录, 认证/连接仍然会注册 .
快速启动
1. 安装插件
打开代码 V2:
{
"plugins": ["@brainervirus/opencode-commandcode"]
}
打开代码 V1 :
{
"plugin": ["@brainervirus/opencode-commandcode"]
}
赤色包名没有被固定 解决 npm 的 latest openCode 安装或更新时释放; 添加 @latest 这是不必要的。 OpenCode V2 在启动时检查更新, 但保留已有的缓存包 。 应用带有 OpenCode 插件更新动作的更新的软件包,然后重新启动以加载. OpenCode V1 可以刷新全局软件包 opencode plugin @brainervirus/opencode-commandcode --global --force。 。 。 .
file:// 报到是 没有 由 npm 更新; git pull 在 CI 输入后, 或者切换到 npm 插件行 .
2. 不需要供应商块
在 OpenCode V2 上,插件注册 commandcode 提供者,其模型,原生OpenCode运行时间,及其API基础URL通过V2提供者API. 在V1上 server 钩子填充 provider.commandcode 默认- npm: "@ai-sdk/openai-compatible" 加提供方 API baseURL; 插件包本身绝不是 SDK npm 字段。 仅在需要非默认运输选项时添加手动提供者条目 .
3. 连接
设定 COMMANDCODE_API_KEY,或交互连接。 OpenCode V1 提供 命令代码 结束 /connect; OpenCode V2 登记关键和环境方法 /connect 财务报告和审定财务报表 opencode auth login commandcode. V2使用OpenCode的自动提供者活化并保留了明确的活化设置. 在运行一个模型之前连接; 断开时明确运行仍然返回 API 的授权错误 .
4. 选择一种模式
/models
新 npm 释放中的 Catalog 补丁舰. OpenCode在其包缓存中加载该版本;在新目录出现之前必须通过主机应用更新. 如果在宣布同步后丢失了新模型,请检查已安装的软件包版本,应用更新,并重新启动 OpenCode.
插件配置文件
可选的, ~/.config/opencode/opencode-commandcode.json (遗产倒置名称) commandcode-go-opencode-provider.json 仍为载. 未知的密钥被忽略; 每个字段都有默认值, 一个无效的字段在不丢弃有效字段的情况下自行倒回( 无效) zdr 值保持 ZDR 上 .
| 密钥 | 默认 | 效果 |
|---|---|---|
commandCodePackagePath | "" | 维护者覆盖: 从本地目录取出 command-code 取出而不是捆绑。 与掩体相同 COMMANDCODE_PACKAGE_PATH。 。 。 . |
debugStartupLogs | false | 同时将启动摘要镜像为 stderr. 默认为安静( E)startup.json 页:1. |
disableModelSync | false | 接受转发兼容性;目前没有效果. |
zdr | false | 发送 x-cmd-zdr: 1 ,每个提供方API请求(零数据保留)。 与掩体相同 CMD_ZDR=1。当前但无效的值(例如字符串) "true")数为上. |
零数据保留(津巴布韦)
命令代码执行 零数据保留 与
x-cmd-zdr: 1 请求头; CLI 显示的选项与 CMD_ZDR=1。此插件从未引用过 CLI,所以
设置 :
- 环境
CMD_ZDR=1联合国1, (中文(简体) ),true, (中文(简体) ),yes, (中文(简体) ),on; 对大小写不敏感),或 "zdr": true内~/.config/opencode/opencode-commandcode.json。 。 。 .
插件然后将信头添加到每个命令代码提供者 API(/provider/v1/*请求: V2 在
commandcode 提供方, V1 在提供方上 options.headers您配置的 ZDR 头
(单位:千美元)providers.commandcode.headers 关于 V2, provider.commandcode.options.headers 在 V1 上战胜插件的值.
标题名称对大小写不敏感,插件会崩溃任意拼写(X-Cmd-Zdr)变成一个小写
x-cmd-zdr 键,所以请求中从未包含两个ZDR头. 自定义 npm 传输继续拥有自己的选项.
期望从 API 中实现的行为: 设定时, 仅请求通过 ZDR 的可上游路径, 和一个没有 的模型
失败 422 cmd_zdr_no_providers 而不是回到一个非ZDR供应商。 ZDR可以改变哪个上游
满足请求,所以成本可能更高。 信头被发送到聊天补全、信件和回复路线上;
到目前为止,现场核查只涵盖聊天完成.
方案型SDK工厂createCommandCode(电话) /alpha/generate,ZDR文档没有涵盖,
因此无法关闭 : 已请求 ZDR (CMD_ZDR 或一个 x-cmd-zdr: 1 任何外壳的头部,
languageModel() 在任何请求发出前抛出。 明确 x-cmd-zdr: 0 页眉选择 SDK 退出 CMD_ZDR。 。 。 .
与提供商API进行现场核查 tests/integration/zdr.integration.test.ts 被跳过,除非
COMMANDCODE_API_KEY 设置为:
COMMANDCODE_API_KEY=... bun run test:integration
可选本地 CLI 覆盖
只有维护者。 OpenCode 将刮出本地代码 command-code 安装时间 COMMANDCODE_PACKAGE_PATH 或者说 commandCodePackagePath 内 ~/.config/opencode/opencode-commandcode.json 已经设定.
报告问题
打开 a 错误报告 用于安装、 认证、 目录或模型调用失败 —— 包括失败的模型 ID、 准确错误、 以及您的插件和 OpenCode 版本 .
此寄存器不接受目录, “ 很棒的列表 ” , 插件- 市场 , 或 外联 。 为此开始的问题无需审查即可结案.
发展
git clone https://github.com/BrainerVirus/opencode-commandcode.git
cd opencode-commandcode
bun install
bun run check # oxlint + oxfmt --check + bun test tests/unit/ + tsc (the release gate)
bun run sync -- --remote # refresh models.json + manifest.json + _version.txt from command-code@latest
bun run build # bundle src/entry.ts to dist/plugin.js
bun test tests/unit/ # unit suite (also via bun run test)
bun run test:integration # live-endpoint tests, not part of the gate
bun run verify:release-candidate # dry-run pack; manifest and package versions must match
bun run generate-readme # reports catalog counts only; README is hand-edited
bun run catalog:ci # entry used by the catalog-sync workflow
入口点 : plugin.ts 拥有两个配置表面( V2) id编号 :setup 加上V1 server(三); index.ts 再导出插件加插件 createCommandCode SDK工厂; src/entry.ts 是捆绑胶水的 scripts/build-plugin.ts 只是,它产生 dist/plugin.js。 。 。 .
CI (中文(简体) ).github/workflows/catalog-sync.yml每6小时检查一次CLI目录的修改和提供者的可用性/端点元数据的变化;它打开一个 fix(catalog) 只在生成文件更改时 PR 。 如果提取失败或模型计数安全底板被突破,则打开一个 catalog-break 并保存完好的文件。 公关自动出现之后 检查(测试), (中文(简体) ), 检查( 类型检查), (中文(简体) ), 检查(lint), (中文(简体) ), 检查(格式),以及 检查(包装) 绿色的. .github/workflows/release.yml 然后运行 语义释放 (建设+已核实npm发布+GitHub发布+标签). 别推 main。 。 。 .
GitHub 动作的秘密名称是 NPMJS它被映射到两个地方 NPM_TOKEN 财务报告和审定财务报表 NODE_AUTH_TOKEN选项 自动化 符 (通过 2FA ). 登录符号来自 ~/.npmrc 无法使用 CI EOTP. Catalog PRs 获得真正的 CI 运行当 RELEASE_SYNC_TOKEN 是一个PAT; GITHUB_TOKEN 可以打开 PR 但 GitHub 将不会从该事件开始工作流程 .