跳到正文
FunCoding

搜索

搜索文档、文章、Skill 和 MCP

SearXNG 搜索

SearXNG Web 搜索——自托管、无需密钥的元搜索提供商

OpenClaw 支持将 SearXNG 用作自托管、无需密钥的 web_search 提供商。SearXNG 是一个开源元搜索引擎,可聚合来自 Google、Bing、DuckDuckGo 和其他来源的结果。

优势:

  • 免费且无限制——无需 API key 或商业订阅
  • 隐私保护 / 网络隔离——查询绝不会离开你的网络
  • 随处可用——不受商业搜索 API 的地域限制

设置

安装插件

openclaw plugins install @openclaw/searxng-plugin

运行 SearXNG 实例

docker run -d -p 8888:8080 searxng/searxng

或使用你有权访问的任何现有 SearXNG 部署。有关生产环境设置,请参阅 SearXNG 文档。

配置

openclaw configure --section web
# 选择 "searxng" 作为提供商

或设置环境变量,让自动检测发现它:

export SEARXNG_BASE_URL="http://localhost:8888"

配置

{
  tools: {
    web: {
      search: {
        provider: "searxng",
      },
    },
  },
}

SearXNG 实例的插件级设置:

{
  plugins: {
    entries: {
      searxng: {
        config: {
          webSearch: {
            baseUrl: "http://localhost:8888",
            categories: "general,news", // 可选
            language: "en", // 可选
          },
        },
      },
    },
  },
}

baseUrl 也接受 SecretRef 对象(例如 { source: "env", id: "SEARXNG_BASE_URL" })。

环境变量

可设置 SEARXNG_BASE_URL 作为配置的替代方案:

export SEARXNG_BASE_URL="http://localhost:8888"

解析顺序:已配置的 baseUrl 字符串,然后是 baseUrl 上的内联环境变量 SecretRef,最后是 SEARXNG_BASE_URL。如果未设置任何配置路径,存在 SEARXNG_BASE_URL,并且未明确选择提供商,自动检测会选择 SearXNG。

插件配置参考

字段说明
baseUrl你的 SearXNG 实例的基础 URL(必填)
categories以逗号分隔的类别,例如 general、news 或 science
language结果的语言代码,例如 en、de 或 fr

web_search 工具调用还接受 count(1-10 条结果)、categories 和 language 作为单次调用的覆盖值。

注意事项

  • JSON API——使用 SearXNG 原生的 format=json 端点,而非抓取 HTML
  • 图片结果 URL——当 SearXNG 返回直接图片 URL 时,图片类别的结果会包含 img_src
  • 无需 API key——可直接用于任何 SearXNG 实例
  • 基础 URL 验证——baseUrl 必须是有效的 http:// 或 https:// URL
  • 网络防护——http:// 基础 URL 必须指向可信的私有主机或 loopback 主机(公共主机必须使用 https://);解析到私有/内部地址的 https:// 基础 URL 可获得相同的自托管许可,而解析到公共地址的 https:// 基础 URL 仍会受到严格的 SSRF 防护
  • 自动检测顺序——SearXNG 需要已配置的 baseUrl(在已具备所需凭据的提供商中,顺序为 200)。DuckDuckGo 或 Ollama Web 搜索等无需密钥的提供商绝不会通过自动检测隐式胜出; 只有明确选择 provider 时才会启用
  • 自托管——你可以控制实例、查询和上游搜索引擎
  • 类别未配置时默认为 general
  • 类别回退——如果非 general 类别的请求成功但返回零条结果, OpenClaw 会使用 general 对同一查询重试一次,然后才返回空结果集
  • 结果缓存——相同的查询(查询文本、数量、类别、语言和基础 URL 均相同) 会在进程内缓存一段较短的 TTL
  • 版本要求——该插件声明 minHostVersion: >=2026.6.9

要使 SearXNG JSON API 正常工作,请确保你的 SearXNG 实例已在 settings.yml 的 search.formats 下启用 json 格式。

相关内容