前言¶
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;模型发起的工具调用转换为 OpenAItool_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
安装与启用¶
运行前提¶
- 已安装 DSH 与 OpenCode(
opencode位于~/.opencode/bin、npm 全局或PATH)。 - 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