@goodandready/dsh-opencode-provider:在 DSH 中原生接入 OpenCode 与 OpenCode Go

前言

DeepSeek Harness(dsh)通过插件扩展 LLM 路由与凭据管理。若你已在 OpenCode Console / Zen(按量计费)或 OpenCode Go / Go Plus(订阅配额)侧持有密钥,希望在 dsh 智能体、聊天与工具调用里直接走 OpenCode 网关,而不是手工拼 HTTP 或混用内置目录里同名路由,就需要一条与 harness 凭据、会话、流式工具链对齐的 provider。

内置 llm-pi-ai 已占用 opencode、opencode-go 等目录 id;重复注册会触发 DUPLICATE_DIRECTORY,核心会丢弃内置目录并影响其他提供商。本插件以 opencode-direct、opencode-go-direct 注册独立路由,并在 UI 中对应 OpenCode (plugin)、OpenCode Go (plugin)。下面介绍其定位、能力与安装配置方式。

这是什么

@goodandready/dsh-opencode-provider(仓库 GooDAnDReaDY/dsh-opencode-provider)由维护者 GooDAnDReaDY 发布,分类为模型推理,许可证为 MIT。npm 包当前版本为 0.5.14(以 package.json 为准)。

一句话定位:面向 dsh 的 OpenCode Console 与 OpenCode Go LLM 提供商插件,在网关 https://opencode.ai/inference 与 https://opencode.ai/inference/go 之上注册两条原生路由,并按模型选择四种底层传输协议完成对话、推理、流式工具调用与用量回传。

核心功能

两条 LLM 路由

路由 id 产品 / 方案 基础接口
opencode-direct OpenCode Console / Zen https://opencode.ai/inference
opencode-go-direct OpenCode Go / Go Plus https://opencode.ai/inference/go

密钥在每次调用时解析;在设置或环境文件中更换凭据后,下一次请求即可生效,无需重启 dsh 进程(安装插件本身仍通常需要重启以加载插件)。

四种 Wire 传输

按模型自动选择协议,覆盖 README 中列出的厂商与系列,例如:

  • OpenAI Chat Completions(DeepSeek、GLM、Kimi、MiMo、LongCat、Hy3、Step 等)
  • Anthropic Messages(Claude、MiniMax、Qwen 等,含 thinking signatures 重放)
  • OpenAI Responses(GPT、Grok、Muse 等)
  • Google Generative AI(Gemini,含 thoughtSignature 重放)

支持文本、reasoning、流式 tool calls、usage 与 finish reasons。图像经持久化附件服务按协议传输;文件附件投影为 DSH 确定性 handle 文本,不传 inline 字节。

多账户、配额与回退

  • 多账户池:流开始前对 401/403/429 及配额类响应(400/402/403/429)轮换账户;无效密钥冷却 24h,配额拒绝约 10 分钟或 Retry-After,限流约 60 秒或 Retry-After。已开始的流不会在中途换号。
  • 每账户展示 5 小时 / 周 / 月用量;Go 方案侧有基于定价表的订阅额度估算(模型选择器与设置页展示,网关仍为权威)。
  • modelAccountRules 支持 Glob,将模型优先绑定到指定账户,其余账户作备用。
  • 配额回退:Go 配额错误时可配置免费模型,经 Console/Zen 重试一次。
  • 会话粘性:同一会话优先上次成功账户,经本地 sticky.json(仅哈希 session id 与密钥指纹)跨重启保留。

可观测与操作面

  • 配额面板:请求热力图(本地时区)、按账户统计、路由追踪(rule、sticky、rotation、quota-fallback 等)。
  • 请求元数据追加到 ~/.dsh/storages/dsh-opencode/requests.jsonl(不含 prompt、response 或密钥);文件约 2 MB 时压缩保留最新 5000 行。
  • 斜杠指令 /opencode:status、usage、accounts、models、rules、test [model]。
  • TUI:/settings → OpenCode 配置密钥、端点、allowlist、活动账户、回退模型、粘性路由与超时。
  • Web 设置页支持版本比对与通过 DSH CLI 安装指定 npm 版本的一键更新(主机端点 GET/POST /dsh-opencode/update)。

