前言¶
DeepSeek Harness (DSH) 的原生 web_search 工具通常綁定到特定的搜索後端。當需要更換提供商,或者希望爲一次調用配置多個提供商並實現順序回退時,直接修改配置可能較爲繁瑣。dsh-search-router 插件解決了這個問題,它向 ctx.web 註冊了一個原生的 WebSearchProvider,將每次 web_search 調用轉發到用戶選擇的搜索後端,並支持順序回退機制。
插件介紹¶
這是一個極小的 DeepSeek Harness (DSH) 插件。它向 ctx.web 註冊了一個原生的 WebSearchProvider,將每次 web_search 調用轉發到用戶選擇的搜索後端,並支持順序回退(當一個失敗時嘗試下一個)。模型看到的仍然是同一個 web_search 工具,不會引入新的工具、MCP、重排序或緩存。
維護者: XGrin
許可證: MIT
Stars: 1
分類: 模型推理
核心功能¶
- 多後端支持:支持 Exa, Tavily, Brave, Perplexity, DeepSeek, SearXNG, DuckDuckGo 等搜索後端。
- 順序回退:支持配置順序回退機制,當主提供商失敗時,自動嘗試下一個。
- 零依賴工具:不引入新的工具、MCP、重排序或緩存。
- 可視化配置:提供 GUI 支持拖拽排序與配置。
安裝與啓用¶
通過官方 CLI 安裝插件:
dsh plugin --profile web add github:XGrin/dsh-search-router
安裝完成後,啓動 Web 界面:
dsh web
若需卸載,可執行:
dsh plugin --profile web remove dsh-search-router
配置方式¶
插件提供兩種配置方式,兩者作用於同一組配置項。GUI 中的設置會覆蓋環境變量,而 GUI 中的重置操作將繼承 Composition 配置的值。
1. 在 GUI 中配置¶
進入 設置 -> 插件 -> 插件配置,找到“Search router”卡片。
- 每一行代表一個活躍的提供商,按回退優先級編號。
- 支持拖拽行來重新排序(也支持鍵盤操作)。
- 每個提供商提供內聯編輯器,可添加或修改配置。
- API 密鑰在此輸入後會持久化存儲並覆蓋環境變量。
- 每一項修改都會實時應用,無需重啓。
2. 在 Composition 中配置¶
編輯 profiles/web/cordis.patch.yml 文件。插件會自動檢測每個擁有密鑰或端點的提供商,默認順序爲:exa → tavily → brave → perplexity → deepseek → searxng → duckduckgo。
示例 1:Tavily 爲主,回退到自建 SearXNG
- id: search-router
config:
order: [tavily, searxng]
providers:
tavily: { apiKeyEnv: TAVILY_API_KEY }
searxng: { baseUrl: https://search.example.com }
示例 2:僅使用 SearXNG,無需任何商業密鑰
- id: search-router
config:
provider: searxng
providers:
searxng: { baseUrl: http://127.0.0.1:8888 }
注意事項¶
- SearXNG 格式要求:如果使用自託管的 SearXNG,必須在 SearXNG 的
settings.yml中啓用json輸出格式(search.formats)。 - DuckDuckGo 無需密鑰:使用 DuckDuckGo 時無需任何 API 密鑰,開箱即用。
- 密鑰優先級:GUI 中設置的 API Key 會覆蓋環境變量。若在 GUI 中清除密鑰,將回退讀取環境變量。
- 優先級繼承:在 GUI 中點擊重置,將恢復爲 Composition 配置中定義的值。
總結¶
dsh-search-router 爲 DSH 提供了一種靈活切換和組合搜索後端的能力。通過順序回退機制,它提高了搜索調用的可用性。插件設計剋制,不引入額外工具,適合需要精細控制搜索鏈路的開發者。
- GitHub 倉庫:https://github.com/XGrin/dsh-search-router
- 插件目錄:https://www.skillhub.cn/plugins/XGrin/dsh-search-router