前言¶
在 DeepSeek Harness (DSH) 的开发实践中,web_search 是智能体获取外部信息的常用接口。默认情况下,这通常指向第三方搜索 API。当需要自建搜索实例以控制数据隐私、降低 API 调用成本,或应对网络环境限制时,将 web_search 的后端切换为自建的 SearXNG 是常见需求。biyuhao/dsh-web-searxng 插件为 DSH 提供了这一能力,将 SearXNG 注册为 web_search 的 provider。
插件介绍¶
该插件通过 SearXNG 提供自托管的搜索后端,支持 provider id searxng。所有者为 biyuhao,许可证为 MIT。插件包含服务端(host)和客户端(client)代码,无需将查询直接发送给第三方搜索引擎。
安装与依赖¶
安装前请确保运行环境满足以下要求:
* Node.js 版本 >= 20
* 当前激活的 DSH profile 为 web profile
使用官方命令安装:
dsh plugin --profile web add dsh-web-searxng
安装完成后,重启 dsh web 进程使配置生效。
核心功能¶
插件提供以下功能:
- 设置页配置:提供完整的配置卡片,支持设置实例地址、BasicAuth 认证、搜索分类、语言、安全搜索级别以及出境代理(支持 http/https/socks5h)。
- 连接测试:支持一键测试连接,返回可用性状态、延迟时间及结果条数。测试失败会明确显示原因(如 403 未开启 JSON、429 限流等)。
- 社区实例选择:集成 searx.space 社区实例,提供选择器功能。支持自动测速,当可用实例达到 10 个时会停止拉取。
- 名单管理:提供一键刷新社区实例名单的功能,基于当前配置的代理进行拉取和缓存。
- 中英双语:界面支持中英文切换。
配置说明¶
配置优先级为:设置页 > composition entry > 环境变量。主要配置项如下:
| 字段 | 说明 | 默认值 |
|---|---|---|
baseURL |
SearXNG 实例地址。留空表示未配置,provider 不可用。 | "" |
username / password |
BasicAuth 认证凭据。公用实例留空则不发送认证头。 | "" |
categories / language |
SearXNG 搜索参数。 | general / zh-CN |
safesearch |
安全搜索级别。0 关闭,1 中等,2 严格。 |
1 |
proxyUrl |
出境代理地址。留空表示直连。出境受限环境必填。 | "" |
proxyEnabled |
代理开关。关闭后走直连,但地址保留在配置中。 | true |
典型用法¶
设为默认搜索¶
当 DSH 中存在多个搜索 provider 时,若未指定默认 provider,可能会报错 WEB_PROVIDER_AMBIGUOUS。通过 patch 命令将默认 provider 指向 searxng:
# 创建一个临时 patch 文件,内容如下:
# - id: web
# config:
# searchProvider: searxng
# fetchProvider: http
dsh --profile web --patch ./pin-searxng.patch.yml
或者直接修改 profile 配置文件 ~/.dsh/profiles/web/cordis.patch.yml,将 searchProvider 和 fetchProvider 设置为 searxng 和 http。
验证功能¶
配置完成后,可在 DSH 控制台调用 web_search 验证:
web_search({queries: ["searxng format=json"]})
安全与部署注意事项¶
- 密码存储:插件将密码以明文形式存储在本地 settings 文档中,这与使用环境变量(
SEARXNG_USERNAME/SEARXNG_PASSWORD)的安全敏感度相同。 - 社区实例风险:使用社区实例时,查询内容为明文传输,且无法验证服务端行为。请勿在社区实例中搜索敏感内容。
- 引擎选择:不要在自建实例中添加 Google 引擎,因为 VPS IP 容易触发 CAPTCHA 验证,导致搜索失败。
- 自建部署:项目
deploy/目录提供了基于 Docker Compose 的部署方案,包含 Caddy 反向代理配置,单核 1G 内存 VPS 可稳定运行。
生态背景¶
DSH 理念是“一切皆插件”。本插件托管在 GitHub 上,社区目录提供了插件索引。