与 dsh 版本的兼容范围

package.json 中声明:dsh 为 0.2.0-rc.2 || 0.2.1-rc.2,Node.js >=22。

安装与启用

从 npm 安装已发布版本(命令摘自官方中文 README):

dsh plugin --profile web add @goodandready/dsh-opencode-provider@0.5.14

DSH 桌面端将 --profile web 换成 --profile desktop:

dsh plugin --profile desktop add @goodandready/dsh-opencode-provider@0.5.14

若使用本地打包的 .tgz,路径须为绝对路径,文件名中的版本号与包内一致,例如:

dsh plugin --profile web add /absolute/path/to/goodandready-dsh-opencode-provider-0.5.14.tgz

安装完成后重启 dsh 或 DSH 桌面端。在模型选择器中选择 OpenCode (plugin) 或 OpenCode Go (plugin),不要与内置 opencode / opencode-go 路由混用同一套账户与遥测预期。旧会话仍可能走内置路由。

典型用法

插件配置片段

在 dsh 插件配置中引用包名,并按环境设置密钥来源(示例来自 README):

- id: llm-opencode
  name: "@goodandready/dsh-opencode-provider"
  config:
    apiKeyEnv: OPENCODE_API_KEY   # 环境变量或 DSH 凭据名
    # apiKey: oc_sk_...           # 仅本地调试,严禁提交代码库
    openCodeAuthEntry: opencode-go
    requestTimeoutMs: 300000
    streamIdleTimeoutMs: 300000
    visibleModels: []
    modelTransports: {}
    accounts:
      - label: Go #2
        apiKeyEnv: OPENCODE_API_KEY_2
    activeAccount: ''

密钥解析顺序

  1. 配置中的 config.apiKey
  2. DSH 凭据服务里 apiKeyEnv 指向的凭据
  3. ~/.local/share/opencode/auth.json 中 openCodeAuthEntry 对应项(默认 opencode-go)
  4. 进程环境变量或 $DSH_HOME/.env

Web UI 还提供 Import all from auth.json、Check all accounts 等账户引导能力。

模型到账户规则

modelAccountRules:
  - pattern: "*free*"
    account: "free"
  - pattern: "your-provider-*"
    account: "go"

会话内快捷查询

/opencode status
/opencode usage
/opencode accounts
/opencode models
/opencode rules
/opencode test [model]

test 会发送最小化请求,用于连通性检查。

适用场景与注意

适合谁: 已在 OpenCode 生态付费或订阅、希望把同一套密钥与多账户策略带进 dsh 智能体工作流;需要按模型切换 OpenAI / Anthropic / Google 等 wire 形态、并要在 harness 内看配额与请求热力图的开发者。

权限与安全: 插件随当前 dsh 进程权限运行,可读写其配置的数据目录(含 requests.jsonl、sticky.json 等)。安装前请自行审阅 GitHub 源码 与 MIT 许可证;勿将 apiKey 明文写入可提交的仓库。README 说明写配置与部分路由要求 loopback 与同源检查,用于降低 DNS 重绑定风险。

路由 id 与历史会话: 务必在 UI 中选择带 (plugin) 后缀的提供商;与内置目录并存时,重复 id 会导致严重注册冲突,插件文档对此有明确说明。

社区目录: 插件收录于独立社区站点 SkillHub 目录页,与 DeepSeek / 幻方无官方从属关系;星标与版本以各页面当时展示为准(撰写时 GitHub 星标为 0)。

结尾

@goodandready/dsh-opencode-provider 把 OpenCode Console/Zen 与 OpenCode Go 收敛为 dsh 内两条 -direct 路由,在协议适配、多账户轮换、配额可视化与 /opencode 运维指令上形成完整闭环。若你正在 dsh 上拼装 OpenCode 调用链,可按上文 npm 命令安装对应版本,并在模型选择器中切换到插件路由。

  • 目录页:https://www.skillhub.cn/plugins/GooDAnDReaDY/dsh-opencode-provider
  • GitHub:https://github.com/GooDAnDReaDY/dsh-opencode-provider
  • npm:https://www.npmjs.com/package/@goodandready/dsh-opencode-provider
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye