dsh-connect-opencode:把本机 OpenCode 免费模型接入 DSH 模型选择器

前言

DeepSeek Harness(DSH)的对话与智能体能力依赖你在「设置 > 模型」里选用的后端。若你本机已安装 OpenCode,并在 provider 目录里配置了 cost 全为 0 的模型,这些资源通常只在 OpenCode 客户端或 opencode serve 链路里使用,不会自动出现在 DSH 的模型列表中。

下面介绍社区插件 dsh-connect-opencode(维护者 serra006,当前版本 0.1.2,MIT)。它在本机拉起隔离的 opencode serve --pure,经 OpenAI 兼容 shim 转发请求,把 OpenCode 侧筛选出的免费文本模型注册进 DSH 模型选择器;工具执行仍由 DSH 负责,而不是 OpenCode 原生 bash/read/write 等工具。

这是什么

dsh-connect-opencode 的定位是:桥接本机 OpenCode(opencode serve)与 DSH 的 pi-ai 模型层。

资料中的「免费」指:OpenCode provider 目录里 cost.input、cost.output、cache.read、cache.write 均为 0、能输出文本、且未废弃的模型。具体有哪些模型取决于你的 OpenCode 配置(含自定义 provider);没有符合条件的模型时,DSH 里列表为空。

DSH 生态采用「一切皆插件」思路;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。安装第三方插件前,建议自行查看源码与许可证;插件以当前 DSH 进程权限在本机运行。

核心功能

模型发现与注册

插件从 OpenCode 的 /provider 目录拉取模型信息,筛出 cost 全 0、支持文本输出、未废弃的条目(覆盖内置 Zen 与自定义 provider),并刷新到 DSH「设置 > 模型」中的 dsh-connect-opencode 卡片所关联的模型列表。

本地 shim 与隔离实例

数据流大致如下:

DSH (pi-ai) ──OpenAI 兼容──▶ 本插件的本地 shim (127.0.0.1:<随机端口>)
                                  │  协议转换(流式 / 工具调用)
                                  ▼
                          opencode serve --pure(隔离 XDG 目录 + 随机端口 + Basic 鉴权)
  • 隔离实例:插件自行启动 opencode serve --pure,不加载全局插件,不占用日常 OpenCode 的会话与状态;数据存放在 ~/.dsh/dsh-connect-opencode/。
  • 凭据复用:为使自定义 provider 与登录态在隔离实例中可用,会将全局 opencode.json(c) 与 auth.json(API key)复制到该隔离目录,仅本机存储,不上传。
  • 工具权归 DSH:OpenCode 原生工具一律 deny;模型发起的工具调用转换为 OpenAI tool_calls,由 DSH 执行。

可配置项

安装后在 DSH「设置 > 模型」页可见 dsh-connect-opencode 卡片,也可在 profile 根 cordis.patch.yml 中直接配置:

字段 默认 说明
enabled true 是否向 DSH 提供 OpenCode 模型
binary "" opencode 可执行文件绝对路径;空则自动发现
autoRefreshMin 15 每隔多少分钟重新拉取 OpenCode 官方模型目录并刷新免费模型列表(0 = 不刷新)。刷新在空闲(无进行中对话)时重启隔离实例,不打断当前会话

示例(资料原文):

- id: dsh-connect-opencode
  name: dsh-connect-opencode
  config:
    enabled: true
    autoRefreshMin: 10

安装与启用

运行前提

  1. 已安装 DSH 与 OpenCode(opencode 位于 ~/.opencode/bin、npm 全局或 PATH)。
  2. OpenCode 中至少配置了一个免费模型或供应商,可用 opencode models 自查。

Node 引擎要求(来自 package.json):^22.19.0 || >=24.0.0。

安装方式

推荐:DSH 插件市场

在 DSH 插件市场中搜索 dsh-connect-opencode 一键安装。

手动安装

在 DSH profile 目录执行:

npm install dsh-connect-opencode

并在 ~/.dsh/profiles/desktop/package.json 的 dsh.profile.bundles 数组末尾加上 "dsh-connect-opencode",然后重启 DSH。

典型用法

界面与配置

安装并重启后,打开 DSH「设置 > 模型」,确认 dsh-connect-opencode 卡片中 enabled 为开启状态;按需设置 binary 与 autoRefreshMin。在模型选择器中选择由该插件提供的 OpenCode 免费模型即可用于对话。

CLI 自检

在插件包目录(或全局安装后的 bin 路径)可使用:

node bin/cli.js doctor   # 检查 opencode 可执行文件是否找到
node bin/cli.js models   # 列出发现的免费模型
node bin/cli.js chat "你好"   # 走完整链路发一条消息

若模型列表为空,可先运行 node bin/cli.js models 查看发现结果;需在 OpenCode 侧配置带免费档的供应商(如 OpenCode Zen 免费档或自定义免费 provider)。

适用场景与注意

适合谁

  • 已在 OpenCode 中配置免费模型,希望在 DSH 里统一选模型、用 DSH 工具链做智能体开发的用户。
  • 需要在本机复用 OpenCode 登录态与自定义 provider,又不想与日常 OpenCode 会话混用的场景。

免费模型与上游限制

插件只桥接 OpenCode 自身的免费模型,不额外提供额度。额度、地区可用性与模型是否存续均由 OpenCode / models.dev 及各 provider 决定。资料中提到的常见情况包括:

  • 限流(如 429):Zen 免费档按出口 IP 配额,高峰可能受限。
  • 地区限制(REGION_BLOCKED)。
  • 目录中 cost 全 0 仅表示标称免费,不保证可达或长期在线。
  • 免费档客户端限制(如 403 FreeTierError):插件通过官方 opencode serve 转发;若上游政策变化,行为可能随之变化。

命中上述错误时,插件会透传上游报错,不会误报为 API key 失效。可换用其它免费模型或降低推理档位。

已知边界

  • 图片输入:仅接受 base64 data URL(PNG/JPEG/WebP/GIF),整请求 ≤ 8 MB。
  • 采样参数:不转发 temperature、max_tokens 等;推理档位仅在模型声明 variants 时映射。
  • 协议兼容:OpenCode 端 structured output 字段名可能随版本变化;工具调用异常时可先跑 bin/cli.js chat 验证并向仓库提 issue。

安全与许可

安装前请阅读 GitHub 仓库 源码与 MIT 许可证。协议层移植并简化自 ow-bridge(LaoDing,MIT);插件结构参考 dsh-connect-workbuddy(dingminhua,MIT)。

结尾

dsh-connect-opencode 把本机 OpenCode 里已配置的免费文本模型接入 DSH 模型选择器,通过隔离的 opencode serve --pure 与本地 OpenAI 兼容 shim 完成协议转换,并把工具执行留在 DSH 侧。若你同时使用 OpenCode 与 DSH,可在社区目录或 GitHub 查看说明与 issue:

  • 目录页:https://www.skillhub.cn/plugins/serra006/dsh-connect-opencode
  • GitHub:https://github.com/serra006/dsh-connect-opencode
羽毛球分组比赛记分
小程序二维码

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

小夜