前言¶
DeepSeek Harness(DSH)通过插件扩展模型来源时,常见做法是接云端 API 或 DSH 内置 provider。若你已经在本机安装 OpenCode,并在 OpenCode 里登录了多家 provider,希望像 T3 Code 那样——由本机 opencode serve 承接推理、模型列表与鉴权都走 OpenCode 自己的 CLI——社区里原先缺少对应的 DSH 插件。dsh-plugin-opencode-local 由 MateenAhmed737 维护,在 DSH 中增加 OpenCode (local) 模型 provider,分类属于模型推理。
这是什么¶
该插件是 DSH 的 LLM provider 插件:每次对话请求都经由你机器上已安装的 OpenCode 进程处理,不代替 OpenCode 读取或转发 auth.json 等凭证,也不向 opencode.ai 或其他主机发起模型流量;插件本身无安装脚本、不下载额外资源。模型 ID 使用 OpenCode 的 provider/model 形式,涵盖你在 OpenCode 中已登录的各 provider 模型以及 OpenCode 自有免费模型。
核心功能¶
下面介绍 README 中已说明的能力要点。
模型与鉴权¶
- 模型列表来自本机 OpenCode;默认每
modelRefreshSeconds(300 秒)从 OpenCode 重新拉取。 - 登录与 API 密钥由 OpenCode CLI 自行管理;插件不复制、不转发凭证。
本地服务与会话¶
- 首次请求时插件执行
opencode --version,随后在127.0.0.1上启动opencode serve(随机端口与密码),也可通过配置serverUrl附着到你已在运行的 serve 实例。 - 每个 DSH 会话对应 OpenCode 内一个 session,工作目录默认与 DSH 对话一致;历史不一致时会新建 session 并用 DSH transcript 种子化。
- 文本、推理、工具活动与 token 用量流式进入 DSH;在 DSH 中停止回复会中止 OpenCode 运行。
- 支持 png、jpeg、gif、webp(单张最大 20 MB)传给接受图像的模型。
受限工具与权限¶
受限工具(如 bash/shell、edit、webfetch 等)策略与 T3 Code 默认非全权限模式相近:始终允许 question、read、glob、grep 等;受限项在 DSH 中可弹出审批。可通过 allowRestrictedTools、askForApproval 调整行为。插件不使用 --auto 或 allow-all。
错误映射¶
OpenCode 侧错误会原样展示;常见映射包括:429 / FreeUsageLimitError → DSH RATE_LIMIT;401/403 等鉴权类 → AUTH;本地连接问题 → TRANSPORT(DSH 会重试一次);5xx → SERVER。
兼容性¶
| 组件 | 要求 |
|---|---|
| DeepSeek Harness | 0.2.x(README 注明在 0.2.1-rc.5 上测试) |
| DSH profiles | Desktop 与 CLI/headless |
| OpenCode | 1.14.19 或更新,含 2.x |
| 平台 | Windows 端到端测试;Linux CI;macOS 未测但应可用 |
| Node | 22.19 或更新(DSH 自带) |
当前 npm 包版本为 0.1.1,许可证 MIT。
安装与启用¶
先做 OpenCode 安装与自检,再把插件加入 DSH,最后重启并在模型选择器里选用 OpenCode (local)。
1. 安装 OpenCode¶
npm i -g opencode-ai # 或见 https://opencode.ai/docs/#install
opencode --version
opencode auth login # 付费 provider 需要;免费模型可不登录
2. 添加 DSH 插件¶
- DSH 桌面应用: 打开插件管理器,添加
dsh-plugin-opencode-local。 - DSH CLI: 将
web换成你的 profile 名(如desktop、headless):
dsh plugin --profile web add dsh-plugin-opencode-local
若要试用未发布版本,可在插件仓库内 npm ci && npm pack,将生成的 .tgz 作为插件添加。
3. 重启并选模型¶
重启 DSH 后,在模型选择器中选择 OpenCode (local) 下的模型;亦可在 Settings → Models 中编辑该 provider。若找不到 opencode 可执行文件,首次请求会提示安装方式或设置 binaryPath。
配置项¶
在 Settings → Models → OpenCode (local) 配置,或在 profile 的 cordis.patch.yml 里写 dsh-plugin-opencode-local 段:
| 配置项 | 默认值 | 说明 |
|---|---|---|
binaryPath |
opencode |
OpenCode 可执行文件路径或 PATH 名 |
serverUrl |
空 | 附着已有 serve,如 http://127.0.0.1:4096 |
serverPassword |
空 | serve 密码(1.x 对应 OPENCODE_SERVER_PASSWORD,2.x 对应 OPENCODE_PASSWORD) |
cwd |
空 | OpenCode session 工作目录;空则用 DSH 对话目录 |
allowRestrictedTools |
false |
为 true 时受限工具不经询问允许一次 |
askForApproval |
true |
是否在 DSH 审批提示中询问受限工具 |
requestTimeoutMs |
1800000 |
单轮上限(毫秒);0 表示不限 |
modelRefreshSeconds |
300 |
模型列表刷新间隔 |
showToolActivity |
true |
在回复中简短展示 OpenCode 工具调用 |
localSessionTitles |
true |
本地生成 DSH 会话标题,避免额外模型请求 |
典型用法与排错¶
正常路径:本机已 opencode auth login(如需)、插件已启用 → 在 DSH 中选 OpenCode (local) 模型 → 对话即经本地 serve 完成。
常见问题(摘自 README):
- OpenCode was not found: 安装 OpenCode 或设置
binaryPath;Windows 常见路径为C:\Users\<you>\AppData\Roaming\npm\opencode.cmd。 - OpenCode vX is too old:
opencode upgrade或npm i -g opencode-ai@latest。 - 选择器无模型: 终端执行
opencode models;若为空则opencode auth login。 - database is locked: 同数据目录下另有 OpenCode 进程;稍后重试或用
serverUrl连接已有 serve。 - 工具反复被拒: 在 DSH 提示中批准,或谨慎开启
allowRestrictedTools。 - 免费模型限流: 来自 OpenCode 免费层;等待或登录自带 key 的 provider。
插件不记录 prompt、凭证或 serve 密码。
适用场景与注意¶
适合已在 daily 工作流中使用 OpenCode CLI、希望在 DSH Desktop 或 headless profile 里复用同一套 provider 与登录状态的开发者。DSH 生态强调「一切皆插件」;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。
插件以当前 DSH 进程权限在本机启动并管理 opencode serve;安装前请阅读 GitHub 仓库 源码与 MIT 许可证,确认与本机安全策略一致。受限工具涉及 shell、文件编辑与网络访问时,默认需人工审批。
结尾¶
经过上面的步骤,你可以在 DSH 内以与 T3 Code 相近的方式,把推理完全交给本机 OpenCode,同时保留 DSH 的会话与审批体验。进一步了解可访问 SkillHub 目录页 与 GitHub:MateenAhmed737/dsh-plugin-opencode-local。