前言¶
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(超时则放弃该引擎)
使用示例¶
- 启用引擎:进入设置 → 搜索,勾选需要的引擎(如
bing、brave-web),调整顺序。 - 配置代理:在“默认代理”中填写全局代理,或在各引擎的高级设置中单独指定。
- 配置凭据:在高级设置中填写
google.apiKey/google.cx或brave.apiKey。 - 修改配置文件:直接编辑 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 的网络信息获取能力。配合无头浏览器和相关性守卫,能够有效应对单一搜索引擎的局限和噪音。安装后即可在设置页中快速调整,适合需要更广覆盖或特定搜索能力的开发者。