dsh-web-search-order:DSH 搜索提供方有序降级方案

前言

DSH 的 web_search 工具依赖外部搜索提供方(如 exa、deepseek-official)。这些提供方可能因网络波动、API 限流、凭据错误或超时而失败。DSH 的 seam 没有提供方级别的超时控制,也没有内置的自动切换机制。本插件为 ctx.web 已注册的提供方增加了一层有序降级逻辑:它不实现搜索后端,也不处理凭据,而是将提供方串成一条链。当提供方不可用、报错、超时或返回空结果时,它会自动切换到下一个提供方,直到找到可用结果或全部失败。

核心功能

  • 实现网络搜索提供方的有序降级:按配置顺序依次尝试多个搜索提供方。
  • 在已注册提供方之上工作:读取并处理 ctx.web 中已注册的提供方(如 exa、deepseek-official)。
  • 支持配置项:通过 order(优先级)、exclude(排除列表)、timeoutSeconds(超时预算)、fallbackOnEmpty(空结果处理)进行控制。
  • 自动切换机制:当提供方不可用、超时或返回空结果时自动换下一个。
  • 错误处理:处理 WEB_PROVIDER_ERROR 和 WEB_PROVIDER_UNAVAILABLE 等错误。

安装与启用

使用官方命令安装插件。包内自带 cordis.patch.yml,dsh plugin 会把它追加进该 profile 的 dsh.profile.bundles,启动时把 web.searchProvider 指到本插件。

安装命令:

dsh plugin --profile web add github:killcerr/dsh-web-search-order

本地开发:
如果需要修改源码,使用路径安装。修改后重启 DSH 即可,无需重装:

dsh plugin --profile web add C:\path\to\dsh-web-search-order

配置与行为

插件支持以下配置项:

  • order: 提供方 ID 列表,越靠前优先级越高。未点名的提供方按注册顺序接在后面。没装(认不出)的 ID 会被忽略,只提示一次。
  • exclude: 永不尝试的提供方 ID 列表,优先级高于 order。
  • timeoutSeconds: 单次尝试的超时预算(秒)。本插件自行实现此超时,DSH seam 没有提供方级别的超时。
  • fallbackOnEmpty: 当既没有 sources 也没有回答文本时,是否当作未命中并换下一个。设为 false 则原样返回空结果。

版本差异:
* 0.1.5 线:支持在 ~/.dsh/settings.yaml 的 web-search-order 小节配置,热生效。
* 0.1.6+ 线:在插件行的 config 中配置,设置页编辑会写回 profile patch。

兼容性与环境

  • Node.js 版本:需要 Node.js >= 22.19.0。
  • DSH 版本:声明兼容性为 >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0。
    • 注意:0.1.7 线使用 config 行配置,不再支持 settings.yaml。
  • 0.2.0+:不再声明兼容性。

生态背景

DSH 理念是「一切皆插件」。本插件属于社区目录中的联网工具类别,由 killcerr 维护,遵循 MIT 许可证。

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

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

小夜