Skip to main content
web_search 使用你配置的提供商搜索网络,并返回 规范化结果,按查询缓存 15 分钟(可配置)。OpenClaw 还内置了用于 X(前身为 Twitter)帖子的 x_search 和用于 轻量级 URL 获取的 web_fetchweb_fetch 始终在本地运行;当提供商是 Grok 时,web_search 通过 xAI Responses 路由,而 x_search 始终使用 xAI Responses。
web_search 是一个轻量级 HTTP 工具,不是浏览器自动化。对于 JS 重度依赖的网站或登录场景,请使用 网页浏览器。对于获取特定 URL,请使用 网页获取

快速开始

1

选择一个提供商

选择一个提供商并完成任何所需的设置。有些提供商无需密钥,其他则需要 API 密钥。详情请参见下面的提供商页面。
2

配置

这会存储提供商和任何所需的凭据。对于基于 API 的 提供商,你也可以改为设置该提供商的环境变量(例如 BRAVE_API_KEY),并跳过此步骤。你也可以通过与 OpenClaw 对话来配置搜索:在 openclaw setup 中,或在 Control UI 的 Settings → Ask OpenClaw 聊天中说 configure web search。 托管流程会负责提供商选择和凭据输入——API 密钥会在浏览器中被隐藏,终端聊天会通过 open search wizard 转交给带掩码的向导。
3

使用它

对于 X 帖子:

选择提供商

Brave Search

结构化结果,带摘要。支持 llm-context 模式、国家/语言筛选。提供免费套餐。

Codex 托管搜索

通过你的 Codex 应用服务器账户生成 AI 综合且有依据的答案。

DuckDuckGo

无密钥提供商。无需 API 密钥。基于 HTML 的非官方集成。

Exa

神经网络 + 关键词搜索,并提供内容提取(高亮、文本、摘要)。

Firecrawl

结构化结果。最适合与 firecrawl_searchfirecrawl_scrape 搭配,用于深度提取。

Gemini

通过 Google Search grounding 生成带引用的 AI 综合答案。

Grok

通过 xAI web grounding 生成带引用的 AI 综合答案。

Kimi

通过 Moonshot 网页搜索生成带引用的 AI 综合答案;未接地的聊天回退会明确失败。

MiniMax Search

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

Ollama Web Search

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

Parallel

付费的 Parallel Search API(PARALLEL_API_KEY);更高的速率限制和目标调优。

Parallel Search (Free)

无密钥可选加入。Parallel 的免费 Search MCP,提供针对 LLM 优化的高密度摘录,无需 API 密钥。

Perplexity

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

SearXNG

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

Tavily

通过搜索深度、主题过滤,以及用于 URL 提取的 tavily_extract 提供结构化结果。

提供商对比

结果形状

web_search 在核心工具边界统一规范化每个内置和外部插件提供方。调用者会收到以下闭合形状之一:
结构化提供方使用 kind: "results";合成提供方使用 kind: "answer"。负载既不匹配这两种形状的外部插件提供方会按原样通过,作为 kind: "raw" 以保证兼容性。诸如原始分数、摘录、相关搜索、行内引用偏移、模型 id 或会话元数据等提供方特定字段,不会在规范化分支中透传。若某个提供方的更丰富响应是你工作流的一部分,请使用该提供方专用的工具。 externalContent.wrapped: true 是一个信任标记,由边界本身置为 true:提供方文案(titlesnippetsiteNamecontent、引用标题、错误 message)会剥离任何预先存在的包裹行,并在核心边界只重新包裹一次,因此不会有任何提供方元数据伪造该标记。query 始终是请求的查询,引用和结果 URL 必须能解析为 http(s),published 必须是 ISO 日期形状,URL 会以规范化形式输出,而携带 error 键的负载总会被报告为 kind: "error",并将原始提供方代码保留在包裹后的消息中。原始透传负载会保留提供方设置的任何标记。

自动检测

