前言¶
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 的網絡信息獲取能力。配合無頭瀏覽器和相關性守衛,能夠有效應對單一搜索引擎的侷限和噪音。安裝後即可在設置頁中快速調整,適合需要更廣覆蓋或特定搜索能力的開發者。