前言¶
在 DeepSeek Harness(DSH)里接第三方模型,常见做法是改配置、手填模型表,或装一个 provider 插件。OpenCode Go 走订阅网关,需要正确的会话请求头、实时模型目录,以及和 Harness 各版本设置入口对齐。若目录解析失败或路由冲突,模型会从选择器里消失且往往没有明确提示。
dsh-opencode-go-plus 是面向 DSH 的 OpenCode Go 模型 provider 插件:在 Harness 中订阅 OpenCode Go 模型,支持流式回复、工具调用、图片输入与额度显示;并从网关拉取可用模型目录、展示套餐剩余额度。包说明其是 dsh-opencode-go 的维护分支,针对「模型在网关里存在却不出现在列表」等场景做了修复。当前包版本为 0.4.9(MIT 许可证)。
这是什么¶
插件通过 DSH 插件机制安装,无需改 DSH 源码。运行时会自动添加 OpenCode Go 所需的会话请求头,从网关获取模型目录;配置入口集中在 设置 → 模型 下的 OpenCode Go(桌面版为可折叠卡片,自 0.3.0 起不再有独立的「设置 → OpenCode Go」分区)。
支持的 Harness 版本(见仓库 README):0.1.6-alpha.1 及以后的 0.1.6 / 0.1.7 系列,以及从 0.2.0-rc.1 起的 0.2 系列(含桌面版与 0.2.1-rc.2)。不同系列使用不同的设置模型,插件在运行时探测并分流。
核心功能¶
Provider 与会话能力¶
- 在 DSH 中作为 OpenCode Go 模型来源,支持流式回复、工具调用、图片输入。
- 自动附加 Harness User-Agent(
attributionHeaders())与x-opencode-session等请求头(与上游dsh-opencode-go一致)。
实时目录与自动适配¶
模型列表由内置适配表与网关 /models 实时目录交集,并对未知 ID 做自动适配:
- 同族匹配:按首词归族,克隆同族模型的协议、参数与容量估计。
- 全新家族:同族不存在时,按 token 重叠、多数协议与 ID 长度等规则借用全局最接近模型,避免整条丢弃;参数为估计值,可用
modelOverrides覆盖。 - 可在 设置 → OpenCode Go → 自动适配新模型 关闭该行为;默认约每 5 分钟重新解析目录(高级设置可调
refreshMinutes)。
每次解析会输出目录统计日志(curated / live listing / adapted / omitted / served),便于排查某个 ID 为何未出现在选择器。
连接状态与用量¶
- 桌面版(0.4.2 起):在 OpenCode Go API Key 输入框粘贴密钥后点 保存并检查;可用 刷新状态 重新读凭据、同步路由并检查用量接口。检查使用只读用量与模型目录接口,不发送聊天请求。密钥经 Harness 凭据服务保存,不回显、不写入插件配置或浏览器本地存储。
- 订阅用量:通过
GET {baseURL}/usage在插件 usage 面板展示剩余额度;0.4.9将用量面板改为不透明背景,避免半透明主题下文字与底层干扰。
相对上游 dsh-opencode-go 的修复要点¶
仓库文档归纳了五处宿主侧改动,均围绕「网关有模型、选择器没有」:
- 与基线包同 profile 共存时,避免
model discovery重复注册导致整棵插件树加载失败;本包不能与dsh-opencode-go同时安装,升级前需先卸载旧包。 opencode-go路由被占用(例如settings.yaml里物化的静态模型表)时,改为注册opencode-go-plus路由并打 warn,而不是静默放弃整个动态目录。- 全新家族模型不再因找不到同族而被丢弃。
- 目录解析结果自检日志。
catalogAdditions改为可配置(设置 → OpenCode Go),不再硬编码在源码。
安装与启用¶
插件以当前 DSH 进程权限运行;安装前请自行查看仓库源码与许可证。包为预编译产物(仅发布 lib/),engines.node 要求 ^22.19.0 || >=24.0.0。
桌面版(含 0.1.7-rc.2 / 0.2.0-rc.1 / 0.2.1-rc.2)¶
在 插件 → 添加插件 → Git 仓库 中填写:
https://github.com/HaydenSmith1121/dsh-opencode-go-plus
0.4.1 起无需为本插件单独允许 @google/genai、protobufjs 安装脚本;OpenAI / Anthropic 协议模块已预编译随包分发。若曾卡在「需要允许安装脚本」,应关闭旧安装任务并从上述仓库重新安装,在安装详情中确认版本为 0.4.9 或更新。
Web profile¶
dsh plugin --profile web add dsh-opencode-go-plus
安装后启动或重启 dsh web,在 设置 → 模型 找到 OpenCode Go 一行,配置 API Key(默认环境变量名 OPENCODE_API_KEY;具体引用位置随 harness 版本在 settings.yaml 或 profile 的 cordis.patch.yml 中,见 README「兼容性」表)。
Headless profile¶
dsh plugin --profile headless add dsh-opencode-go-plus
示例 patch 与运行方式:
- id: agent-default-model
config:
provider: opencode-go
model: deepseek-v4.1-flash
read -s OPENCODE_API_KEY
export OPENCODE_API_KEY
dsh --profile headless --patch ./headless.patch.yml "你好"
模型 ID 须在当前网关目录中可用。Web 与 Headless 使用不同 profile,需分别安装插件。
典型用法:配置密钥与选模型¶
登录 OpenCode 官网不会自动连接 Harness。 需在 OpenCode 控制台 确认 Go 订阅并复制 API Key;接入说明见 OpenCode Go 文档。
桌面版步骤:
- 打开 设置 → 模型 → OpenCode Go。
- 在 OpenCode Go API Key 粘贴密钥,点击 保存并检查(Harness
0.1.7-rc.2下无需点通用「编辑」)。 - 在会话模型选择器中选择 OpenCode Go 下的模型;需要时点击 刷新状态 同步目录与认证。
Web 端:安装插件并重启后,在 设置 → 模型 查看 OpenCode Go 行的 Key 状态(绿点表示已配置),再在会话中选择对应模型。安装插件不会自动更改默认模型。
可选:在设置中维护 catalogAdditions,为网关新 ID 指定同族克隆来源,例如:
llm-opencode-go:
catalogAdditions:
- id: deepseek-v4.1-flash
siblingId: deepseek-v4-flash
inputSiblingId: deepseek-v4-flash-vision-exp
name: DeepSeek V4.1 Flash
四条字段须齐全,否则条目会被忽略。
适用场景与注意¶
适合谁:已在 OpenCode Go 订阅、希望在 DSH(Web、Headless 或桌面版)里用同一套网关模型做智能体开发,并需要动态目录、用量显示与较新 Harness 版本兼容的开发者。
务必注意:
- 不要与
dsh-opencode-go同 profile 并存;从上游迁移时先dsh plugin --profile <profile> remove dsh-opencode-go再装本包,可参考仓库examples/migrate-from-fork.patch.yml。 - 若
opencode-go路由被settings.yaml中llm-pi-ai.providers.opencode-go静态表占用,插件会改用opencode-go-plus路由;不要在 DSH「设置 → 模型 → opencode-go」里用「获取可用模型 → 添加所选」把目录再次物化进settings.yaml,否则动态目录问题会复现。 - 插件请求外网网关与用量接口;密钥与网络策略需自行评估。
DSH 生态强调「一切皆插件」;社区目录站点与 DeepSeek / 幻方无官方从属关系,本文仅作技术介绍。
结尾¶
dsh-opencode-go-plus 把 OpenCode Go 订阅接到 DeepSeek Harness,在保持与上游协议一致的前提下,修复目录静默丢失、路由冲突与共存加载失败等问题,并把配置收敛到 设置 → 模型。进一步了解可查看社区目录页与 GitHub 仓库 README。
- 目录页:https://www.skillhub.cn/plugins/DPH-1121/dsh-opencode-go-plus
- GitHub:https://github.com/DPH-1121/dsh-opencode-go-plus(README 中安装仓库地址为
https://github.com/HaydenSmith1121/dsh-opencode-go-plus)