DeepSeek Harness Hub
← 返回列表

SearXNG 搜索源softspark/dsh-web-search-searxng

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
⚠ 装前注意

接入 SearXNG 实例,免密钥为智能体提供网页搜索

基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/9/15 · 已提供中文文档

为 DeepSeek Harness 提供由 SearXNG 实例支持的网页搜索提供商:元搜索,无需供应商 API 密钥,也无需将查询关联在一起的账户。

综合分
30.7
GitHub 分
30.7
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add softspark/dsh-web-search-searxng
未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包@softspark/dsh-web-search-searxng(未发布到 npm,仅可源码安装)
Node 引擎要求 >=22.19.0 · 基线 Node 22.19 满足
dsh CLI 依赖未声明 dsh 版本约束
入口文件main/exports/bin 已声明

未发布到 npm registry,仅可从源码安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/19 10:26:06

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-web
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-web-search-searxng

一个为 DeepSeek Harness 提供的网页搜索提供程序,由 SearXNG 实例支持。无需 API 密钥,无需供应商账户,此插件也无需存储任何内容。

npm
CI
License
DSH community plugin

该 harness 自带一个搜索提供程序,并且它受 DEEPSEEK_API_KEY 限制。此插件在同一接缝上注册第二个提供程序,并将选择切换到它。

dsh plugin add @softspark/dsh-web-search-searxng

然后告诉它实例所在的位置:

- id: web-search-searxng
name: '@softspark/dsh-web-search-searxng'
config:
baseURL: http://searxng:8080

这是一个由 SoftSpark 独立维护的集成。它是非官方的,与 DeepSeek 或 SearXNG 项目没有关联,也未获得其认可。

1.0.0 中的新内容

首次公开发布。

- 一个 ctx.web 搜索提供程序,id 为 searxng,以及真正选择它的 bundle 补丁——仅注册不会改变任何东西,也没有任何东西会将其报告为错误。
- 结果按 URL 去重,因为元搜索会合并多个引擎,同一页面会出现多次。
- 可选字段会被省略,而不是凭空编造;dsh-tool-web 已经会渲染 title ?? hostname(url)。
- 针对 SearXNG 默认未启用的 JSON 格式提供了具名错误,因此一个以 HTTP 200 返回 HTML 的实例不会被解读为“无结果”。
- 完全没有凭据路径,不跟随重定向,也没有任何携带查询内容的错误。

完整历史见 CHANGELOG.md。

为什么会有这个项目

该 harness 自带一个搜索提供程序 web-search-deepseek,并且它受 DEEPSEEK_API_KEY 限制。这是一个合理的默认设置,但对于一个其核心在于智能体的日常操作背后没有供应商账户的工作台来说,它并不合适。密钥不仅仅是一个付款细节:它是一种身份,它使智能体运行的每个查询都可归因于某个人持有的某个账户。

搜索网页并不需要这些。元搜索前端将查询转发给各个引擎并返回它们给出的结果,而它没有的那个账户,就是没有人能用来进行关联的账户。

这并不声称什么。 各引擎仍然会看到查询,运行该实例的人也会看到。将 baseURL 指向公共 SearXNG,会把信任从你有账户的供应商转移到一个你没有账户的陌生人——这是一种不同的交易,而不是严格更好的交易。如果查询内容很重要,请运行你自己的实例。

配置

| 键 | 默认值 | 含义 |
|---|---|---|
| baseURL | 必填 | 实例的绝对 URL,不带 /search。无默认值:猜测会把查询发送到你并未选择的地方。 |
| timeoutMs | 15000 | 单次搜索的上限。介于 1000 和 120000 之间。 |
| language | 未设置 | 透传的 UI 语言,例如 pl 或 en-US。 |
| safeSearch | 0 | SearXNG 安全搜索级别:0 关闭,1 适中,2 严格。 |
| categories | 未设置 | 逗号分隔的类别,例如 general,it。 |
| engines | 未设置 | 逗号分隔的引擎名称,缩小实例查询的范围。 |

未设置的可选键会从请求中省略,而不是发送空值,因此实例自身的默认值会生效。

必须允许实例以 JSON 作答

SearXNG 默认不启用 JSON 输出格式。若不启用,实例会对同一 URL 返回渲染后的结果页面和 HTTP 200——如果此提供程序不进行检查,这会被读作“无结果”。将其添加到实例的 settings.yml:

search:
formats:
- html
- json

当提供程序看到 HTML 时,会在错误中指明这一修复方法,因此该失败是你可以采取行动应对的,而不是只能猜测的。

该捆绑包对 harness 做了什么

两行,且两者都必需:

- insert:
- id: web-search-searxng
name: '@softspark/dsh-web-search-searxng'

- patch:
- id: web
config:
searchProvider: searxng

仅注册提供程序不会改变任何东西。web 接缝在调用时解析 searchProvider,而已注册的已配置 id 总是胜出——因此当 web.searchProvider 仍指向 deepseek-official 时,此提供程序虽已注册却永远不会被选中。patch: 行才是改变选择的那一行。

保留 DeepSeek 行挂载在其他方面是无害的:没有密钥时它会报告自身不可用。如果重点在于根本不存在密钥路径,那么移除它仍然值得做。

行为

选择不依赖于顺序。 接缝在执行时解析已配置的 id。已注册但不可用的 id 会以 WEB_PROVIDER_CONFIGURED_UNAVAILABLE 失败,而不是静默回退到另一个提供程序——回退会使“哪个引擎回答了此查询”变得无法回答。

available() 不进行网络调用。 它报告是否配置了绝对的 http(s) 基础 URL。实例是否可达是搜索本身要回答的问题,在可用性检查中回答它会使每次提供程序列表都变成一次往返。

结果按 URL 去重。 元搜索会合并多个引擎,同一页面会多次出现;首次出现者胜出,因此实例选择的引擎顺序得以保留。

可选字段被省略,而非凭空捏造。 没有标题的结果不返回标题。dsh-tool-web 渲染 title ?? hostname(url),正是为此而构建。

重定向被拒绝。 发生重定向的搜索 URL 是配置错误或拦截,而不是要遵循的路由。
错误名称说明了该做什么。 无法访问的实例、非 2xx 响应、超时和 HTML 响应是四种不同的消息。它们都不包含查询——错误是搜索词绝不应泄漏到的地方。

安全

此插件不读取任何凭据,也不持有任何密钥。每次搜索都会向您配置的 baseURL 发起一次出站 GET 请求,且不会访问其他任何地方。

请按照 SECURITY.md 报告漏洞。

文档

- 设置实例
- 架构
- ADR-001:使用搜索提供程序而非密钥
- 常见问题

许可证

Apache-2.0。请参阅 LICENSE 和 NOTICE。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(softspark)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群