前言¶
DSH 的 ctx.web 提供 web capability seam。給智能體接搜索時,provider 的實現方式會直接影響搜索成本與運行邊界。不同於發出完整 Messages request 的方式,dsh-web-search-searxng 把搜索指向自託管 SearXNG 實例的 /search?format=json 接口:搜索不需要 API key,每次搜索不消耗模型 turn。
DSH 的插件生態強調「一切皆插件」。這裏介紹的是一個社區維護的插件,不是官方應用商店入口。
這是什麼¶
dsh-web-search-searxng 是 chinng-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檢索,而不是發出完整的Messagesrequest。 - 搜索不需要 API key,每次搜索不消耗模型 turn。
- 將 SearXNG results 和 answers 映射爲 seam 的 sources 和 content,並按 URL 去重。
- 支持可選配置:
baseURL、categories、engines、language、timeRange、safesearch、timeoutMs、maxSnippetChars、headers。 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-web 的 searchTimeoutMs 控制。把 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