Appearance
本页介绍如何将 OpenClaw 的 web_search 接入自托管的 SearXNG 元搜索引擎,实现零 API Key、无地区限制的私有搜索。SearXNG 聚合 Google、Bing、DuckDuckGo 等多个来源,一条 Docker 命令即可部署。适合有隐私需求或在隔离网络中运行 OpenClaw 的场景。
SearXNG 网页搜索
OpenClaw 支持 SearXNG 作为自托管、无需 API Key 的 web_search Provider。SearXNG 是一个开源元搜索引擎,聚合 Google、Bing、DuckDuckGo 等多个来源的搜索结果。
优势:
- 免费无限额:无需 API Key 或商业订阅
- 隐私保护 / 内网隔离:搜索请求不出网络边界
- 无地区限制:不受商业搜索 API 的地区封锁影响
快速开始
1. 运行 SearXNG 实例:
bash
docker run -d -p 8888:8080 searxng/searxng或使用任何已有的 SearXNG 部署。生产环境配置请参考 SearXNG 官方文档。
2. 配置 OpenClaw:
bash
openclaw configure --section web
# 选择 "searxng"或设置环境变量让自动检测发现:
bash
export SEARXNG_BASE_URL="http://localhost:8888"配置
json5
{
tools: {
web: {
search: {
provider: "searxng",
},
},
},
}插件级别的详细配置:
json5
{
plugins: {
entries: {
searxng: {
config: {
webSearch: {
baseUrl: "http://localhost:8888",
categories: "general,news", // 可选
language: "en", // 可选
},
},
},
},
},
}baseUrl 字段也支持 SecretRef 对象。
传输规则:
- 私有/内网/本地 SearXNG:支持
http:// - 公网 SearXNG:必须使用
https://
环境变量
bash
export SEARXNG_BASE_URL="http://localhost:8888"设置 SEARXNG_BASE_URL 且未配置其他 Provider 时,自动检测会选择 SearXNG(优先级最低,API Key 认证的 Provider 优先)。
配置参数
| 字段 | 说明 |
|---|---|
baseUrl | SearXNG 实例的 Base URL(必填) |
categories | 逗号分隔的搜索分类,如 general、news、science |
language | 结果语言代码,如 en、zh、de |
注意事项
- 使用 SearXNG 原生
format=json端点,不是 HTML 抓取 - 无需 API Key,任何 SearXNG 实例均可开箱即用
- Base URL 必须是合法的
http://或https://URL;公网主机须用 HTTPS - 自动检测优先级为 200(最低),API Key 认证 Provider、DuckDuckGo(100)、Ollama(110) 均优先于 SearXNG
- 确保 SearXNG 实例的
settings.yml中search.formats已启用json格式
延伸阅读
常见问题
Q: SearXNG 实例需要做哪些配置才能兼容 OpenClaw?
A: 关键是在 SearXNG 的 settings.yml 中启用 JSON 输出格式,在 search.formats 下加入 json。默认安装通常未启用,启用后 OpenClaw 才能解析搜索结果。
Q: 公网 SearXNG 实例(别人搭的)可以用吗?
A: 可以,但必须使用 https:// URL。HTTP 公网地址会被 OpenClaw 拒绝。另外,公网实例可能限制搜索频率或关闭 JSON API,建议自行托管以获得稳定性保证。
Q: SEARXNG_BASE_URL 和配置文件里的 baseUrl 哪个优先?
A: 配置文件(plugins.entries.searxng.config.webSearch.baseUrl)优先于环境变量。环境变量 SEARXNG_BASE_URL 主要用于让自动检测发现 SearXNG,在没有显式配置 Provider 时生效。