前言¶
DeepSeek Harness (DSH) 的 ctx.web 裂縫爲智能體提供了聯網能力。當需要實現 Web 搜索時,現有的通用方案通常涉及模型調用,成本較高或依賴第三方服務。dsh-web-search-searxng 是一個基於 SearXNG 的 WebSearchProvider 實現,它將搜索請求轉換爲直接的 HTTP GET 調用,對接本地 SearXNG 實例的 JSON API,從而在保持隱私的同時實現零模型調用成本。
功能概覽¶
這是一個實現型插件,通過 inject: ['web'] 將提供者註冊到 ctx.web。
- 自託管與隱私:查詢發送至本地 SearXNG 實例,不經過第三方搜索供應商。
- 零模型成本:單次搜索僅爲一次 HTTP 請求,不消耗大模型 Token。
- 多引擎聚合:利用 SearXNG 後端聚合 Bing、Brave、Baidu、Google、DuckDuckGo 等多個搜索引擎的結果。
- 靈活的鑑權:支持通過
ctx.credentials或環境變量解析 API Key。 - 會話日誌:僅在 Agent 會話發起的請求中記錄請求日誌(非 Agent 調用無日誌)。
安裝與啓用¶
安裝此插件需要 DeepSeek Harness 已掛載 web 裂縫(標準 Profile 均自帶)。
dsh plugin --profile web add /path/to/dsh-web-search-searxng
安裝後,DSH 會自動應用 cordis.patch.yml 註冊提供者並切換搜索源。若需手動配置,可編輯 cordis.patch.yml。
配置¶
插件優先讀取環境變量,環境變量未設置時使用默認值或配置文件值。
環境變量¶
在啓動 DSH 進程前設置以下環境變量:
export SEARXNG_BASE_URL=http://localhost:8080 # 默認值
export SEARXNG_MAX_RESULTS=10 # 默認值
export SEARXNG_LANGUAGE=en # 默認值 'all' (不傳參)
配置文件¶
在 cordis.patch.yml 或 Settings 中配置:
- id: web-search-searxng
name: '@deepseek-ai/dsh-web-search-searxng'
config:
baseURL: http://localhost:8080
maxResults: 10
language: en
# apiKeyEnv: SEARXNG_API_KEY # 優先讀取環境變量
安全說明:apiKey 字段攜帶 role('secret'),不會出現在 describe 響應中。
Docker Desktop 注意事項¶
如果 SearXNG 運行在 Docker Desktop 中,來自宿主機的請求會被 Docker 網關(如 172.18.0.1)接管。SearXNG 的速率限制器會將此視爲外部 IP 並觸發 API_MAX = 4/hour 限制。
爲避免此問題,需在 SearXNG 的 limiter.toml 中配置代理信任和 IP 透傳,並在插件中啓用轉發頭:
- 在 SearXNG 的
limiter.toml中添加:
trusted_proxies = ['127.0.0.0/8']
pass_ip = ['127.0.0.1', '172.18.0.0/16']
- 確保插件配置中啓用了
X-Forwarded-For頭部轉發(代碼默認行爲)。
請求日誌¶
插件會在發起搜索請求前,向當前 Agent 會話追加一個僅日誌用途的事件 web/searxng-search-request,包含解析後的端點和查詢詞。直接通過代碼調用插件且無啓動 Agent 會話時,不會記錄日誌。
生態背景¶
DeepSeek Harness 採用「一切皆插件」的理念。此插件由社區開發者 acdcgz 維護,遵循 MIT 許可證。其目錄入口位於 SkillHub,源碼託管於 GitHub。