为缺失会话标头的 OpenCode 请求自动补上,避免审查报错
29.6/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add NotKeKe/dsh-opencode-session-header该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
发起外部网络请求
查看扫描证据(共 11 处,展示前 11 条)
- 请求外部主机opencode.aiverify.mjs:36
await globalThis.fetch('https://opencode.ai/zen/go/v1/responses', { - 发起网络请求verify.mjs:36
await globalThis.fetch('https://opencode.ai/zen/go/v1/responses', { - 请求外部主机opencode.aiverify.mjs:43
await globalThis.fetch('https://opencode.ai/zen/go/v1/responses', { - 发起网络请求verify.mjs:43
await globalThis.fetch('https://opencode.ai/zen/go/v1/responses', { - 请求外部主机api.deepseek.comverify.mjs:49
await globalThis.fetch('https://api.deepseek.com/anthropic/v1/messages', { - 发起网络请求verify.mjs:49
await globalThis.fetch('https://api.deepseek.com/anthropic/v1/messages', { - 请求外部主机edge.opencode.aiverify.mjs:55
await globalThis.fetch('https://edge.opencode.ai/zen/go/v1/responses'); - 发起网络请求verify.mjs:55
await globalThis.fetch('https://edge.opencode.ai/zen/go/v1/responses'); - 请求外部主机opencode.aiverify.mjs:59
await globalThis.fetch(new Request('https://opencode.ai/zen/go/v1/responses', { - 发起网络请求verify.mjs:59
await globalThis.fetch(new Request('https://opencode.ai/zen/go/v1/responses', { - 发起网络请求verify.mjs:65
await globalThis.fetch('not a url');
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
涉及外部主机:opencode.ai、api.deepseek.com、edge.opencode.ai
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek Harness 宿主包:给缺少 x-opencode-session 的 OpenCode Go 请求补上这个头,修复 400 MissingSessionID 报错,比如 Auto review 下的情况。
README
由 DeepSeek 最新模型翻译生成dsh-opencode-session-header
给 DeepSeek Harness(DSH)用的 Host bundle:给发往 OpenCode Go 的请求补上缺失的 x-opencode-session 标头 —— 而且只在标头真的缺了的时候才补。
解决的问题
OpenCode Go(opencode.ai/zen/go)从 2026-09-05 前后开始强制要求每个推理请求携带 x-opencode-session,缺了就直接拒绝路由:
INVALID_REQUEST 400: {"type":"MissingSessionID",
"message":"Request is missing x-opencode-session and cannot be routed efficiently."}
在 DSH 里这个标头平常是带得上的:agent loop 每次对话都会填一个 session id,llm-pi-ai 走 pi-ai 目录 provider 时由其 withOpenCodeSessionHeader 从 options.sessionId 生成。所以一般对话不会出问题。
问题出在没有 session id 的手动组装请求。
展开完整文档(README 剩余 1 节)
dsh-opencode-session-header
给 DeepSeek Harness(DSH)用的 Host bundle:给发往 OpenCode Go 的请求补上缺失的 x-opencode-session 标头 —— 而且只在标头真的缺了的时候才补。
解决的问题
OpenCode Go(opencode.ai/zen/go)从 2026-09-05 前后开始强制要求每个推理请求携带 x-opencode-session,缺了就直接拒绝路由:
INVALID_REQUEST 400: {"type":"MissingSessionID",
"message":"Request is missing x-opencode-session and cannot be routed efficiently."}
在 DSH 里这个标头平常是带得上的:agent loop 每次对话都会填一个 session id,llm-pi-ai 走 pi-ai 目录 provider 时由其 withOpenCodeSessionHeader 从 options.sessionId 生成。所以一般对话不会出问题。
问题出在没有 session id 的手动组装请求。最典型的是内置的 @deepseek-ai/dsh-experimental-auto-review:它的 reviewer 调用(classifyRisk())只带 provider / model / system / messages / temperature / signal,没有 sessionId。结果就是 —— 把权限切成 Auto review 之后,每次工具执行前的审查请求都 400,工具本身也跟着失败。
这个插件怎么修
包装 host 进程的 globalThis.fetch,规则只有一条:
| 情况 | 行为 |
| host 是 opencode.ai(含子域名)且缺 x-opencode-session | 补上一个稳定的合法 token |
| 已经带了该标头(不分大小写) | 原封不动 |
| 其他 provider(DeepSeek 官方、Anthropic、OpenAI…) | 完全不碰 |
| URL 无法解析或任何异常 | 回退原始调用,不制造新的失败模式 |
「只在缺失时补」是这个插件存在的理由。 换成在 provider profile 直接写死一个标头(cordis.patch.yml 的 headers:)也能让 reviewer 通关,但那会把主对话原本正确的 per-session 值一起盖掉 —— 等于拿对话路由/缓存亲和性去换。这里不碰已存在的值,主对话维持原状。
网关只检查标头存在且格式合法,不验证 session 是否真的注册过,所以一个 process 稳定的 token 就足够;同一个 session 的多次审查请求也会共用同一个路由键。
为什么是包装 fetch,不是拦截 llm/stream
llm service 有 llm/stream waterfall,看起来是理想的拦截点,但它改不动最终送出去的请求:
// @deepseek-ai/dsh-llm —— stream() return this.ctx.waterfall(this, "llm/stream", options,
() => this.adapterStream(options, prepared));
final callback 用闭包捕获了 options 与 prepared,而且不吃参数,所以 listener 即使调用 next(newOptions) 也到不了 adapter。要在请求层补东西,只能往更下层、也就是 fetch 这一层走。
安装
用 DSH 的插件管理器(plugin_manager → install_bundle,target 指向这个目录),或命令行:
dsh plugin --profile <profile> add <本目录绝对路径>
也可以直接从 GitHub 安装:
dsh plugin --profile <profile> add github:NotKeKe/dsh-opencode-session-header
安装成功会回报 application: applied,代表变更已生效(通常不需要重启)。用 Config.listConfigs(不需批准)或 dsh --profile <profile> --dump-config 应该能看到 opencode-session-header 这一列。
移除
dsh plugin --profile <profile> remove @local/dsh-opencode-session-header
卸载时会还原原本的 fetch,不修改任何文件、凭证或配置。
注意
- 以 link: 方式安装时,这个目录不能移动或删除,否则插件会失效。要清理请先移除 bundle。
- 目前没有 Config schema。要调整目标 host 或 token 前缀,请改 index.js 的 TARGET_HOSTS / TOKEN_PREFIX 常量。
- 把 VERBOSE 设成 true 可以让每次注入都印一行到 host console,方便排查;平常请保持 false。
文件
| 文件 | 作用 |
| index.js | 全部逻辑(fetch 包装) |
| package.json | Host-only bundle manifest,零依赖、无需 build |
| cordis.patch.yml | 插入 opencode-session-header 这一列 |
| verify.mjs | 离线行为检查 |
背景链接
- pi-ai issue:@earendil-works/pi-ai never sends the x-opencode-session header —— https://github.com/earendil-works/pi/issues/9326
- opencode issue:Go provider 400 MissingSessionID —— https://github.com/anomalyco/opencode/issues/47763
- OpenCode 官方公告(2026-09-03):自 09/06 起,缺少此标头的请求可能开始报错。
授权
MIT License —— 见 LICENSE。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
NotKeKe/dsh-opencode-session-header
为缺失会话标头的 OpenCode 请求自动补上,避免审查报错
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,826已汉化DSH
72.2
花束设计alchaincyf/huashu-design
一句话生成网页、原型、PPT 与信息图等可交付设计
★ 28,638已汉化DSH
71.7
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。