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

leeyoung1/dsh-web-search-opencode-go

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

修复 DSH websearch 走 OpenCode Go / OpenCode Zen 时的…

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

通过 OpenCode Go / Zen 修复 DSH web_search:自动注入 x-opencode-session。@deepseek-ai/dsh-web-search-deepseek 的即插即用补丁分支。

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

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

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

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

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

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

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/24 11:38:45

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

README

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

修复 DSH web_search 走 OpenCode Go / OpenCode Zen 时的 MissingSessionID 报错。 网关会拒绝缺少 x-opencode-session 的 Anthropic Messages 请求:

Error from provider (Console Go): Request is missing x-opencode-session and cannot be routed efficiently.
Please see https://opencode.ai/docs/go/#where-can-i-use-it

本仓库是 @deepseek-ai/dsh-web-search-deepseek
的同名 drop-in 补丁分支,适用于 DeepSeek Harness。
它会自动注入:

- x-opencode-session —— 当前 DSH agent 会话 id(或配置的 id / 插件级 UUID 兜底);
- x-opencode-client: dsh。

这样内置 web_search 工具即可恢复正常,且不需要修改官方 DSH 安装目录。

一句话用法: 在 DSH 里存好 OpenCode Go key → 设置 web-search-deepseek.baseURL → 运行安装脚本 → 重启 dsh web → 照常使用 web_search。详细步骤见使用方法。

这个补丁改变了什么

这不是新的 CLI,也不是新的 web_search 命令。安装并重启 dsh web 后:

- 你现有的 web-search-deepseek 配置保持不变;
- agent 平时的每一次 web_search 调用都会走补丁后的 provider;
- 补丁 provider 自动补上 OpenCode Go / Zen 需要的路由头。

不需要改 profile patch,不需要新增工具,也不需要改提示词。

问题原因

DSH 内置搜索提供方请求的是 Anthropic 兼容 Messages 端点:

POST {baseURL}/messages

如果你这样指向 OpenCode Go:

web-search-deepseek:
baseURL: https://opencode.ai/zen/go/v1

上游提供方只会发送常规请求头(x-api-key、authorization、anthropic-version 等),
而 OpenCode Go 还要求一个会话路由头,缺失就返回 MissingSessionID / HTTP 400。
OpenCode Go 本身支持原生 web_search_20250305,缺的只是这个路由头。

修复内容

本分支保留官方提供方逻辑,新增:

- 对 opencode.ai 端点自动注入 x-opencode-session / x-opencode-client;
- 额外的 headers、sessionId 配置,便于兼容其他网关;
- 安装脚本会把补丁包复制到 DSH web profile 中 bundle 本来就会解析的路径:

~/.dsh/profiles/web/node_modules/@deepseek-ai/dsh-web-search-deepseek

DSH 安装目录(/opt/homebrew/...、npm -g 等)里的官方包不会被改动。

快速开始

需要 Node.js 20+(或可用的 dsh + pnpm),并已存在 DSH web profile。
有两种安装方式;方式 A 就是插件市场使用的路径。

方式 A —— 作为 DSH bundle 安装(推荐)

dsh plugin --profile web add github:leeyoung1/dsh-web-search-opencode-go
然后重启 dsh web

本包声明了 dsh.bundle,所以 dsh plugin 会自动把它加入
dsh.profile.bundles。它的 cordis.patch.yml 会禁用官方
web-search-deepseek 行,并在同一位置插入补丁 provider。

npm 包发布后,命令可以更短:

dsh plugin --profile web add dsh-web-search-opencode-go
然后重启 dsh web

方式 B —— drop-in 复制(离线 / 不用 pnpm)

把补丁包复制进 profile 的 @deepseek-ai 槽位,遮蔽官方包;不需要包管理器,
macOS、Linux、Windows 通用。

macOS / Linux:

git clone https://github.com/leeyoung1/dsh-web-search-opencode-go.git
cd dsh-web-search-opencode-go
./mount.sh
然后重启 dsh web

