前言¶
在使用 DeepSeek Harness (DSH) 调用 OpenCode Go 模型时,需要 x-opencode-session 请求头来处理会话路由和提示缓存。DSH <= 0.1.2-rc.1 在默认配置下不发送该头,导致所有 OpenCode Go 请求返回 400 MissingSessionID 错误。上游修复方案尚未发布,此插件填补了这一本地修复的空白。
插件介绍¶
dsh-opencode-session-header 是一个为 DeepSeek Harness (DSH) 编写的插件,由 beihzb 维护。它通过注入 x-opencode-session 头部,修复了 OpenCode Go 的会话校验错误,同时保持原有的路由和缓存优化机制。
核心功能¶
- 单会话注入:为每个 DSH 会话注入独立的
x-opencode-session头。 - 修复报错:解决
400 MissingSessionID拒绝问题。 - 优化保留:保持 OpenCode 的按会话路由和提示缓存优化。
- 严格范围:仅对
opencode.ai域名生效,不影响其他 Provider。 - 无需重启:通过配置文件即时开关,无需重启 DSH。
- 零依赖:不引入额外的第三方库。
安装与启用¶
在终端执行以下命令安装插件:
dsh plugin --profile web add dsh-opencode-session-header
安装后,需要重启一次 dsh web 服务以加载插件。启动日志中应显示插件加载信息。
运行时开关¶
插件提供运行时开关功能,无需重启服务即可生效。
开关文件位于:
<DSH_HOME>/plugins/dsh-opencode-session-header.json
默认内容为:
{ "enabled": false }
false:关闭注入,请求头保持原样。true或文件缺失:开启注入。- 插件会在每次 LLM 请求时读取该文件,修改后立即生效。
注意事项¶
- 版本要求:插件已针对 DSH
0.1.2-rc.1验证。 - 依赖环境:依赖 DSH 使用进程全局的
fetch进行 LLM 流量转发。如果未来 DSH 更换网络栈,插件将失效。 - 退役计划:当 DSH 官方支持原生按会话注入会话头(讨论 #5495)时,建议卸载此插件。
总结¶
该插件通过拦截并修改 HTTP 请求头,为 DSH 中的 OpenCode Go 请求补全了必要的会话信息,解决了报错问题。它不破坏现有功能,且配置简单,适合需要在当前版本 DSH 下使用 OpenCode Go 的场景。