dsh-web-search-searxng

前言

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 透傳,並在插件中啓用轉發頭:

  1. 在 SearXNG 的 limiter.toml 中添加:
    trusted_proxies = ['127.0.0.0/8']
    pass_ip = ['127.0.0.1', '172.18.0.0/16']
  1. 確保插件配置中啓用了 X-Forwarded-For 頭部轉發(代碼默認行爲)。

請求日誌

插件會在發起搜索請求前,向當前 Agent 會話追加一個僅日誌用途的事件 web/searxng-search-request,包含解析後的端點和查詢詞。直接通過代碼調用插件且無啓動 Agent 會話時,不會記錄日誌。

生態背景

DeepSeek Harness 採用「一切皆插件」的理念。此插件由社區開發者 acdcgz 維護,遵循 MIT 許可證。其目錄入口位於 SkillHub,源碼託管於 GitHub。

羽毛球分组比赛记分
小程序二维码

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

小夜