文档和设置流程中的提供方列表按字母顺序排列。自动检测使用一套单独的固定优先级顺序,并且只会在找到已配置的提供方时选择一个需要凭据(requiresCredential !== false)的提供方。如果未设置 provider,OpenClaw 会按以下顺序检查各提供方,并使用第一个已就绪的提供方: 先检查基于 API 的提供方:
  1. BraveBRAVE_API_KEYplugins.entries.brave.config.webSearch.apiKey(顺序 10)
  2. MiniMax SearchMINIMAX_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. Grok — xAI OAuth、XAI_API_KEYplugins.entries.xai.config.webSearch.apiKey(顺序 30)
  5. KimiKIMI_API_KEY / MOONSHOT_API_KEYplugins.entries.moonshot.config.webSearch.apiKey(顺序 40)
  6. PerplexityPERPLEXITY_API_KEY / OPENROUTER_API_KEYplugins.entries.perplexity.config.webSearch.apiKey(顺序 50)
  7. 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)
  10. Parallel — 通过 PARALLEL_API_KEYplugins.entries.parallel.config.webSearch.apiKey 使用付费的 Parallel Search API;可选的 plugins.entries.parallel.config.webSearch.baseUrl 会覆盖该端点(顺序 75)
随后是已配置端点的提供方:
  1. SearXNGSEARXNG_BASE_URLplugins.entries.searxng.config.webSearch.baseUrl(顺序 200)
诸如 Parallel Search (Free)DuckDuckGoOllama Web SearchCodex Hosted Search 之类的免密钥提供方永远不会在自动检测中胜出,即使它们有内部顺序值。只有当你通过 tools.web.search.provideropenclaw configure --section web 显式选择它们时,它们才会被使用。OpenClaw 不会因为没有配置基于 API 的提供方,就把托管的 web_search 查询发送给免密钥提供方。 OpenAI Responses 模型是个例外:当 tools.web.search.provider 未设置时,它们会使用 OpenAI 原生的网页搜索,而不是上面列出的托管提供方(见下文)。将 tools.web.search.provider 设置为 parallel-free(或其他提供方)即可让它们改为通过托管路径路由。
所有提供方密钥字段都支持 SecretRef 对象。位于 plugins.entries.<plugin>.config.webSearch.apiKey 下、插件作用域的 SecretRef 会被已安装的基于 API 的网页搜索提供方解析,包括 Brave、Exa、Firecrawl、Gemini、Grok、Kimi、MiniMax、Parallel、Perplexity 和 Tavily,无论该提供方是通过 tools.web.search.provider 显式选中,还是通过自动检测选中。在自动检测模式下,OpenClaw 只会解析被选中的提供方密钥——未被选中的 SecretRef 会保持非活动状态,因此你可以同时配置多个提供方,而无需为未使用的提供方承担解析成本。

原生 OpenAI 网页搜索

直接使用 OpenAI Responses 模型(api: "openai-responses",提供方为 openai, 没有 base URL 或使用官方 OpenAI API base URL)时,当启用 OpenClaw 网页搜索且未固定 任何托管提供方时,会自动使用 OpenAI 托管的 web_search 工具。这是捆绑的 OpenAI 插件中的提供方自有行为,不适用于 OpenAI 兼容的代理 base URL 或 Azure 路由。将 tools.web.search.provider 设置为其他提供方,例如 brave,即可为 OpenAI 模型 保留托管的 web_search 工具;或者将 tools.web.search.enabled: false 以同时禁用托管搜索和原生 OpenAI 搜索。

原生 Codex 网页搜索

