mimoxh/dsh-searxng-search ↗★ 0
dsh-searxng-search
将内置网页搜索路由替换为自定义SearXNG实例 适合需要使用私有或特定SearXNG搜索引擎进行联网检索的用户。
同名包的其他仓库
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:mimoxh/dsh-searxng-search说明文档
阅读完整 README ↗方式 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 | /search | JSON 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 |
timeoutMs | 15000 | 单次搜索超时(工具层还有 60s 预算) |
maxResults | 10 | 本提供方自己的上限;seam 还会再按 web_search 请求的上限截断 |
userAgent | dsh-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。