跳转到内容

Web search

web_search 工具使用您配置的提供商搜索网络并返回结果。结果按查询缓存 15 分钟(可配置)。

OpenClaw 还包含 x_search 用于搜索 X(前 Twitter)帖子,以及 web_fetch 用于轻量级 URL 获取。在此阶段,web_fetch 保持在本地,而 web_searchx_search 可在底层使用 xAI Responses。

  1. Choose a 提供商

    选择一个提供商并完成任何所需的设置。某些提供商不需要密钥,而其他的则使用 API 密钥。详情请参阅下方的提供商页面。

  2. Configure

    Terminal window
    openclaw configure --section web

    这将存储提供商以及任何所需的凭据。您也可以设置环境变量(例如 BRAVE_API_KEY)并针对 API 支持的提供商跳过此步骤。

  3. Use it

    代理现在可以调用 web_search

    await web_search({ query: "OpenClaw plugin SDK" });

    对于 X 帖子,使用:

    await x_search({ query: "dinner recipes" });
Brave Search

包含片段的结构化结果。支持 llm-context 模式、国家/语言过滤器。提供免费层级。

DuckDuckGo

无需密钥的回退方案。不需要 API 密钥。基于 HTML 的非官方集成。

Exa

神经搜索 + 关键词搜索,支持内容提取(高亮、文本、摘要)。

Firecrawl

结构化结果。最好与 firecrawl_searchfirecrawl_scrape 配合使用以进行深度提取。

Gemini

通过 Google Search 接地提供带引用的 AI 综合答案。

Grok

通过 xAI web grounding 提供带引用的 AI 综合答案。

Kimi

通过 Moonshot 网络搜索提供带有引用的 AI 综合答案;无依据的聊天回退会明确失败。

MiniMax Search

通过 MiniMax Token Plan 搜索 API 提供结构化结果。

Ollama Web Search

通过已登录的本地 Ollama 主机或托管的 Ollama API 进行搜索。

Perplexity

结构化结果,包含内容提取控制和域名过滤。

SearXNG

自托管元搜索。不需要 API 密钥。聚合 Google、Bing、DuckDuckGo 等。

Tavily

结构化结果,具备搜索深度、主题过滤和用于 URL 提取的 tavily_extract

提供商结果样式过滤器API 密钥
Brave结构化片段国家、语言、时间、llm-context 模式BRAVE_API_KEY
DuckDuckGo结构化片段无(无密钥)
Exa结构化 + 已提取神经/关键词模式、日期、内容提取EXA_API_KEY
Firecrawl结构化片段通过 firecrawl_search 工具FIRECRAWL_API_KEY
GeminiAI 合成 + 引用GEMINI_API_KEY
GrokAI 合成 + 引用XAI_API_KEY
KimiAI 综合 + 引用;在无依据的聊天回退时失败KIMI_API_KEY / MOONSHOT_API_KEY
MiniMax Search结构化片段区域 (global / cn)MINIMAX_CODE_PLAN_KEY / MINIMAX_CODING_API_KEY / MINIMAX_OAUTH_TOKEN
Ollama Web Search结构化片段已登录本地主机无限制;直接 https://ollama.com 搜索需要 OLLAMA_API_KEY
Perplexity结构化片段国家、语言、时间、域名、内容限制PERPLEXITY_API_KEY / OPENROUTER_API_KEY
SearXNG结构化片段类别、语言无(自托管)
Tavily结构化片段通过 tavily_search 工具TAVILY_API_KEY

当启用 OpenClaw 网络搜索且未锁定受管提供商时,Direct OpenAI Responses 模型会自动使用 OpenAI 托管的 OpenAIOpenAIweb_searchOpenClawOpenAIOpenAIAPIOpenAI 工具。这是捆绑的 OpenAI 插件中属于提供商的行为,仅适用于原生 OpenAI API 流量,不适用于 OpenAI 兼容的代理基础 URL 或 Azure 路由。将 tools.web.search.provider 设置为其他提供商(例如 brave)以为 OpenAI 模型保留受管 web_searchOpenAI 工具,或者设置 tools.web.search.enabled: falseOpenAI 以同时禁用受管搜索和原生 OpenAI 搜索。