当启用网页搜索且未选择任何受管理提供商时,Codex 应用服务器运行时会自动使用 Codex 托管的 web_search 工具。原生托管搜索与 OpenClaw 的受管理 web_search 动态工具是互斥的,因此受管理搜索无法绕过原生域名限制。当托管搜索不可用、被显式禁用或被所选受管理提供商替换时,OpenClaw 会使用受管理工具。OpenClaw 会保持 Codex 独立的 web.run 扩展处于禁用状态(features.standalone_web_search: false),因为生产应用服务器流量会拒绝其用户定义的 web 命名空间。
  • tools.web.search.openaiCodex 下配置原生搜索
  • tools.web.search.provider: "codex" 设置为将 Codex 托管搜索作为任何父模型的受管理 web_search 提供商。每次调用都会运行一个有边界的、短暂的 Codex 应用服务器回合,并在 Codex 未输出托管的 webSearch 项时失败。
  • mode: "cached" 是默认首选项,但 Codex 会将其解析为对无限制应用服务器回合的实时外部访问;如需明确请求实时访问,请设置为 "live"
  • tools.web.search.provider 设置为诸如 brave 之类的受管理提供商,以使用 OpenClaw 的受管理 web_search
  • tools.web.search.openaiCodex.enabled: false 设置为退出 Codex 托管搜索;其他受管理提供商仍然可用
  • 限制 Codex 原生工具面也会保持受管理 web_search 可用
  • 当设置了 allowedDomains 时,如果托管搜索不可用,自动受管理回退将失败关闭,这样原生允许列表就不能被绕过
  • 工具禁用的仅 LLM 运行会同时禁用原生和受管理搜索
  • tools.web.search.enabled: false 会同时禁用受管理和原生搜索