Windows(PowerShell 或 cmd):

git clone https://github.com/leeyoung1/dsh-web-search-opencode-go.git
cd dsh-web-search-opencode-go
node .\bin\dsh-web-search-opencode-go.mjs
然后重启 dsh web

mount.sh 只是 POSIX 便捷包装,调用的是同一个 Node 安装脚本。

非默认 profile / DSH home

macOS / Linux:

DSH_PROFILE_DIR=/path/to/profile ./mount.sh
或:DSH_HOME=/path/to/dsh-home ./mount.sh

Windows:

$env:DSH_PROFILE_DIR = "C:\path\to\profile"
node .\bin\dsh-web-search-opencode-go.mjs

常用参数(方式 B)

--dry-run     只显示将要进行的修改,不写 profile
--uninstall   把补丁复制件移走,并恢复之前的条目
--help        查看用法与环境变量

最后必须重启 dsh web,因为 DSH 只在启动时加载插件。

使用方法

1. 在 DSH 里存好 OpenCode Go API key

打开 设置 → Models,把 OpenCode Go 的 key 存成以下任一个名字:

- DEEPSEEK_API_KEY(provider 默认),或
- OPENCODE_GO_API_KEY(然后在下面的配置里写 apiKeyEnv: OPENCODE_GO_API_KEY)。

每次搜索都会重新解析 key,所以轮换 key 不需要重启。

2. 把内置搜索 provider 指向 OpenCode Go

编辑 ~/.dsh/settings.yaml:

web-search-deepseek:
baseURL: https://opencode.ai/zen/go/v1
apiKeyEnv: DEEPSEEK_API_KEY   # 默认值;OPENCODE_GO_API_KEY 也可用
model: deepseek-v4-flash      # 默认值

3. 安装补丁并重启

按上面的快速开始安装,然后重启 dsh web。

4. 正常使用

没有新命令。直接对 agent 说:

搜索一下 DeepSeek Harness GitHub 的最新信息

或者让 agent 调用:

web_search: DeepSeek Harness GitHub

预期:正常返回结果,不再出现 MissingSessionID。每次搜索会以
web/deepseek-search-llm-request 事件记录在 DSH 会话日志中。

配置

你现有的配置无需改动:

web-search-deepseek:
baseURL: https://opencode.ai/zen/go/v1
apiKeyEnv: DEEPSEEK_API_KEY   # 默认值;OPENCODE_GO_API_KEY 也可用
model: deepseek-v4-flash      # 默认值

可选的新字段:

web-search-deepseek:
baseURL: https://opencode.ai/zen/go/v1
headers:
x-opencode-client: dsh      # 覆盖任意自动生成的标头
sessionId: my-fixed-session   # 显式指定 OpenCode 路由会话

x-opencode-session 的优先级:

1. 显式配置的 headers['x-opencode-session']
2. sessionId 配置
3. 当前 DSH agent 会话 id
4. 插件级 UUID 兜底(agent 会话之外的直接调用)

x-opencode-client 默认为 dsh,同样可以被覆盖。

安装方式说明

支持两种安装方式:

- DSH bundle(方式 A):package.json 声明
dsh.bundle.patch = ./cordis.patch.yml。dsh plugin add 会把包装进
dsh.profile.bundles;patch 禁用官方 web-search-deepseek 行,并插入本
provider,settings 命名空间(web-search-deepseek)与 provider id
(deepseek-official)保持不变。
- drop-in 复制(方式 B):Node 安装脚本把本包复制到
/node_modules/@deepseek-ai/dsh-web-search-deepseek。Node 会优先
解析这个路径,而不是共享的 profiles/node_modules,于是原有 bundle 行会
加载到补丁 provider。

两种方式都保留你现有的 web-search-deepseek 配置,不需要改 settings。

drop-in 方式下,如果目标路径已存在,脚本会先把它移到
dsh-web-search-deepseek.unpatched-,而不是直接删除。
DSH 升级或 pnpm/npm 重装恢复了官方包之后,重新运行安装脚本并重启
dsh web 即可。

