前言¶
DeepSeek Harness (DSH) 的内置 web_search 工具调用 Anthropic 兼容的 Messages 端点。当将 provider 指向 OpenCode Go / Zen 时,网关要求请求必须携带 x-opencode-session 头部。缺少该头部会导致请求被拒绝并返回 MissingSessionID 错误。
dsh-web-search-opencode-go 是一个插件,它通过自动注入必要的路由头部,修复了 DSH 内置 web_search 在 OpenCode Go / Zen 上的路由问题。
它是什么¶
这是一个 Drop-in patched fork,旨在让 DSH 的 web_search 工具在不修改官方 DSH 安装的情况下,正常通过 OpenCode Go / Zen 网关工作。
- 所有者:leeyoung1
- 许可证:MIT
核心功能¶
- 自动注入头部:自动添加
x-opencode-session和x-opencode-client: dsh头部。 - 修复路由问题:解决 OpenCode Go / Zen 对缺失会话 ID 的拒绝问题。
- 安装模式:支持 DSH Bundle(推荐)和 Drop-in copy 两种安装模式。
- 可配置头部:支持通过配置
headers和sessionId自定义头部。 - 即插即用:无需修改官方 DSH 安装,安装后重启
dsh web即可使用。
安装与启用¶
推荐使用 Bundle 模式安装。
- 执行安装命令:
dsh plugin --profile web add github:leeyoung1/dsh-web-search-opencode-go
安装命令会将插件添加到 `dsh.profile.bundles`,并自动处理 patch 配置。
- 必须重启
dsh web进程,以加载新插件。
典型用法¶
安装并重启 dsh web 后,配置 baseURL 并设置 API Key 环境。
- 在
~/.dsh/settings.yaml中配置 provider 指向 OpenCode Go:
web-search-deepseek:
baseURL: https://opencode.ai/zen/go/v1
apiKeyEnv: DEEPSEEK_API_KEY
(注:`apiKeyEnv` 也可设置为 `OPENCODE_GO_API_KEY`)
- 在对话中自然语言搜索,或直接调用工具:
web_search: DeepSeek Harness GitHub
配置说明¶
除了基础的 baseURL 和 apiKeyEnv,还可以配置可选的 headers 和 sessionId。
可选配置项¶
web-search-deepseek:
baseURL: https://opencode.ai/zen/go/v1
# 自定义 x-opencode-session 头部
headers:
x-opencode-session: my-fixed-session
# 显式指定会话 ID
sessionId: my-fixed-session
头部优先级¶
当未显式配置时,插件按以下顺序确定会话 ID:
1. 显式配置的 headers['x-opencode-session']
2. 显式配置的 sessionId
3. 当前 DSH agent 会话 ID
4. 提供商级别的 UUID(用于非 agent 调用)
注意事项¶
- 运行环境:需要 Node.js 20+ 或 pnpm。
- 重启机制:安装后必须重启
dsh web才能生效。 - 平台支持:支持 macOS、Linux 和 Windows。
- 官方包保护:插件以 Drop-in copy 或 Bundle 方式工作,不会修改 DSH 安装目录中的官方 profile 包。
总结¶
该插件解决了 DSH 使用 OpenCode Go / Zen 作为搜索提供商时的路由错误。通过标准的安装命令和配置文件修改,即可恢复 web_search 工具的正常功能。