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

beihzb/dsh-opencode-session-header

DeepSeek Harnessspec-screened扫描:中风险在 GitHub 查看 ↗
✓ 可直接安装

面向 DeepSeek Harness DSH → OpenCode Go 的按会话…

自动检查通过:npm 包已发布且 engines 声明满足基线(声明 Node >=20);该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/7 · 已提供中文文档

为 DeepSeek Harness 中的 OpenCode Go 按对话注入 x-opencode-session - 修复 400 MissingSessionID 且不破坏其他提供商

综合分
35.3
GitHub 分
35.3
用户评分
—
★ Stars
10
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-opencode-session-header
npm 包 dsh-opencode-session-header 已校验归属本仓库,走 npm 安装最省事
信任档位:已验证本站已于 4 天前真实安装成功(L4 · 真实安装)
是什么
dsh 原生插件 · chat
装得上吗
本站已真实安装成功(L4 · 真实安装,非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 18 天前

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

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

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

✓npm 包dsh-opencode-session-header @ 0.1.0
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/20 08:39:25

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

README

由 DeepSeek 最新模型翻译生成
dsh-opencode-session-header

npm version
license
node

面向 DeepSeek Harness (DSH) → OpenCode Go 的按会话 x-opencode-session 头注入插件。

既修复 400 MissingSessionID 报错,又保留 OpenCode 官方按会话路由/提示词缓存的优化——只作用于 opencode.ai,运行时可开关(无需重启),零依赖。

English

问题背景

自 2026-09-05 起,OpenCode Go 强制要求每个推理请求携带稳定的 x-opencode-session 头(用于路由与提示词缓存)。DeepSeek Harness ≤ 0.1.2-rc.1 在所有适配器路径上都不发送该头,导致 opencode-go 下所有模型调用失败:

400: {"type":"MissingSessionID","message":"Error from provider (Console Go): Request is missing x-opencode-session ..."}

上游修复在 deepseek-harness discussion #5495 跟踪,但尚未发布。本插件在本地补上这个缺口。

为什么不用常见的绕过方案?

| | settings.yaml 静态 headers | 全局 opencode_zen profile(dsh-custom-header) | 本插件 |
|---|---|---|---|
| 修复 400 | ✅ | ✅ | ✅ |
| 每会话独立 id(缓存/路由最优) | ❌ 所有会话共用一个 id → 缓存落空、变慢变贵 | ✅ | ✅ 直接用 DSH 真实会话 id |
| 不影响其他 provider | ✅ | ❌ 对所有主机改写 UA + x-opencode-* | ✅ 仅 opencode.ai |
| 免重启开关 | — | — | ✅ 改 JSON 立即生效 |
| 额外依赖 | — | 第三方插件 + 客户端 bundle | 无 |

安装

dsh plugin --profile web add dsh-opencode-session-header

或从本地目录安装:

dsh plugin --profile web add "file:C:\path\to\dsh-opencode-session-header"

安装后手动重启一次 dsh web(插件随启动加载)。启动日志应出现:

[dsh-opencode-session-header] loaded: header=x-opencode-session hosts=opencode.ai fallback=dsh-default
[dsh-opencode-session-header] runtime switch: \plugins\dsh-opencode-session-header.json ({"enabled":false} disables; missing file = enabled)

运行时开关(无需重启)

状态文件:/plugins/dsh-opencode-session-header.json(DSH_HOME 未设置时为 ~/.dsh):

{ "enabled": false }

- false → 关闭注入(所有请求原样放行);
- true 或文件不存在 → 开启注入;
- 插件每次 LLM 请求实时读取该文件,改动立即生效。

工作原理

两个挂载点,均已在 DSH 0.1.2-rc.1 内实测可行:

1. llm/stream waterfall 观察者——把每次适配器流式迭代的执行包进 AsyncLocalStorage,携带 GenerateOptions.sessionId(每会话唯一,跨轮次/压缩/重试稳定;新会话/fork/子代理各自全新)。
2. fetch 传输层中间件——仅当请求主机匹配白名单(默认 opencode.ai 及其子域)时注入 x-opencode-session;值为当前会话 id,无 LLM 上下文时(如模型探测)用兜底值 dsh-default。其他任何主机原样放行,一个字节不改。

fetch 管线挂在本插件自己的 Symbol.for 键下(机制取自 @aizigao/pi-fetch-pipeline,MIT),与其他同样包装 fetch 的插件互不覆盖。头合并遵循 fetch 规范:以实际会到达网线的那份头(init.headers 或 Request.headers)为合并基底。

测试

npm test        # 13 项断言:注入 / 兜底 id / 主机白名单 / 运行时开关 /
并发会话隔离 / llm/stream 上下文传播 / 子域匹配

兼容性与退役

- 针对已针对 DSH 0.1.2-rc.1(发布时的 npm 最新版)构建并验证。
- 依赖"DSH 出站 LLM 请求走 Node 全局 fetch"这一现状;若未来版本更换网络栈,插件会静默停止注入——症状就是 400 复现,届时卸载即可。
- 待上游内置按会话会话头后(discussion #5495),即可退役:

dsh plugin --profile web remove dsh-opencode-session-header

重启 dsh web 生效(可顺带删除开关文件)。

致谢

- fetch 管线机制取自 @aizigao/pi-fetch-pipeline(MIT);在 DSH 上走 fetch 层的可行性由 Asaiuta 的 dsh-custom-header(MIT)验证。

许可证

MIT

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

同作者(beihzb)的其他插件

💬 加入社群

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

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