卸载 / 回滚

任意系统都可以用跨平台卸载命令:

npx dsh-web-search-opencode-go --uninstall
或在克隆目录中:
node ./bin/dsh-web-search-opencode-go.mjs --uninstall
重启 dsh web

它会把补丁复制件移到 dsh-web-search-deepseek.uninstalled-,
并在存在 .unpatched-* 备份时恢复最近的备份;没有备份时 Node 会重新解析
到官方包。

手动等价操作:

- macOS / Linux:

rm -rf ~/.dsh/profiles/web/node_modules/@deepseek-ai/dsh-web-search-deepseek
重启 dsh web

- Windows PowerShell:

Remove-Item -Recurse -Force "$env:USERPROFILE\.dsh\profiles\web\node_modules\@deepseek-ai\dsh-web-search-deepseek"
重启 dsh web

兼容性

- DSH 0.1.x 系列(已在 0.1.1-rc.2 验证)。
- 与 @deepseek-ai/dsh-web-search-deepseek@0.1.1-rc.2 API 兼容。
- OpenCode Go / OpenCode Zen 的 Anthropic 兼容端点。
- Node.js 20+。
- macOS、Linux、Windows。安装脚本只做文件复制,不使用符号链接或管理员专属
API;CI 会在三种系统上运行安装测试。

常见问题

| 现象 | 原因 | 处理 |
|---|---|---|
| 安装后仍报 MissingSessionID | 没有重启 dsh web | 重启 dsh web。 |
| WEB_PROVIDER_CREDENTIAL_MISSING | DEEPSEEK_API_KEY 没有存密钥 | 在 DSH 设置 → Models 里存密钥,或设 apiKeyEnv: OPENCODE_GO_API_KEY。 |
| DeepSeek search request failed / HTTP 401/403 | 密钥与端点不匹配 | 用 OpenCode Go 密钥配 opencode.ai,或把 baseURL 改回 DeepSeek 官方端点并配 DeepSeek 密钥。 |
| 提供方不可用 | baseURL 无法解析 | 使用带 /v1 的完整基址,例如 https://opencode.ai/zen/go/v1。 |
| DSH 升级后搜索又坏了 | profile 恢复了官方包 | 重新运行安装脚本(./mount.sh、npx dsh-web-search-opencode-go)并重启。 |
| Windows 安装时报 EPERM / EBUSY | dsh web 正在运行,profile 文件被锁定 | 先停止 dsh web,重新运行安装脚本,再启动。 |

开发

npm test                 # 标头 + 跨平台安装脚本测试(无外部依赖)
npm run link-deps        # 可选:链接官方包,便于在克隆目录直接导入完整 provider
node ./bin/dsh-web-search-opencode-go.mjs --dry-run

测试只导入无依赖的 lib/headers.js。只有需要在克隆目录中导入完整
lib/index.js 时才需要 link-deps;安装后的副本会通过 profile 的
node_modules 父目录解析官方包。

仓库元信息(便于搜索)

建议的 GitHub 仓库名、描述与 topics:

- 仓库名: dsh-web-search-opencode-go
- 描述: Fix DSH web_search through OpenCode Go / Zen: auto-inject x-opencode-session. Drop-in patched fork of @deepseek-ai/dsh-web-search-deepseek.
- Topics: dsh, deepseek-harness, deepseek, opencode, opencode-go, opencode-zen, web-search, websearch, dsh-plugin, x-opencode-session, MissingSessionID, cross-platform, windows, macos, linux

可直接执行的 gh 与 npm 命令见 docs/publishing.md。

许可证与归属

MIT。提供方实现派生自 DeepSeek 的
@deepseek-ai/dsh-web-search-deepseek(同样为 MIT),
原始许可证保留在 LICENSE。

本仓库是非官方社区补丁,与 DeepSeek、OpenCode 无隶属关系。

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

同作者(leeyoung1)的其他插件

💬 加入社群

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

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