DeepSeek Harness 聚合搜索插件 dsh-websearch

前言

DeepSeek Harness (DSH) 在使用原生 web-search 工具時,若存在多個 provider,會觸發 WEB_PROVIDER_AMBIGUOUS 錯誤。240xu/dsh-websearch 作爲一個原生插件,向 ctx.web 註冊了唯一的 provider unified。它聚合了 11 個後端,併發執行搜索請求,合併結果並進行 URL 去重。即使部分後端宕機,只要有一個可用,搜索即可繼續。

安裝與啓用

  1. 進入插件的 profile 目錄:
   cd ~/.dsh/profiles/web
  1. 在 package.json 的 dependencies 中加入:
   "@240xu/dsh-websearch": "file:/path/to/@240xu/dsh-websearch"
  1. 安裝依賴:
   pnpm install
  1. 修改 ~/.dsh/profiles/web/cordis.patch.yml,將 dsh-web 的 searchProvider 指向 unified:
   - id: web
     name: '@deepseek-ai/dsh-web'
     config:
       searchProvider: unified

重啓 dsh web 即可生效。

核心功能

  • 唯一 Provider 註冊:註冊 id 爲 unified 的 provider,確保 dsh-web 選擇規則不會觸發 WEB_PROVIDER_AMBIGUOUS。
  • 併發 Fan-out 與合併:向所有啓用的後端發起併發請求,使用 Promise.allSettled 機制,單個後端失敗不會阻塞整體搜索。
  • URL 去重:在結果合併階段進行 URL 去重,可選開啓 URL+Title 聚合。
  • 零配置後端:Exa、Parallel、DuckDuckGo、SearXNG 四個後端無需 API Key 即可使用。
  • API Key 後端自動激活:在 DSH 設置面板或環境變量中配置 DeepSeek、Anthropic、OpenAI、Brave、Tavily、Serper、Mojeek 的 Key 後,對應後端自動激活。

後端列表

插件內置 11 個後端,分爲無需 Key 和需 Key 兩種:

  • 無需 Key:
    • exa:流式 HTTP MCP,無 key。
    • parallel:流式 HTTP MCP,無 key。
    • ddg:HTML 抓取,零依賴。
    • searxng:REST JSON 搜索,默認實例 https://searx.be。
  • 需 Key:
    • deepseek:使用 DeepSeek API。
    • anthropic:使用 Anthropic API。
    • openai:使用 OpenAI API。
    • brave:使用 Brave API。
    • tavily:使用 Tavily API。
    • serper:使用 Serper API。
    • mojeek:使用 Mojeek API。

配置與使用

  • 全局設置:在 Settings → Unified Search 中可配置併發數(默認 6)、單後端超時(默認 30s)、結果數(默認 8)等。
  • 去重策略:支持 url(僅去重鏈接)和 url+title(額外合併同標題轉載)兩種策略。
  • 結果健康度:每次搜索結果尾部會附上 [websearch backends] ... 日誌,包含各後端的響應時間與狀態,用於診斷。
  • 環境變量:API Key 可通過環境變量讀取,格式如 DEEPSEEK_API_KEY,也可通過 DSH 憑證服務配置。

注意事項

  • 密鑰缺失軟失敗:如果後端所需的 Key 缺失,該後端會以明確錯誤碼軟失敗,不會阻塞其他後端。
  • 本地可用性檢查:available() 方法僅做本地配置檢查(如 Key 是否存在),不聯網探測後端可達性。
  • SearXNG 實例:默認使用 https://searx.be,公共實例可用性隨網絡波動,可在設置中切換或自託管。
  • 日誌路由:每個後端通過 lib/util/log.js 將請求和結果路由到主機的日誌器,便於調試。
羽毛球分组比赛记分
小程序二维码

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

小夜