前言¶
DeepSeek Harness(DSH)里,Agent 的网页搜索走 web_search 后端;装不同 provider 插件后,注册表里会出现 DeepSeek 官方 id、Codex 的 openai-codex 等条目。内置「插件 → 内置插件配置 → 网页搜索」页只认识两个 DeepSeek id,在那边切换会把 Codex 搜索覆盖回 deepseek-official。若你同时装了 dsh-codex 或其它 search provider,需要在「当前 Harness 真正注册着的后端」之间切换,且希望改完立刻生效、不必重启。下面介绍社区插件 dsh-search-switch(维护者 KeqingMoe,GitHub:KeqingMoe/dsh-search-switch)的做法。
这是什么¶
dsh-search-switch 给 DSH 设置 → 通用 增加一行「网页搜索提供方」下拉,列表每次打开都从 Host 读取 ctx.web 里已注册的 provider,不是写死选项。选择写入当前 profile 的 patch,下一次搜索立即生效;不修改密钥、接口地址等其它设置。npm 包名 dsh-search-switch,当前发布版本 0.1.0,许可证 MIT,要求 Node >= 20。
核心功能¶
- 动态枚举:装了 dsh-codex 会出现
openai-codex,装了别的 provider 插件也会自动出现,卸载后从列表消失。 - 持久化切换:通过
ctx.settings.update('web', { searchProvider: id })写入 profile 的cordis.patch.yml;Loader 判定仅 volatile 变化时原地更新运行中引用,无需重启、无需重挂载。 - Host API:脚本可调用同源路由查询状态或切换(需与 Web 设置页相同的认证 cookie)。
- 降级行为:没有 settings 服务的自拼部署下,选择只对当前进程生效(直接写
ctx.web.config.searchProvider),界面会说明这一点。
Host 注册两条路由(见仓库 src/index.ts):
| 路由 | 作用 |
|---|---|
GET /plugins/dsh-search-switch/state |
已注册 provider(含各自 available())+ 当前选择 + DSH_WEB_SEARCH_PROVIDER 回退值 |
POST /plugins/dsh-search-switch/select |
校验 id 在注册表内后落盘;未知 id 返回 409,不写盘 |
未注册 id 的响应形如 409 {"ok":false,"error":{"code":"unknown-provider",…}}。
界面使用宿主 @deepseek-ai/dsh-client-ui-primitives 的 Menu,与「插话发送」等下拉在交互上一致;该依赖属于平台接口,大版本升级后可能需要跟着改客户端代码并重新构建。
已知限制(README 原文):插件通过 WebRuntime 的私有字段读取注册表与当前值,上游若改语义需同步维护;路由与 Harness 设置页共用 Web 认证,未额外做 CSRF(cookie 为 SameSite=Strict);只切换 search provider,未做 fetchProvider 界面。
安装与启用¶
指定 profile 安装:
dsh plugin --profile <profile> add dsh-search-switch
或在 设置 → 插件 → 添加 中填写包名 dsh-search-switch。装好后打开 设置 → 通用,在「外观」「快捷键」附近可见「网页搜索提供方」。
本地开发可直接指向目录:
dsh plugin --profile <profile> add /path/to/dsh-search-switch
插件以当前 DSH 进程权限运行;安装前建议在 GitHub 查看源码与 MIT 许可证,确认路由与私有字段读取是否符合你的安全预期。
典型用法¶
图形界面:在 设置 → 通用 的下拉里选目标 provider,保存后下一次 web_search 即走该后端。
命令行 / 自动化(示例端口与 cookie 来自 README,按你的部署调整):
# 查看注册表与当前选择
curl -b cookies.txt http://127.0.0.1:3080/plugins/dsh-search-switch/state
# 切换到 openai-codex(须已在注册表中)
curl -b cookies.txt -X POST -H 'content-type: application/json' \
-d '{"searchProvider":"openai-codex"}' \
http://127.0.0.1:3080/plugins/dsh-search-switch/select
适用场景与注意¶
- 适合:同时安装多个 web search provider(例如 dsh-codex),需要在 DeepSeek 官方与 Codex 等后端之间快速切换,且不想被内置「网页搜索」两选项页误覆盖配置的用户。
- 分类:社区目录 skillhub.cn 将其归为「模型推理」;目录站为社区生态站点,与 DeepSeek / 幻方无官方从属关系。
- 注意:依赖 DSH 内部
WebRuntime形状;字段不可用时时路由返回web-unavailable,设置页显示错误而非整页崩溃。控件绑定平台 UI 模块,升级 DSH 后建议对插件执行pnpm run typecheck/ 重新安装构建产物。
结尾¶
dsh-search-switch 把 web_search 注册表 完整暴露到 设置 → 通用,切换写进 profile patch 且即时生效,补上了内置网页搜索设置页对 openai-codex 等 provider 覆盖不全的问题。进一步了解可访问目录页 KeqingMoe/dsh-search-switch 与仓库 github.com/KeqingMoe/dsh-search-switch。