🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

itchenshi/dsh-opencode-go-path

DeepSeek Harnessspec-screened扫描:中风险在 GitHub 查看 ↗
⚠ 装前注意

OpenCode / OpenCode Go 路由的一站式插件:装上、勾上、就能用 —— 不用手改配置,不用命令行。

基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/9/23 · 已提供中文文档

DeepSeek Harness 插件:声明 OpenCode Go 路由通信协议,自动添加 DeepSeek V4.1 模型,并附加 x-opencode-session 请求头

综合分
30
GitHub 分
30
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add itchenshi/dsh-opencode-go-path
未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
信任档位:已验证本站已于 1 天前真实安装成功
是什么
dsh 原生插件 · tool
装得上吗
本站已真实安装成功(非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 2 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

🟢实装验证通过· 2026/9/24
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/23(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-opencode-go-path(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

未发布到 npm registry,仅可从源码安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/23 21:26:19

用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
dsh-opencode-go-path

English
!

OpenCode / OpenCode Go 路由的一站式插件:装上、勾上、就能用 —— 不用手改配置,不用命令行。

它替你解决什么

| 你会遇到的问题 | 插件做的事 |
|---|---|
| 模型列表里没有 deepseek-v4.1-flash,想加还报 needs an api | 给 opencode-go 路由声明 wire 协议,目录外的模型也能用 |
| 模型目录里翻不到厂商新发的模型 | 引擎启动时自动读目录,把 DeepSeek V4.1 模型补进去并排到第一位 |
| 加了模型却发不出请求、保存还被拒 | 自动补上路由的 baseURL(目录里没有的模型必须靠它才有地址) |
| 多轮对话报 400 MissingSessionID | 给发往 OpenCode 的请求附加按会话的 x-opencode-session 头 |
| 多轮对话报 400 reasoning_content must be passed back | 给目录外的 V4.1 模型补上 DeepSeek 的思考协议声明 |

装上就能用

- 用 DSH Ready GUI(推荐):插件随 GUI 内置。打开 GUI → 设置窗口 → 第三方插件 → 勾选
OpenCode Go 路由,装完按提示重启引擎。
- 其它 DSH 宿主(dsh web / CLI):

git clone https://github.com/itchenshi/dsh-opencode-go-path.git
dsh plugin --profile web add file:

装到的是磁盘上的真实目录,所以以后 git pull 更新的就是同一份代码;反过来,目录被移动或删掉
会让这条依赖失效(重新 add 一次即可)。

npm 上暂时没有这个包:注册账号那一环走不通(www.npmjs.com 返回 Cloudflare 托管挑战),包发不
出去。所以现在只能按上面两种方式装。等注册通了会照常发布。

怎么确认生效:会话模型选择器的第一项是 DeepSeek V4.1 Flash;
$DSH_HOME/settings.yaml 的 llm-pi-ai.providers.opencode-go 里有 deepseek-v4.1-flash 且排在
第一位(你自己没配 baseURL 时,插件会补一条 https://opencode.ai/zen/go/v1)。

它具体做了什么

1. 声明路由协议(配置层)

引擎给每个模型解析 api 的顺序是:

route.api  ??  目录里该模型的 api  ??  目录内所有模型共有的 api

opencode-go 目录里的模型横跨三种协议(anthropic-messages / openai-completions /
openai-responses),第三项推不出来;目录外的新模型(如 deepseek-v4.1-flash)连第二项都没有。
于是引擎报 needs an api,模型页的严格校验也拒绝保存。

插件通过 cordis.patch.yml 给 llm-pi-ai 行补 providers.opencode-go.api: openai-completions
(OpenCode Go 的 OpenAI 兼容端点说的就是这个协议)。

2. 自动检测目录、补齐模型、放到最前(运行时)

引擎启动后,插件等 llm-pi-ai 命名空间就绪,然后:

1. 检测:用引擎自己的 llm.discoverModels() 读出该路由的模型清单。对 pi-ai 自带目录的路由,
这条通道直接返回目录、不发网络请求;插件刻意不传 baseURL 和凭据,所以「目录里没这个路由」
时它会在触网之前失败退出 —— 检测不到就不猜。
2. 补齐并置顶:
- 你已经配了 models → DeepSeek V4.1 放到最前,你自己的条目原样保留、顺序不变;
- 你没配 models → 用检测到的目录做种子,写出「V4.1 在最前 + 目录里全部模型」。引擎把
「非空的已配置列表」当作该 provider 的完整模型集,只写我们那几个会把整个目录换掉,所以
种子必须来自目录,一个都不能丢;
- 判断「在不在列表里」按我们自己的 id,不是 deepseek-v4.1 前缀 —— 上游将来多出别的 v4.1
型号,不该把已收录的 Flash 顶掉。
3. 没有 endpoint 就补上:目录外的模型按
route.baseURL ?? 目录里该模型的 baseUrl ?? provider 级 baseUrl 找地址,而 opencode-go 目录
provider 级 baseUrl 是空的 —— 于是它既发不出去也存不下来(needs a baseURL)。插件在路由
没有 baseURL 时补 https://opencode.ai/zen/go/v1;路由已经有(比如你指向了别的网关)就一个
字节都不动。手写的配置里「已经排第一但缺 endpoint」也会被修好。
4. 幂等:形状对、endpoint 在 → 不写、不发事件,不会和设置变更事件打转。

3. 附加会话头

OpenCode 的中继会把携带相同 x-opencode-session 的请求固定到同一个上游后端,让一轮对话的 prompt
缓存保持命中(修复 400 MissingSessionID)。

默认是安全模式:每个 DSH 会话派生一个随机不透明 UUID,绝不把内部会话 ID 发给第三方。
mode: 'session-id' 是显式可选,仅在你完全信任上游时才用。

4. 补上目录外的思考协议(修 400 reasoning_content)

deepseek-v4.1-flash 不在已装目录里,所以引擎把它当成普通模型:不请求思考、也不回传
reasoning_content。而 pi-ai 的 DeepSeek 兼容是按厂商名/域名自动探测的,OpenCode Go 中继两样
都不匹配 —— 结果回放历史时缺少 reasoning_content,上游直接 400
(The reasoning_content in the thinking mode must be passed back to the API),该模型每一轮多轮
对话都会失败。

插件给这条条目补上目录本该提供的声明(取值与同路由的 deepseek-v4-flash / -pro 逐字一致):
compat.requiresReasoningContentOnAssistantMessages / thinkingFormat: deepseek 与
reasoningEfforts。只补不覆盖:你改过的名字、容量、自己写过的 compat 开关都原样保留,所以你
已经加过的条目会被就地升级,不需要删了重加。

配置(cordis.patch.yml 的行 config,全部可选)

| 键 | 说明 |
|---|---|
| providers | 附加会话头的路由名,默认 ['opencode', 'opencode-go'];自定义路由名时加进来 |
| mode | 'uuid'(默认,安全)或 'session-id'(显式可选,会发送内部会话 ID) |
| debug | true 时记录每个收到头的流式调用 |
| debugFile | 追加 JSON 日志的路径;仅 $DSH_HOME/logs 或系统临时目录下的路径生效;日志里的 session 是 SHA-256 单向散列 |

权限与边界(给会静态扫描的商城看的)

- 运行依赖:无。 只用 Node 内建模块。出站网络:无。 插件自己不发起任何请求;它包装
globalThis.fetch 加头,并调用引擎自己的 llm.discoverModels()(对自带目录的路由直接返回目录,
不触网)。
- 文件:默认没有。 只有你显式配了 debugFile 才会写,且只接受 $DSH_HOME/logs 或系统临时目录。
- 本机路由:无。 没有页面半边,不注册任何 HTTP 路由。
- 凭据 / 命令 / 原生制品 / 生命周期脚本:无。
- 失败边界:依赖的是引擎装配层、settings 服务与 llm 事件的公开契约,不是引擎版本号。契约
变了,引擎会在启动时显式报插件加载失败,而不是静默失效。写入走 settings 服务,会重跑引擎
的严格校验,校验不过整笔拒绝(日志给出原因),不会留下半份配置。

开发

node --check lib/index.js
npm test        # 本地行为测试(不联网、不需要引擎)

V4_1_MODELS 里加一个模型即可支持新的 V4.1 型号;planRouteUpdate() / withV41ModelsFirst() /
withV41Defaults() / isV41() 分别负责「写什么」「怎么置顶」「怎么补字段」「是不是 v4.1」,都有
单测覆盖。

许可

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(itchenshi)的其他插件

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群