DSH 的 OpenCode Go 订阅聊天:按模型选择 Completions、Responses 或 Anthropic 协议,支持模型发现、上下文、视觉与思考元数据、effort 默认值和用量仪表。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:NOirBRight/dsh-llm-opencode-go
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
English | 中文
DeepSeek Harness 的 OpenCode Go 集成。聊天走共享 PiAiAdapter,按官方 Go 表格为每个模型选择 Completions、Responses 或 Anthropic Messages。模型发现和订阅用量留在原生 Go 端点,因为这些能力不属于聊天协议。
包根入口公开 Cordis plugin contract 和 OpenCodeGoAdapter。同一 artifact 还导出 ./client,在 Settings → LLM Providers 中提供 OpenCode Go 卡片。协议分离记录在 ADR 0001。
兼容性
DSH peer 和开发依赖范围接受 0.1.7-alpha.2 及之后的发行版。Cordis peer 接受 >=4.0.4 <5.0.0;Schemastery peer 面向 ~3.18.4。
package.json#dsh.compatibility.dshReleases 里的已验证宿主是证据,不是允许列表。未知的新宿主告警一次后仍按正常路径挂载。只有复现过的故障才会加入 blocklist。
catalogId 与未解析的 unknown 账户状态在运行时挂上。已发布的 dsh-llm-providers-ui 0.2.8 不含这些字段,并把 unknown 当成未连接;只有更新的 Owner 才会生效。
安装
通过 profile manager 安装已发布的软件包:
dsh plugin --profile web add --force \
https://github.com/NOirBRight/dsh-llm-providers-ui/releases/download/v0.2.13/dsh-llm-providers-ui-0.2.13.tgz
dsh plugin --profile web add --force \
https://github.com/NOirBRight/dsh-llm-opencode-go/releases/download/v0.1.34/dsh-llm-opencode-go-0.1.34.tgz
dsh web
软件包包含可直接使用的 lib artifacts。请在 profile 中与本插件一起安装 dsh-llm-providers-ui,由它提供共享的 LLM Providers 页面。
客户端 RPC 通过经过认证的 /api/plugin-rpc/opencode-go Fetch 路由。物理 /api carrier 会在分发至插件路由前检查 Host/Origin 与 cookie 认证,并执行 body 大小限制。
请在 profile 中与 dsh-llm-providers-ui 一起安装本插件,由 owner 枚举所有已安装的 provider 卡片。
Web 配置
打开 Settings → LLM Providers → OpenCode Go。配置通过 Loader 条目 llm-opencode-go 的 alpha2 ConfigForm 读取;volatile baseURL 和 models 字段在按快照 revision 提交之前,先由经过认证的 Host 路由校验地址和模型目录。凭据状态和写入同样使用经过认证的插件 RPC;API key 只写入,不会回显或记录。
卡片通过一次带 revision 防护的 ConfigForm.mutate 同时保存 API 地址和模型目录。Fetch available models 会立即打开 picker。Host 读取 GET /zen/go/v1/models(只有 OpenAI 形 id),先用本地快照再叠加 live models.dev 的 opencode-go 元数据补全名称、上下文、视觉和推理,因此新 id(如 omen-alpha)不会是空白行。
已配置 key 时,卡片折叠也会加载账户额度(获取模型或刷新会再拉一次)。Host 读取 GET <baseURL>/usage;5 小时 / 周 / 月剩余额度首次打开用本地缓存,再后台刷新。凭据不会传到浏览器。
模型目录默认折叠,展开后一行一个模型:左侧把手可拖动排序(顺序随目录一起保存),右侧箭头展开该行的上下文和能力开关,垃圾桶按钮删除该行。
插件配置

