前言¶
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