mimoxh/dsh-searxng-search ↗★ 0

dsh-searxng-search

SearXNG search provider for the DSH web capability seam (ctx.web): run DSH's built-in web_search against a SearXNG instance instead of the shipped DeepSeek search route. 适合需要使用私有或特定SearXNG搜索引擎进行联网检索的用户。

Package
dsh-searxng-search
Compatibility
Unverified
Harness peer range
^0.2.0-rc.2
Version
0.2.0
License
MIT
Last updated
Oct 11, 2026

Other repositories with this package name

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:mimoxh/dsh-searxng-search

方式 F:用 --patch overlay 覆盖配置(不改 profile 文件)

dsh 支持在 profile 层之后再叠一层 patch,而且可重复:

export SEARXNG_BASE_URL=http://192.168.1.20:8086
dsh web      --patch ./examples/dsh-searxng.overlay.yml
dsh tui      --patch ./examples/dsh-searxng.overlay.yml
dsh headless --patch ./examples/dsh-searxng.overlay.yml "搜索今天的新闻"

examples/dsh-searxng.overlay.yml 只重述两行 已经存在的 row 的 config(web 与 web-search-searxng),不插入新 row——row 由 组合包 patch 插入,所以前提是该 profile 里已装本包(方式 E 的安装那一步)。

它的 baseURL 写成 !!js process.env.SEARXNG_BASE_URL ?? '',在组合期取环境 变量,同一个文件就能在不同机器/不同实例间复用,不必改任何文件;变量没设时占位地址会让 provider 报 WEB_PROVIDER_CONFIGURED_UNAVAILABLE,而不是静默换一条搜索通道。

4. 配置项

配置在 cordis.patch.yml 中 web-search-searxng 行的 config 里:

字段默认说明
baseURL无(可用环境变量 SEARXNG_BASE_URL 兜底)SearXNG 地址,含协议/端口/路径前缀,不要结尾斜杠
apiPath/searchJSON API 路径,仅当实例挂在别的路径下才改
language不发送SearXNG language,如 zh-CN、en-US、all
categories不发送如 general、general,news
engines不发送限定引擎,如 google,bing
timeRange不发送day / week / month / year
safeSearch不发送0 / 1 / 2
timeoutMs15000单次搜索超时(工具层还有 60s 预算)
maxResults10本提供方自己的上限;seam 还会再按 web_search 请求的上限截断
userAgentdsh-searxng-search/请求 UA(SearXNG 会拒绝空 UA);默认值跟随 package.json 的 version
headers{}额外请求头,例如反向代理前的 Authorization: Bearer

改动 baseURL 等配置后需要让组合包重新加载:桌面端完全重启 DSH,dsh web / dsh tui / dsh headless 下次启动即生效。同样的字段也可以写在 --patch overlay 里(见 3. 安装 的方式 F),此时 baseURL 可用 SEARXNG_BASE_URL 兜底。

为什么没有配置 schema

本插件故意不声明配置 schema。声明 schema 能换来 DSH 在加载时校验配置、以及在设置 界面里渲染配置控件;但代价是必须 import @deepseek-ai/schemastery,而本项目刻意保持 零 import:

  • 零依赖让自测可以离线跑、不需要 npm install,CI 里连安装步骤都不用;
  • 它不依赖 DSH 内部如何解析随安装包一起分发的模块;
  • DSH 升级 schemastery 时,schema 可能被判为 Config is not a native Schemastery schema,从而直接拒绝该行——多一个失败面。

因此字段写错不会在加载时报错,而是在第一次搜索时报出带端点和处理建议的错误。如果你 更想要加载时校验,可以自行加 schema。

结果映射

SearXNG 的 results[].url/title/content/publishedDate → seam 的 url/title/snippet/publishedAt(按 URL 去重),answers[] → 给模型的直接答案 (content)。


为什么没有配置 schema

本插件故意不声明配置 schema。声明 schema 能换来 DSH 在加载时校验配置、以及在设置 界面里渲染配置控件;但代价是必须 import @deepseek-ai/schemastery,而本项目刻意保持 零 import:

  • 零依赖让自测可以离线跑、不需要 npm install,CI 里连安装步骤都不用;
  • 它不依赖 DSH 内部如何解析随安装包一起分发的模块;
  • DSH 升级 schemastery 时,schema 可能被判为 Config is not a native Schemastery schema,从而直接拒绝该行——多一个失败面。

因此字段写错不会在加载时报错,而是在第一次搜索时报出带端点和处理建议的错误。如果你 更想要加载时校验,可以自行加 schema。