DSH OpenCode Connect:在 DeepSeek Harness 中使用 OpenCode Zen 模型

前言

在 DeepSeek Harness(DSH)里做智能体开发时,模型来源通常来自 DSH 已配置的 provider 或社区插件。若你希望直接使用 OpenCode Zen 上的模型——包括 Zen 限时免费模型池(如 *-free、big-pickle 等,无需账户余额)——会遇到一层与客户端身份相关的限制:Zen 免费层只放行「真正的 opencode 客户端」,普通 DSH 配置无法伪造所需请求头与会话格式。

DSH OpenCode Connect(仓库 sixzjd/dsh-opencode-connect)是社区维护的 DSH 插件,在进程内通过 loopback shim 把 Zen 的模型接到 DSH,无需单独起外部代理进程,也无需手改 DSH 主配置。下面介绍它的定位、原理要点、安装与日常使用。

这是什么

  • 名称:DSH OpenCode Connect(界面显示为 OpenCode /「OpenCode 连接器」)
  • 维护者:sixzjd(package.json 作者 Sun Zhengnan)
  • 分类:模型推理(社区目录 skillhub.cn)
  • 许可证:MIT(README)
  • 版本:0.1.0(package.json)
  • 一句话:将 OpenCode Zen 的模型接入 DeepSeek Harness,含 Zen 免费模型池。

插件数据(API Key、模型目录缓存等)存放在当前 profile 下的 <profile>/.dsh-opencode-connect/ 目录。

工作原理(为何需要插件)

Zen 免费层对请求有明确校验,README 归纳如下:

  • User-Agent 须为 opencode/<版本>(插件会跟随 npm 上 opencode 发版刷新);
  • x-opencode-session 与 x-opencode-session-id 成对出现,且 session id 须为 opencode 自家格式(前 12 位 hex 可解码为时间戳);
  • 工具清单里须存在名为 read 的工具,且为流式请求。

DSH 普通配置层无法伪造这些:user-agent 是 DSH 的保留归因头,会被剥掉。因此插件在进程内启动 loopback shim:DSH 侧 pi-ai 对 shim 使用标准 OpenAI Chat Completions;shim 对 Zen 侧按 opencode 客户端语义转发。DSH 真实 agent 轮次自带 read 工具,可满足闸口;标题生成等无工具请求由 shim 注入最小 read 与 tool_choice:"none",并剥掉模型偶发的工具调用。免费池出现 429、5xx 或模型下架时,shim 会在已启用模型目录中自动 fallback 到下一个模型。

架构与 dsh-qoder-connect 同源(loopback shim + 进程内注册 provider + 卡片管理);伪装逻辑与 zen-proxy 同源,但作为 DSH 插件运行:无需外部进程、无需改配置文件。

核心功能

  1. 模型接入:安装后新开 DSH 会话,模型选择器出现 OpenCode Zen 分组。
  2. API Key:可在插件设置中粘贴自有 Zen API Key;留空则使用匿名免费池。
  3. 模型目录:可查看目录来源(实时 / 上次保存 / 内置),并手动刷新;可开关单个模型,关闭的模型从选择器隐藏。
  4. 容错:免费池限流或上游错误时,沿已启用目录自动换模型重试。

运行环境(package.json engines):

  • DSH:>=0.2.0-rc.2
  • Node:^22.19.0 || >=24.0.0

安装与启用

从 GitHub 安装(README 原文命令):

# 从 GitHub 安装
dsh plugin --profile web add github:sixzjd/dsh-opencode-connect

本地开发可使用目录链接(link: 为活符号链接):

dsh plugin --profile web add "link:/绝对路径/dsh-opencode-connect"

装好后新开一个 DSH 会话,在模型选择器中选择 OpenCode Zen 分组下的模型。细项在 设置 → 插件设置 →「OpenCode 连接器」 卡片中配置。

插件以当前 DSH 进程权限运行;安装前建议阅读仓库源码与 MIT 许可证,确认符合你的安全与合规要求。

典型用法

  1. 执行上述 dsh plugin --profile web add github:sixzjd/dsh-opencode-connect。
  2. 重启或新开 DSH Web 会话(--profile web 与 package.json 中 dsh.client.platform: web 一致)。
  3. 在插件设置中按需填写 Zen API Key,或留空走免费池。
  4. 刷新模型目录、关闭不需要的模型,再在对话里选用 OpenCode Zen 下的具体模型。

无额外独立服务进程;配置与缓存均在 profile 目录下的 .dsh-opencode-connect/。

适用场景与注意

适合谁

  • 已在 DSH 中开发智能体,希望把 OpenCode Zen(含免费模型池)作为推理后端之一;
  • 接受社区插件形态、愿意自行跟进上游策略变化。

务必知晓

  • 免费池按 IP 限流、共享池位,高峰期可能出现 429;插件会换模型重试,但不能保证始终可用。
  • README 说明:这是对上游明示限制的绕过,官方不支持(GitHub 议题 anomalyco/opencode#42500 被 closed as not planned),门闸随时可能收紧导致插件失效。
  • 社区插件目录(如 skillhub.cn)为独立站点,与 DeepSeek / 幻方无官方从属关系;本插件亦非官方出品。

链接

  • 社区目录页:https://www.skillhub.cn/plugins/sixzjd/dsh-opencode-connect
  • 源码与说明:https://github.com/sixzjd/dsh-opencode-connect

经过上面的步骤,你可以在 DSH 内直接选用 OpenCode Zen 模型组,并通过插件设置管理 Key 与模型目录,而无需单独维护 zen-proxy 类外部进程。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye