dsh-search-switch:在 DSH 通用设置里切换网页搜索 Provider

前言

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。

核心功能

  1. 动态枚举:装了 dsh-codex 会出现 openai-codex,装了别的 provider 插件也会自动出现,卸载后从列表消失。
  2. 持久化切换:通过 ctx.settings.update('web', { searchProvider: id }) 写入 profile 的 cordis.patch.yml;Loader 判定仅 volatile 变化时原地更新运行中引用,无需重启、无需重挂载。
  3. Host API:脚本可调用同源路由查询状态或切换(需与 Web 设置页相同的认证 cookie)。
  4. 降级行为:没有 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。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