在 DeepSeek Harness(DSH)中開發智能體時,聯網能力往往受限於單一搜索提供商的穩定性或配額。web_search 工具若遇到上游服務不可用或密鑰失效,通常會導致調用失敗。本文介紹 chendefine/dsh-web-search-aggregation,它將 AnySearch、TinyFish、Tavily 等多個搜索提供商整合爲單一入口,通過優先隊列和有序回退機制提升可用性。
核心功能¶
- 優先隊列與有序回退:插件將多個搜索提供商按順序排入隊列。發起搜索時,請求從隊列頂部向下嘗試,第一個成功返回結果的提供商勝出;若失敗,則自動回退至下一個提供商。
- 多密鑰池輪換:每個提供商支持配置多個 API 密鑰(用逗號分隔)。插件會自動輪換使用這些密鑰,以分散負載和配額壓力。
- 預算感知與透明失敗:每個搜索嘗試都有獨立的超時截止時間(默認 10 秒),避免上游服務掛起佔用全局預算。當所有嘗試均失敗時,錯誤信息會報告每個提供商的失敗詳情,便於排查。
- 密鑰衛生與實時配置:插件不會在日誌中記錄密鑰的具體內容,僅引用引用標籤。所有隊列順序、密鑰、端點和超時設置均可通過設置卡片實時編輯,無需重啓服務。
安裝與啓用¶
環境要求:Node.js ≥ 22.19。
通過 npm 安裝:
dsh plugin --profile web add dsh-web-search-aggregation
通過 GitHub 安裝:
dsh plugin --profile web add github:chendefine/dsh-web-search-aggregation
或者通過 DSH 界面安裝:設置 → DSH插件市場。
注意:安裝後必須重啓 dsh web 進程才能加載插件。
配置說明¶
配置入口:設置 → 插件 → 插件配置 → 聚合網頁搜索。
在配置卡片中,可以調整以下內容:
- Providers(優先隊列):包含 AnySearch、TinyFish、Tavily、Brave、Exa、Firecrawl、Jina、SerpApi、Serper 等條目。每個條目可啓用/禁用,或覆蓋默認端點。順序決定了請求的嘗試順序。
- Attempt Timeout Ms(超時設置):單次嘗試的截止時間(毫秒),範圍 1-60000,默認爲 10000。
注意事項¶
- AnySearch 支持匿名訪問,無需配置密鑰即可嘗試。
- Tavily、TinyFish、Brave、Exa、Firecrawl、Jina、SerpApi、Serper 等提供商需要配置對應的 API 密鑰。
- 卸載命令:
dsh plugin --profile web remove dsh-web-search-aggregation
該插件通過聚合多個上游服務,解決了單一提供商不可用時的中斷問題,適合需要高可用聯網能力的 DSH 智能體場景。