dsh-web-search-engine: A Multi-Engine Hybrid Search Plugin for DeepSeek Harness

前言

DeepSeek Harness (DSH) 默认的网络搜索能力有时无法满足复杂查询或特定需求。该插件向 ctx.web 注册了一个新的搜索 provider(id: web-search-multi),将默认的搜索行为替换为混合多个引擎的结果。

插件默认采用混合模式,并行询问所有启用的引擎,按名次轮转混合结果。它支持 Bing / DuckDuckGo / Mojeek / Google / Brave 等多种引擎,并提供可视化的设置页来配置代理、凭据和引擎顺序。

安装

在 DSH 的插件目录下执行以下命令:

plugin_manager action=install_bundle target=<本目录绝对路径>

或者直接通过 Git 克隆:

git clone https://github.com/Gaozx1/dsh-web-search-engine.git

安装完成后,插件会自动将 profile 中的 web 行配置指向新的 provider。刷新页面(F5)后,设置页中的搜索选项才会生效。

核心功能

混合与回退模式

插件支持两种结果组合模式:
1. 混合模式(默认 mode: merge):并行询问所有启用的引擎,按名次轮转混合,按 URL 去重。即使某个引擎挂了或被墙,也不会拖垮整体搜索。
2. 按顺序模式(mode: fallback):第一个出结果的引擎胜出。

无头浏览器取数

对于 Brave / DuckDuckGo / Google,插件使用 Node 内置的 WebSocket 驱动本机 Chrome 或 Edge 进行渲染取数,不需要安装 puppeteer 或 playwright。
* 冷启动:约 1s。
* 单次搜索:0.7~3.5s。
* 空闲回收:开启后,空闲一段时间会自动关闭浏览器实例。

相关性守卫

针对 Bing 中文查询的噪音问题,插件内置了相关性守卫。当查询中包含 ASCII 词(如 dsh、rust)但结果中完全不包含这些词时,该引擎会被判为失败,由其他引擎顶上。

引擎与取数方式

引擎 ID 取数方式 说明
bing 抓取结果页 / RSS 直连速度快(0.4s),结果正确;不走全局代理,不跟随 proxy 配置。
duckduckgo HTML 解析 / 浏览器 走代理可用;直连通常被墙。
mojeek 抓取结果页 独立索引,但部分出口 IP 可能被要求人机验证。
google 官方 API / 浏览器 官方 API 对新客户已关闭;浏览器取数需要开启“有头模式”且极易被限流。
brave 官方 API / 浏览器 需要配置 API Key;未实测。
brave-web 无头浏览器 无需 Key,实测稳定,但连续查询容易被限流。
ddg-web 无头浏览器 比 HTML 版更稳定。
google-web 无头浏览器 只有有头模式(headlessForGoogle: true)能过,且会被限流。

Bing 的代理配置

Bing 会根据直连或走代理,将请求重定向到 cn.bing.com(直连)或 www.bing.com(代理)。直连中文结果通常更快且更准确,因此插件默认不跟随全局 proxy 配置。若需强制走代理,需单独配置 bing.proxy。

Google 的现实约束

Google 对非浏览器客户端统一返回“需要 JavaScript”占位页,且官方 Programmable Search JSON API 已关闭。想要 Google 结果,只能使用 google-web 并开启有头模式,但这会很快触发限流。

无头浏览器配置

在设置页的“浏览器取数”区域可进行详细配置:

  • 总开关:browser.enabled
  • 可执行文件:browser.exe(留空自动探测 Chrome 或 Edge)
  • 无头模式:browser.headless
  • Google 专用有头模式:browser.headlessForGoogle
  • 浏览器代理:browser.proxy(留空使用全局 proxy)
  • 空闲回收时间:browser.idleMs(毫秒,0 表示不自动关闭)
  • 单引擎等待:browser.waitMs(超时则放弃该引擎)

使用示例

  1. 启用引擎:进入设置 → 搜索,勾选需要的引擎(如 bing、brave-web),调整顺序。
  2. 配置代理:在“默认代理”中填写全局代理,或在各引擎的高级设置中单独指定。
  3. 配置凭据:在高级设置中填写 google.apiKey / google.cx 或 brave.apiKey。
  4. 修改配置文件:直接编辑 profile 的 cordis.patch.yml,将 web 行的 searchProvider 改为 web-search-multi,或改回 deepseek-official。

注意事项

  • Mojeek:解析器在作者本机无法实测(403/Captcha),仅做了兜底处理。
  • Google/Brave API:未实测,依赖用户自行配置。
  • 限流:brave-web 和 google-web 连续查询时容易被限流,建议勾选多个引擎互为备份,并配置 browser.profileDir 复用 Cookie。
  • 相关性守卫:仅拦截“ASCII 词全未命中”的情况,纯中文查询的噪音属于已知局限。

总结

该插件通过混合多引擎搜索,显著提升了 DSH 的网络信息获取能力。配合无头浏览器和相关性守卫,能够有效应对单一搜索引擎的局限和噪音。安装后即可在设置页中快速调整,适合需要更广覆盖或特定搜索能力的开发者。

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

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

Xiaoye