前言¶
DeepSeek Harness(DSH)面向模型暴露的内置工具里,web_search 默认走随附的 DeepSeek 搜索通道(deepseek-official)。如果你已经在内网或本机部署了 SearXNG,希望检索结果来自自己的实例、且不改变模型侧的工具名与返回格式,就需要在 DSH 的 web 能力 seam 上再挂一个搜索提供方,并把 searchProvider 显式指过去。
mimoxh/dsh-searxng-search 是社区维护的 DSH 组合包插件(分类:联网工具),只做一件事:注册 id 为 searxng 的搜索提供方,通过 SearXNG 的 JSON API 响应 web_search 请求。web_fetch 仍由随附的 dsh-web-fetch-http 负责,不受影响。
这是什么¶
- 名称:
dsh-searxng-search(npm 包名,当前版本0.2.0) - 维护者:mimoxh
- 许可证:MIT
- 定位:SearXNG search provider for DSH —— 零依赖、无构建步骤,仅用 Node 全局
fetch/URL/AbortSignal
插件在 package.json 中声明 dsh.seams: ["web"],通过 cordis.patch.yml 完成两件事:挂载 searxng 提供方,并将 web 行的 searchProvider 设为 searxng(避免与 deepseek-official 同时「可用」时触发 WEB_PROVIDER_AMBIGUOUS)。
核心功能¶
下面介绍 README 中已核实的能力要点。
不改工具契约¶
模型侧仍是原来的 web_search 工具,参数、结果卡片、引用格式与 DSH 默认行为一致;实现上复用 ctx.web.registerSearchProvider。
零依赖与可审计¶
不 import 任何 npm 包,无构建步骤。dsh-vet 在 CI 中审计 seam 声明与实现是否一致;仓库带 17 项离线自测(npm test),无需网络、无需安装依赖。
多 surface 与 profile 隔离¶
代码只注册 seam,不绑定单一界面。装进哪个 profile,就只有对应 surface 生效:桌面 App 用 desktop profile(须在 App 内插件管理器安装);dsh web / dsh tui / dsh headless 各自对应 web、tui、headless profile。
兼容性(资料原文)¶
| 项 | 要求 |
|---|---|
| DSH | 0.2.0-rc.2(已验证);peerDependencies 为 ^0.2.0-rc.2 |
| Node | >= 20.3.0(使用 AbortSignal.any()) |
| 运行依赖 | 无 |
| 构建步骤 | 无 |
DSH 目前为 developer preview,seam API(ctx.web.registerSearchProvider)可能随版本变化;第三方项目与 DeepSeek 官方无从属关系。
SearXNG 侧准备¶
装插件前若 SearXNG 未就绪,常见表现是搜不出结果或 HTTP 403。先做下面几步,再做安装。
1、打开 JSON API¶
在 SearXNG 的 settings.yml 中为 search.formats 增加 json,改完后重启 SearXNG:
search:
formats:
- html
- json
未启用 JSON 时,对 format=json 的请求会返回 403(同一查询用 HTML 可能是 200)。
2、放行 DSH 主机的程序化请求¶
SearXNG 默认限速/机器人检测可能导致 429/403。自用最简做法是在 settings.yml 中关闭 limiter,或为 DSH 主机 IP 配置白名单(详见仓库 README「2.2 放行 DSH 主机的请求」)。
3、用 curl 确认可达¶
将占位地址换成你的实例:
curl -s -o /dev/null -w '%{http_code}\n' 'http://searxng.example:8888/search?q=test&format=json'
返回 200 表示 JSON 搜索就绪;403 则回到 JSON 格式配置。
安装与启用¶
安装前须把 baseURL 指向真实 SearXNG 实例(见下一节配置项)。仓库默认占位符未改时,提供方的 available() 为 false,web_search 会报 WEB_PROVIDER_CONFIGURED_UNAVAILABLE。
桌面端:插件管理器¶
- 打开 DSH Web 界面 → 侧栏 插件 → 添加插件。
- 粘贴本仓库绝对路径,或粘贴 Git 地址:
https://github.com/mimoxh/dsh-searxng-search
- 安装完成后等待 pnpm 结束。
- 完全退出并重启 DSH(关窗口不算,需确认进程退出);组合包 patch 在启动时生效。
本包尚未发布到 npm;发布后 README 给出的命令形如:
dsh plugin --profile <profile> add dsh-searxng-search
命令行:指定 profile(web / tui / headless 常用)¶
dsh plugin --profile web add github:mimoxh/dsh-searxng-search
本地目录示例(路径按你的环境替换):
dsh plugin --profile web add "D:/path/to/dsh-searxng-search"
bundles 末尾追加本包后,patch 会覆盖默认 searchProvider;通常只差实例地址。
用 overlay 覆盖 baseURL(不改 profile 文件)¶
前提:对应 profile 已安装本包。示例来自仓库 examples/dsh-searxng.overlay.yml:
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 "搜索今天的新闻"
overlay 在组合期读取 SEARXNG_BASE_URL;未设置时占位地址会使 provider 不可用,而不是静默回退到 DeepSeek 通道。
Web 类 surface 的额外注意¶
在 dsh web 与桌面端,除 provider 外还需确认当前 session 使用的 agent preset 挂载了 tool-web;否则 seam 里虽有 searxng,也没有工具调用它。dsh tui / dsh headless 走 host plane 上的 tool-web,语义与重启行为见 README「装到其他 surface 时的两个坑」。
配置项¶
配置位于组合包 cordis.patch.yml 中 web-search-searxng 行的 config:
| 字段 | 默认 | 说明 |
|---|---|---|
baseURL |
无(可用环境变量 SEARXNG_BASE_URL) |
SearXNG 地址,含协议/端口/路径前缀,不要结尾斜杠 |
apiPath |
/search |
JSON API 路径 |
language |
不发送 | 如 zh-CN、en-US、all |
categories |
不发送 | 如 general、general,news |
engines |
不发送 | 如 google,bing |
timeRange |
不发送 | day / week / month / year |
safeSearch |
不发送 | 0 / 1 / 2 |
timeoutMs |
15000 |
单次搜索超时 |
maxResults |
10 |
提供方上限;seam 还会按 web_search 请求再截断 |
典型用法¶
经过上面的安装与 baseURL 配置并重启 DSH 后,在对话中像平时一样让模型使用 web_search 即可,无需新工具名。检索请求会发往你在 baseURL(或 SEARXNG_BASE_URL)配置的 SearXNG 实例;页面抓取仍走内置 web_fetch。
headless 一次性任务示例(与 README 一致):
export SEARXNG_BASE_URL=http://192.168.1.20:8086
dsh headless --patch ./examples/dsh-searxng.overlay.yml "搜索今天的新闻"
适用场景与注意¶
适合谁:已部署或可访问 SearXNG、希望 DSH 联网检索走自建/内网聚合搜索、且要保持 web_search 契约不变的 DSH 开发者。
安装前建议:插件以当前 DSH 进程的权限运行,会向配置的 SearXNG 发起 HTTP 请求;安装前应阅读 源码与 LICENSE,确认实例地址与 SearXNG 安全策略符合你的环境。
验证:仓库提供 npm test 离线自测;集成问题可对照 README「排错」「已知的 DSH 侧问题」。备选路径(MCP)见 README 第 8 节。
链接¶
社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系;本文事实以仓库 README 与 package.json 为准。