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
羽毛球分组比赛记分
小程序二维码

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

小夜