具备 Codex 功能的模型可以选择使用提供商原生的 Responses web_searchOpenClaw 工具,而不是 OpenClaw 的受管 web_search 函数。

  • tools.web.search.openaiCodex 下进行配置
  • 它仅对具备 Codex 功能的模型激活(openai-codex/* 或使用 api: "openai-codex-responses" 的提供商)
  • 受管 web_search 仍适用于非 Codex 模型
  • mode: "cached" 是默认设置也是推荐设置
  • tools.web.search.enabled: false 会同时禁用受管搜索和原生搜索
{
tools: {
web: {
search: {
enabled: true,
openaiCodex: {
enabled: true,
mode: "cached",
allowedDomains: ["example.com"],
contextSize: "high",
userLocation: {
country: "US",
city: "New York",
timezone: "America/New_York",
},
},
},
},
},
}

如果启用了原生 Codex 搜索,但当前模型不具备 Codex 功能,OpenClaw 将保持正常的受管 OpenClawweb_search 行为。

受管 web_searchOpenClawAPIOpenClaw 提供商调用使用 OpenClaw 的防护获取路径。对于 受信任的提供商 API 主机,OpenClaw 仅允许针对该提供商主机名在 198.18.0.0/15fc00::/7 中使用 Surge、Clash 和 sing-box 的假 IP DNS 应答。 其他私有、环回、链路本地和元数据目标仍然被阻止。

这种自动许可不适用于任意的 web_fetch URL。对于 web_fetch,仅当您的 受信任代理拥有这些合成范围时,才明确启用 tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRangetools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange

文档和设置流程中的提供商列表按字母顺序排列。自动检测保持 单独的优先顺序。

如果未设置 providerOpenClaw,OpenClaw 将按以下顺序检查提供商并使用 第一个准备就绪的提供商:

首先是支持 API 的提供商:

  1. Brave — BraveBRAVE_API_KEYplugins.entries.brave.config.webSearch.apiKey(顺序 10)
  2. MiniMax Search — MiniMaxMINIMAX_CODE_PLAN_KEY / MINIMAX_CODING_API_KEY / MINIMAX_OAUTH_TOKEN / MINIMAX_API_KEYplugins.entries.minimax.config.webSearch.apiKey(顺序 15)
  3. Geminiplugins.entries.google.config.webSearch.apiKeyGEMINI_API_KEYmodels.providers.google.apiKey(顺序 20)
  4. GrokXAI_API_KEYplugins.entries.xai.config.webSearch.apiKey(顺序 30)
  5. KimiKIMI_API_KEY / MOONSHOT_API_KEYplugins.entries.moonshot.config.webSearch.apiKey(顺序 40)
  6. Perplexity — PerplexityPERPLEXITY_API_KEY / OPENROUTER_API_KEYplugins.entries.perplexity.config.webSearch.apiKey(顺序 50)
  7. Firecrawl — FirecrawlFIRECRAWL_API_KEYplugins.entries.firecrawl.config.webSearch.apiKey(顺序 60)
  8. ExaEXA_API_KEYplugins.entries.exa.config.webSearch.apiKey;可选的 plugins.entries.exa.config.webSearch.baseUrl 会覆盖 Exa 端点(顺序 65)
  9. TavilyTAVILY_API_KEYplugins.entries.tavily.config.webSearch.apiKey(顺序 70)

之后是无密钥的后备方案:

  1. DuckDuckGo — 无需账户或 API 密钥的无密钥 HTML 后备方案(顺序 100)
  2. Ollama Web Search — 当配置的本地 Ollama 主机可达并使用 OllamaOllamaollama signinOllama 登录时,无需密钥的回退选项;当主机需要时,可以重用 Ollama 提供商的 bearer auth,并且在配置了 OLLAMA_API_KEY 时可以调用直接的 https://ollama.com 搜索(顺序 110)
  3. SearXNGSEARXNG_BASE_URLplugins.entries.searxng.config.webSearch.baseUrl(顺序 200)

如果未检测到提供商,它将回退到 Brave(您将收到缺失密钥错误,提示您配置一个)。

{
tools: {
web: {
search: {
enabled: true, // default: true
provider: "brave", // or omit for auto-detection
maxResults: 5,
timeoutSeconds: 30,
cacheTtlMinutes: 15,
},
},
},
}

特定于提供商的配置(API 密钥、基础 URL、模式)位于 APIplugins.entries.<plugin>.config.webSearch.* 下。Gemini 还可以重用 models.providers.google.apiKeymodels.providers.google.baseUrl 作为其专用 Web 搜索配置和 GEMINI_API_KEY 之后的较低优先级 回退选项。请参阅提供商页面以获取示例。

tools.web.search.provider 会根据内置和已安装插件清单中声明的网络搜索提供商 ID 进行验证。拼写错误(例如 "brvae")会导致配置验证失败,而不是静默回退到自动检测。如果配置的提供商只有过时的插件证据,例如卸载第三方插件后残留的 plugins.entries.<plugin> 块,OpenClaw 会保持启动的弹性并报告警告,以便您重新安装插件或运行 openclaw doctor --fix 来清理过时的配置。

web_fetch 回退提供商的选择是独立的:

  • 通过 tools.web.fetch.provider 进行选择
  • 或者省略该字段,让 OpenClaw 从可用的凭据中自动检测第一个就绪的网络获取提供商
  • 非沙箱隔离的 web_fetch 可以使用声明了 contracts.webFetchProviders 的已安装插件提供商;沙箱隔离的获取操作则仅限于内置功能
  • 目前内置的网络获取提供商是 Firecrawl,配置在 plugins.entries.firecrawl.config.webFetch.*

当您在 openclaw onboardopenclaw configure --section web 期间选择 Kimi 时,OpenClaw 还可以询问:

  • Moonshot API API 区域(https://api.moonshot.ai/v1https://api.moonshot.cn/v1
  • 默认的 Kimi 网络搜索模型(默认为 kimi-k2.6

对于 x_search,请配置 plugins.entries.xai.config.xSearch.*。它使用与聊天相同的 xAI 身份验证配置文件,或 Grok 网络搜索使用的 XAI_API_KEY / 插件网络搜索凭据。 旧的 tools.web.x_search.* 配置会由 openclaw doctor --fix 自动迁移。 当您在 openclaw onboardopenclaw configure --section webOpenClaw 期间选择 Grok 时, OpenClaw 还可以使用相同的密钥提供可选的 x_searchOpenClaw 设置。 这是 Grok 路径中的一个独立后续步骤,而不是一个单独的顶级 网络搜索提供商选择。如果您选择其他提供商,OpenClaw 将不会 显示 x_search 提示。

运行 openclaw configure --section web 或直接设置密钥:

{
plugins: {
entries: {
brave: {
config: {
webSearch: {
apiKey: "YOUR_KEY", // pragma: allowlist secret
},
},
},
},
},
}
参数描述
query搜索查询(必填)
count要返回的结果数(1-10,默认:5)
country2 字母 ISO 国家代码(例如 “US”、“DE”)
languageISO 639-1 语言代码(例如 “en”、“de”)
search_lang搜索语言代码(仅限 Brave)
freshness时间过滤器:dayweekmonthyear
date_after此日期之后的结果(YYYY-MM-DD)
date_before此日期之前的结果(YYYY-MM-DD)
ui_langUI 语言代码(仅限 Brave)
domain_filter域名允许列表/拒绝列表数组(仅限 Perplexity)
max_tokens总内容预算,默认为 25000(仅限 Perplexity)
max_tokens_per_page每页 token 限制,默认为 2048(仅限 Perplexity)

x_search 使用 xAI 查询 X(前 Twitter)帖子并返回 带有引用的 AI 合成答案。它接受自然语言查询和 可选的结构化筛选器。OpenClaw 仅在服务于此工具调用的请求上 启用内置的 xAI x_search 工具。

{
plugins: {
entries: {
xai: {
config: {
xSearch: {
enabled: true,
model: "grok-4-1-fast-non-reasoning",
baseUrl: "https://api.x.ai/v1", // optional, overrides webSearch.baseUrl
inlineCitations: false,
maxTurns: 2,
timeoutSeconds: 30,
cacheTtlMinutes: 15,
},
webSearch: {
apiKey: "xai-...", // optional if an xAI auth profile or XAI_API_KEY is set
baseUrl: "https://api.x.ai/v1", // optional shared xAI Responses base URL
},
},
},
},
},
}

当设置了 plugins.entries.xai.config.xSearch.baseUrl 时, x_search 会将帖子发送到 <baseUrl>/responses。如果省略了该字段, 它会回退到 plugins.entries.xai.config.webSearch.baseUrl,然后是 旧的 tools.web.search.grok.baseUrl,最后是公共 xAI 端点。

参数描述
query搜索查询(必填)
allowed_x_handles将结果限制为特定的 X 用户名
excluded_x_handles排除特定的 X 用户名
from_date仅包含此日期及之后的帖子 (YYYY-MM-DD)
to_date仅包含此日期及之前的帖子 (YYYY-MM-DD)
enable_image_understanding允许 xAI 检查匹配帖子中附加的图片
enable_video_understanding允许 xAI 检查匹配帖子中附加的视频
await x_search({
query: "dinner recipes",
allowed_x_handles: ["nytfood"],
from_date: "2026-03-01",
});
// Per-post stats: use the exact status URL or status ID when possible
await x_search({
query: "https://x.com/huntharo/status/1905678901234567890",
});
// Basic search
await web_search({ query: "OpenClaw plugin SDK" });
// German-specific search
await web_search({ query: "TV online schauen", country: "DE", language: "de" });
// Recent results (past week)
await web_search({ query: "AI developments", freshness: "week" });
// Date range
await web_search({
query: "climate research",
date_after: "2024-01-01",
date_before: "2024-06-30",
});
// Domain filtering (Perplexity only)
await web_search({
query: "product reviews",
domain_filter: ["-reddit.com", "-pinterest.com"],
});

如果您使用工具配置文件或允许列表,请添加 web_searchx_searchgroup:web

{
tools: {
allow: ["web_search", "x_search"],
// or: allow: ["group:web"] (includes web_search, x_search, and web_fetch)
},
}