对 Codex 搜索策略的持久有效更改会启动一个新的绑定线程,因此已加载的应用服务器线程不能保留过期的托管搜索访问权限。每回合的临时限制使用临时受限线程,并保留现有绑定以便之后恢复。 直接的 OpenAI ChatGPT Responses 流量也可以使用 OpenAI 托管的 web_search 工具。那条独立路径仍然需要通过 tools.web.search.openaiCodex.enabled: true 明确启用,并且仅适用于使用 api: "openai-chatgpt-responses" 的符合条件的 openai/* 模型。
对于不支持原生 Codex 搜索的运行时和提供商,Codex 可以通过 OpenClaw 的动态工具命名空间使用受管理的 web_search 回退。当你需要 OpenClaw 具备提供商特定的网络控制而不是 Codex 托管搜索时,请使用显式的受管理提供商。 选择 provider: "codex" 会启用捆绑的 codex 插件,并使用上面显示的相同 tools.web.search.openaiCodex 限制。请先使用 openclaw models auth login --provider openai 对 Codex 应用服务器进行身份验证。父代理可以使用任何模型或运行时;只有受边界限制的搜索工作进程通过 Codex 运行。

网络安全

受管的 HTTP web_search 提供方调用使用 OpenClaw 的受保护抓取路径, 其作用域仅限于当前提供方自身的主机名。仅针对该主机名, OpenClaw 允许 Surge、Clash 和 sing-box 在 198.18.0.0/15fc00::/7 中返回 fake-IP DNS 结果。其他私有、回环、链路本地以及 元数据目标仍然会被阻止。Codex Hosted Search 是个例外: 其受限 worker 会将网络访问委托给 Codex app-server 托管的 web_search 工具。 此自动允许不适用于任意 web_fetch URL。对于 web_fetch,仅当你的受信任代理拥有这些合成范围时,才显式启用 tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRangetools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange

配置

特定提供商配置(API 密钥、base URL、模式)位于 plugins.entries.<plugin>.config.webSearch.* 下。Gemini 还可以在其专用网页搜索配置和 GEMINI_API_KEY 之后, 将 models.providers.google.apiKeymodels.providers.google.baseUrl 作为优先级较低的 回退项复用。示例请参见各提供商页面。 Grok 还可以复用通过 openclaw models auth login --provider xai --method oauth 获取的 xAI OAuth 认证配置文件;API 密钥配置仍然是回退方案。 tools.web.search.provider 会根据已捆绑和已安装插件清单中声明的网页搜索提供商 ID 进行验证。像 "brvae" 这样的拼写错误会导致配置验证失败,而不是静默回退到自动检测。如果某个已配置提供商只有过时的插件证据,例如卸载第三方插件后留下的 plugins.entries.<plugin> 配置块, OpenClaw 会保持启动过程的弹性并报告警告,以便你重新安装该 插件或运行 openclaw doctor --fix 清理过时配置。 web_fetch 备用提供商的选择是独立的:
  • 使用 tools.web.fetch.provider 选择它
  • 或省略该字段,让 OpenClaw 根据已配置凭据自动检测第一个可用的 web-fetch 提供商
  • 非沙箱化的 web_fetch 可以使用声明了 contracts.webFetchProviders 的已安装插件提供商;沙箱化抓取允许内置提供商和已验证的官方插件安装,但不包括第三方外部插件
  • 官方 Firecrawl 插件是目前唯一的内置 webFetchProviders 贡献者,配置位于 plugins.entries.firecrawl.config.webFetch.*
当你在 openclaw onboardopenclaw configure --section web 期间选择 Kimi 时,OpenClaw 还可能会询问:
  • Moonshot 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 web 期间选择 Grok 时, OpenClaw 还会在 Grok 设置完成后提供可选的 x_search 配置,且使用相同的凭据。 这是在 Grok 路径中的一个独立后续步骤,而不是另一个顶层网页搜索提供商选择。如果你选择其他提供商,OpenClaw 不会显示 x_search 提示。

存储 API 密钥

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

工具参数

并非所有参数都适用于所有提供商。Brave 的 llm-context 模式会 拒绝 ui_langdate_before 也需要 date_after,因为 Brave 自定义 freshness 范围要求同时提供开始和结束日期。 Gemini、Grok 和 Kimi 会返回一个带引用的综合答案。它们 接受 count 以兼容共享工具,但这不会改变有依据答案的结构。 Gemini 将 day freshness 视为新近性提示;更宽的 freshness 值和显式日期会设置 Google Search grounding 的时间范围。Perplexity 在使用 Sonar/OpenRouter 兼容路径(plugins.entries.perplexity.config.webSearch.baseUrl / modelOPENROUTER_API_KEY)时表现相同;该路径也会移除 max_tokensmax_tokens_per_page 的支持。 SearXNG 仅接受用于可信私有网络或回环主机的 http://;公共 SearXNG 终端必须使用 https://。 Firecrawl 和 Tavily 通过 web_search 仅支持 querycount —— 高级选项请使用它们各自的专用工具。
x_search 使用 xAI 搜索 X(原 Twitter)帖子,并返回 带引用的 AI 综合答案。它接受自然语言查询和可选的结构化过滤器。 OpenClaw 会按请求构建内置的 xAI x_search 工具,而不是将其永久注册,因此它只在实际调用它的那一轮生效。
x_search 运行在 xAI 的服务器上。xAI 每 1,000 次工具调用收费 5 美元,外加 模型的输入和输出 token。
xAI 将 x_search 文档化为支持关键词搜索、语义搜索、用户 搜索以及线程抓取。对于每个帖子的互动统计信息,例如转发、回复、 收藏或浏览,建议优先针对精确的帖子 URL 或状态 ID 进行定向查询。 广泛的关键词搜索可能会找到正确的帖子,但返回的单帖元数据可能 不够完整。一个好的模式是:先定位帖子,然后 再运行第二个聚焦于该精确帖子的 x_search 查询。

x_search 配置

如果省略 enabled,则仅当当前模型的提供商是 xai 且 xAI 凭据已解析时,x_search 才会被暴露。对于提供商已知且非 xAI 的当前模型,将 plugins.entries.xai.config.xSearch.enabled 设置为 true,即可启用跨提供商使用。如果当前模型提供商缺失或未解析,则该工具保持隐藏。将 enabled 设为 false 可对所有提供商禁用它。始终需要 xAI 凭据。
plugins.entries.xai.config.xSearch.baseUrl 已设置时,x_search 会将请求发送到 <baseUrl>/responses。如果省略该字段,则会回退到 plugins.entries.xai.config.webSearch.baseUrl,再回退到公开的 xAI 端点(https://api.x.ai/v1)。

x_search 参数

allowed_x_handlesexcluded_x_handles 互斥。

x_search example

示例

工具配置文件

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

相关内容

  • Web Fetch — 获取 URL 并提取可读内容
  • Web Browser — 针对 JS 密集型网站的完整浏览器自动化
  • Grok Search — 将 Grok 作为 web_search 提供商
  • Ollama Web Search — 通过你的 Ollama 主机进行免密钥网页搜索