dsh-searxng-web:用自托管 SearXNG 替换 DSH 原生搜索

前言

DeepSeek Harness (DSH) 默认的 web_search 指向云端搜索,且不挂载 web_fetch 提供者。如果你运行自托管的 SearXNG 用于隐私保护或离线场景,现有的工具链仍会将查询发送给第三方供应商。dsh-searxng-web 插件介入,接管原生工具,将请求路由到你的 SearXNG 实例。

是什么

dsh-searxng-web 是一个 DeepSeek Harness 插件,由维护者 maxwell-feng 开发。它将 DSH 原生的 web_search 和 web_fetch 工具后端替换为自托管的 SearXNG 实例,实现无第三方供应商、无密钥的搜索与抓取。

核心功能

  • 原生工具支持:接管 web_search 和 web_fetch 工具,模型无需变更调用名称。
  • SSRF 防护:web_fetch 受 SSRF 防护,限制抓取目标。
  • 三栈端点与故障转移:支持配置多个端点(如 IPv4、IPv6、内网),自动故障转移。
  • 私密与无密钥:直接连接自托管实例,无需第三方服务。

安装与启用

安装前需满足以下条件:
1. Node.js 版本 >= 22
2. 已安装 DeepSeek Harness (dsh),已验证版本 0.1.5-rc.2
3. 部署了可访问的 SearXNG 实例,并在配置中启用了 JSON 输出(settings.yml → search.formats: [html, ])

安装插件:

dsh plugin --profile web add dsh-searxng-web

安装后重启 DSH 即可生效。

典型用法

插件接管后,模型使用原生工具名称即可调用你的 SearXNG:
- web_search → ctx.web → searxng-web → 你的 SearXNG → 配置的搜索引擎
- web_fetch → ctx.web → searxng-web-fetch → 目标页面(受 SSRF 防护,HTML 转 Text)

验证配置:

dsh --profile web --dump-config | grep -A5 searxng

在 GUI 中,设置 → Web 搜索 会显示提供者就绪状态。

配置说明

默认的 Base URL 为 http://127.0.0.1:8080。在 DSH 的 cordis.patch.yml 中覆盖配置:

- id: searxng-web
  config:
    baseUrl: 'http://10.42.1.159:8080'
    timeoutMs: 15000
    fetchTimeoutMs: 30000
    fetchMaxChars: 200000
    ssrfGuard: true
    search:
      language: ''       # e.g. 'zh-CN', 'en'
      safesearch: 0      # 0 off, 1 moderate, 2 strict

适用场景与注意

  • 适用场景:需要完全控制搜索结果、注重隐私、部署在离线或内网环境、不想使用第三方搜索供应商的开发者。
  • 注意:插件以当前 DSH 进程的权限运行,需确保 DSH 有权限访问 SearXNG 实例。安装前建议检查源码与许可证。

结语

该插件通过无缝集成 DSH 的原生工具链,让自托管搜索方案落地。更多细节与源码可参考插件目录或 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

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

小夜