Models 页面会列出已保存的 opencode-go 模型并允许选择。当前 Harness 版本没有 Models 页里的第三方编辑器 slot,因此本包在 LLM Providers 持有完整编辑器。
能力与协议分离
聊天使用一条 opencode-go 路由。adapter 不会再把该路由登记成 configurable provider(pi-ai 目录已经占了这个名字)。按模型 api 选择:
openai-completions POST {baseURL}/chat/completions
openai-responses POST {baseURL}/responses
anthropic-messages POST {去掉末尾 /v1 的 baseURL}/v1/messages
原生独立能力仍只在 Host:
模型发现 GET /zen/go/v1/models
订阅用量 GET /zen/go/v1/usage
官方文档:https://opencode.ai/docs/zh-cn/go/
配置
- id: llm-opencode-go
name: dsh-llm-opencode-go
config:
apiKeyEnv: OPENCODE_API_KEY
baseURL: https://opencode.ai/zen/go/v1
defaultContextWindow: 262144
streamIdleTimeoutMs: 300000
models:
- id: muse-spark-1.2-contributor
name: Muse Spark 1.2 Contributor
contextWindow: 1048576
maxTokens: 131072
vision: true
thinking: true
defaultEffort: medium
api: openai-responses
- id: glm-5.3-flash
name: GLM-5.3-Flash
contextWindow: 1000000
thinking: true
defaultEffort: high
api: openai-completions
Provider route 仍是 opencode-go,Loader entry id 为 llm-opencode-go。只有目录里的模型可以聊天。行上的 contextWindow 是 DSH 压缩预算。Fallback 为 262,144 tokens。
模型能力
vision 决定 text/image 输入。thinking 启用 reasoning effort。已知 Go 家族在会话未选择时使用插件 defaultEffort。api 用于协议分发;未知 id 回退到文档中的家族表。
Muse Spark 需要 OpenCode 工作区打开训练数据模型开关。DeepSeek V4 Flash 和 V4.1 Flash(deepseek-flash)需要打开中国区托管模型开关。那是 https://opencode.ai 上的账号选项,不是插件配置。Muse Spark 1.3 Contributor 会按前瞻策略展示 max,但当前 OpenCode Go 上游会以 HTTP 400 拒绝该值;上游扩展枚举前请选 xhigh。
模型体验
System prompt 与 provider-neutral 消息由 PiAiAdapter 转成 Completions / Responses / Messages。工具调用保留 provider 签发的 id。只有 vision 模型接收 base64 图片。
Usage 映射成 Harness input/output。pi-ai 按 context capacity clamp maxTokens。
已知限制
- CodexHub 留下的
~/.dsh/.credentials.yaml.lock(codexhub-atomic-lock=1)会卡住所有 DSHcredentials.set,需删掉该 sidecar。见 CodexHubdocs/tasks/dsh-credentials-lock-interop.md。 - 本包不为
opencode-go调用registerConfigurableProviders(与 llm-pi-ai 目录冲突)。 - 共享 PiAiAdapter 不支持 GenerateOptions.stop。
LLM Providers UI ownership
LLM 供应商设置页(settings.section id: providers 及子槽 settings.provider.item)与共享的 llm-providers 排序存储完全由 dsh-llm-providers-ui 拥有。
- 本插件仅贡献自己的卡片(
key: llm-opencode-go)和 Host 上的llm路由;不安装页面或共享命名空间。加载顺序不影响归属。 - 未安装 owner 时(Headless 或 Web 未装
dsh-llm-providers-ui):Host 侧模型路由opencode-go仍可工作;Web 侧 Providers 页面与本卡片不显示,并在浏览器控制台提示缺少 owner。正式 Web 发版的组合测试会拒绝缺少 owner 的图。 - 导航地球图标为
Alpha.4临时 DOM 适配器,仅由dsh-llm-providers-ui持有;本插件不含该适配。
请在 profile 中与 provider 插件一起显式安装 dsh-llm-providers-ui(见其 cordis.patch.yml)。
正式版安装(Latest)
此版本面向官方 DeepSeek Harness 0.1.7-rc.1;Web 请同时安装已发布的 Provider UI 0.2.13。
LLM Providers 页面、导航和共享排序由 dsh-llm-providers-ui 独占;本插件只提供卡片、模型和 Host 路由。Web 必须先装 Owner,headless 只使用 Host 路由时可以不装 Owner。
Latest(Owner + 本插件;Web 必须一起装):
dsh plugin --profile web add --force \
https://github.com/NOirBRight/dsh-llm-providers-ui/releases/latest/download/dsh-llm-providers-ui-0.2.13.tgz
dsh plugin --profile web add --force \
https://github.com/NOirBRight/dsh-llm-opencode-go/releases/latest/download/dsh-llm-opencode-go-0.1.34.tgz
固定版本(可复现):
dsh plugin --profile web add --force \
https://github.com/NOirBRight/dsh-llm-providers-ui/releases/download/v0.2.13/dsh-llm-providers-ui-0.2.13.tgz
dsh plugin --profile web add --force \
https://github.com/NOirBRight/dsh-llm-opencode-go/releases/download/v0.1.34/dsh-llm-opencode-go-0.1.34.tgz
更新、卸载与验证:
# 更新 Owner + 本插件到 Latest
dsh plugin --profile web add --force \
https://github.com/NOirBRight/dsh-llm-providers-ui/releases/latest/download/dsh-llm-providers-ui-0.2.13.tgz
dsh plugin --profile web add --force \
https://github.com/NOirBRight/dsh-llm-opencode-go/releases/latest/download/dsh-llm-opencode-go-0.1.34.tgz
# 验证加载与版本
dsh plugin --profile web list
dsh plugin --profile web doctor
# 只卸载本插件
dsh plugin --profile web remove dsh-llm-opencode-go
配置入口:Web 使用「设置」中的本插件页面;Host-only 插件使用 profile 的 dsh.profile.bundles 配置。先复制本 README 的最小 YAML/JSON 示例,再填写凭据或后端地址。
回滚:一并恢复此前官方 Host 和配套 profile;旧版 OpenCode Go 不兼容此 Alpha.2 Host。失败时查看 journalctl --user -u dsh-web.service 与 dsh plugin --profile web doctor,不要把源码 checkout 写入 production profile。
链接
同类插件
corrinehu/dsh-workbuddy-connect★ 776
将 WorkBuddy 桌面 App 包含的模型自动接入 DeepSeek Harness,在 DSH 对话窗口里零配置使用。
V1ki/dsh-plugin-subscriptions★ 458
把 ChatGPT(Codex)、Claude、Grok 订阅当作 DeepSeek Harness 的 LLM 提供方:设置页登录、模型目录、用量展示,以及 image_generate、video_generate 与 x_search 工具。
Mars-Sea/dsh-commandcode-provider★ 388
非官方 Command Code 模型接入插件:注册 `commandcode` 路由,带实时模型目录与推理强度支持。
cv-superding/dsh-deepseek-web-login★ 265
新增 deepseek-web provider,把 chat.deepseek.com 网页端模型接入 DSH:浏览器登录抓取、PoW 请求签名、SSE 流式传输与基于提示词的工具调用。
FishBottle7/opencode2dsh★ 191
将 OpenCode Zen 免费模型接入 DeepSeek Harness,无需 API Key。
WSL043/dsh-codex-subscription★ 172
通过 ChatGPT OAuth 在 DSH 中使用 Codex 模型,提供订阅联网搜索、额度与安全重置、图片工具、高速模式和模型感知上下文;无需 API Key 或 Codex CLI。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。