dsh-web-search-searxng:DSH web 搜索的自託管 SearXNG provider

前言

DSH 的 ctx.web 提供 web capability seam。給智能體接搜索時,provider 的實現方式會直接影響搜索成本與運行邊界。不同於發出完整 Messages request 的方式,dsh-web-search-searxng 把搜索指向自託管 SearXNG 實例的 /search?format=json 接口:搜索不需要 API key,每次搜索不消耗模型 turn。

DSH 的插件生態強調「一切皆插件」。這裏介紹的是一個社區維護的插件,不是官方應用商店入口。

這是什麼

dsh-web-search-searxngchinng-inta 維護的 DSH 插件,許可證爲 MIT。它基於 SearXNG,爲 DeepSeek Harness 的 ctx.web 註冊一個 WebSearchProvider

這個插件不註冊 model-facing tool。web_search、schema、prompt guidance 和 result card 由 @deepseek-ai/dsh-tool-web 提供。安裝 dsh-web-search-searxng 後,是讓既有 web_search 工具使用你自己的 SearXNG 實例。

核心功能

  • ctx.web 註冊一個基於 SearXNG 的 WebSearchProvider
  • 通過 SearXNG 實例的 /search?format=json 檢索,而不是發出完整的 Messages request。
  • 搜索不需要 API key,每次搜索不消耗模型 turn。
  • 將 SearXNG results 和 answers 映射爲 seam 的 sources 和 content,並按 URL 去重。
  • 支持可選配置:baseURLcategoriesengineslanguagetimeRangesafesearchtimeoutMsmaxSnippetCharsheaders
  • baseURL 未設置時回退到 $SEARXNG_URL
  • 配置按每次搜索投影,修改 settings document 後下一次搜索生效。

安裝與啓用

從 npm 安裝

dsh plugin --profile web add dsh-web-search-searxng

從倉庫安裝

dsh plugin --profile web add github:chinng-inta/dsh-web-search-searxng

從 git 倉庫安裝時,pnpm 會阻止 install scripts。首次安裝會失敗,並打印需要允許的 allowBuilds key。該 key 固定 commit SHA,安裝新的 revision 後需要更新。示例如下:

allowBuilds:
  "dsh-web-search-searxng@https://codeload.github.com/chinng-inta/dsh-web-search-searxng/tar.gz/<commit-sha>": true

指向 SearXNG 實例

export SEARXNG_URL=http://searxng.internal:8888

驗證組合

在啓動前可以先檢查配置組合:

dsh --profile web --dump-config | grep -A3 'id: web'

啓用 SearXNG JSON 接口

SearXNG 默認未啓用 JSON API。需要在實例 settings.yml 中讓 search.formats 包含 json

search:
  formats:
    - html
    - json

典型用法

插件擁有 web-search-searxng 配置命名空間。下面是一個用戶層 settings document 示例:

web-search-searxng:
  language: ja
  maxSnippetChars: 300

所有配置鍵都可選。baseURL 未設置時回退到 $SEARXNG_URL。配置按每次搜索投影,修改 settings document 後下一次搜索生效。

timeoutMs 是 provider 搜索資源上限,不是面向模型的 tool-call budget。模型側預算由 @deepseek-ai/dsh-tool-call-timeout-policy 通過 tool-websearchTimeoutMs 控制。把 timeoutMs 控制在低於 tool 預算,可以讓慢實例表現爲 provider 側失敗,而不是 tool timeout。

maxResults 不會下推到 SearXNG。SearXNG 返回完整第一頁後,由 seam 截斷。

映射與運行行爲

插件將 SearXNG results 和 answers 映射爲 seam 的 sources 和 content,並按 URL 去重。

provider 拒絕重定向,配置爲:

redirect: 'error'

available() 只做可解析 http(s) base URL 的本地同步檢查,不訪問網絡。

Provider 選擇

插件通過 bundle patch 設置:

web.searchProvider: searxng

如果存在多個可用 provider 且未指定,搜索會失敗爲:

WEB_PROVIDER_AMBIGUOUS

適用場景與注意

適合已有或準備運行自託管 SearXNG 的團隊。公開 SearXNG 實例可能拒絕程序化訪問,例如 bot filter 返回 HTTP 403,也可能嚴格限流。README 建議運行自有實例。

插件以當前 dsh 進程權限運行。安裝前應檢查源碼與許可證。本插件許可證爲 MIT。

結尾

dsh-web-search-searxng 的價值在於把 DSH 的 web 搜索接到自託管 SearXNG:搜索不需要 API key,每次搜索不消耗模型 turn,同時保留 @deepseek-ai/dsh-tool-web 提供的工具面。適合需要可自控、可審計搜索後端的智能體部署。

可確認的倉庫地址:

https://github.com/chinng-inta/dsh-web-search-searxng
羽毛球分组比赛记分
小程序二维码

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

小夜