Tools

Búsqueda web

web_search busca en la web con el proveedor configurado y devuelve resultados normalizados, almacenados en caché por consulta durante 15 minutos (configurable). OpenClaw también incluye x_search para publicaciones de X (antes Twitter) y web_fetch para la obtención ligera de URL. web_fetch siempre se ejecuta localmente; web_search se enruta mediante xAI Responses cuando Grok es el proveedor, y x_search siempre usa xAI Responses.

Inicio rápido

  • Elegir un proveedor

    Elija un proveedor y complete la configuración necesaria. Algunos proveedores no requieren clave; otros necesitan una clave de API. Consulte las páginas de los proveedores que aparecen a continuación para obtener más información.

  • Configurar

    bash
    openclaw configure --section web

    Esto almacena el proveedor y las credenciales necesarias. Para los proveedores respaldados por API, también puede establecer la variable de entorno del proveedor (por ejemplo, BRAVE_API_KEY) y omitir este paso.

  • Usarlo

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

    Para publicaciones de X:

    javascript
    await x_search({ query: "dinner recipes" });
  • Elegir un proveedor

    Brave Search

    Resultados estructurados con fragmentos. Admite el modo llm-context y filtros de país e idioma. Hay un nivel gratuito disponible.

    Codex Hosted Search

    Respuestas fundamentadas y sintetizadas por IA mediante la cuenta del servidor de aplicaciones de Codex.

    DuckDuckGo

    Proveedor sin clave. No se necesita una clave de API. Integración no oficial basada en HTML.

    Exa

    Búsqueda neuronal y por palabras clave con extracción de contenido (elementos destacados, texto y resúmenes).

    Firecrawl

    Resultados estructurados. Funciona mejor junto con firecrawl_search y firecrawl_scrape para una extracción exhaustiva.

    Gemini

    Respuestas sintetizadas por IA con citas mediante la fundamentación de Google Search.

    Grok

    Respuestas sintetizadas por IA con citas mediante la fundamentación web de xAI.

    Kimi

    Respuestas sintetizadas por IA con citas mediante la búsqueda web de Moonshot; los mecanismos de reserva de chat sin fundamentación fallan explícitamente.

    MiniMax Search

    Resultados estructurados mediante la API de búsqueda de MiniMax Token Plan.

    Ollama Web Search

    Búsqueda mediante un host local de Ollama con sesión iniciada o la API alojada de Ollama.

    Parallel

    API de pago de Parallel Search (PARALLEL_API_KEY); límites de frecuencia más altos y ajuste de objetivos.

    Parallel Search (gratuita)

    Opción voluntaria sin clave. Search MCP gratuito de Parallel, con fragmentos densos optimizados para LLM y sin clave de API.

    Perplexity

    Resultados estructurados con controles de extracción de contenido y filtrado por dominios.

    SearXNG

    Metabúsqueda autoalojada. No se necesita una clave de API. Agrega Google, Bing, DuckDuckGo y otros servicios.

    Tavily

    Resultados estructurados con profundidad de búsqueda, filtrado por temas y tavily_extract para la extracción de URL.

    Comparación de proveedores

    Proveedor Estilo de los resultados Filtros Clave de API
    Brave Fragmentos estructurados País, idioma, tiempo, modo llm-context BRAVE_API_KEY
    Codex Hosted Search Síntesis mediante IA + URL de las fuentes Dominios, tamaño del contexto, ubicación del usuario Ninguna; usa el inicio de sesión de Codex/OpenAI
    DuckDuckGo Fragmentos estructurados -- Ninguna (sin clave)
    Exa Estructurados + extraídos Modo neuronal/por palabras clave, fecha, extracción de contenido EXA_API_KEY
    Firecrawl Fragmentos estructurados Mediante la herramienta firecrawl_search FIRECRAWL_API_KEY
    Gemini Síntesis mediante IA + citas -- GEMINI_API_KEY
    Grok Síntesis mediante IA + citas -- OAuth de xAI, XAI_API_KEY o plugins.entries.xai.config.webSearch.apiKey
    Kimi Síntesis mediante IA + citas; falla con mecanismos de reserva de chat sin fundamentación -- KIMI_API_KEY / MOONSHOT_API_KEY
    MiniMax Search Fragmentos estructurados Región (global / cn) MINIMAX_CODE_PLAN_KEY / MINIMAX_CODING_API_KEY / MINIMAX_OAUTH_TOKEN
    Ollama Web Search Fragmentos estructurados -- Ninguna para hosts locales con sesión iniciada; OLLAMA_API_KEY para búsquedas directas mediante https://ollama.com
    Parallel Fragmentos densos clasificados para el contexto de LLM -- PARALLEL_API_KEY (de pago)
    Parallel Search (gratuita) Fragmentos densos clasificados para el contexto de LLM -- Ninguna (Search MCP gratuito)
    Perplexity Fragmentos estructurados País, idioma, tiempo, dominios, límites de contenido PERPLEXITY_API_KEY / OPENROUTER_API_KEY
    SearXNG Fragmentos estructurados Categorías, idioma Ninguna (autoalojado)
    Tavily Fragmentos estructurados Mediante la herramienta tavily_search TAVILY_API_KEY

    Estructura de los resultados

    web_search normaliza todos los proveedores de plugins incluidos y externos en el límite de la herramienta principal. Los invocadores reciben exactamente una de estas estructuras cerradas:

    typescript
    type WebSearchOutput =  | {      kind: "error";      provider: string;      error: "provider_error";      message: string;      docs?: string;    }  | {      kind: "results";      provider: string;      query: string;      count: number;      tookMs?: number;      results: Array<{        title: string;        url: string;        snippet?: string;        published?: string;        siteName?: string;      }>;      externalContent: {        untrusted: true;        source: "web_search";        wrapped: true;        provider: string;      };      cached?: true;    }  | {      kind: "answer";      provider: string;      query: string;      tookMs?: number;      content: string;      citations?: Array<{ url: string; title?: string }>;      externalContent: {        untrusted: true;        source: "web_search";        wrapped: true;        provider: string;      };      cached?: true;    }  | {      kind: "raw";      provider: string;      data: unknown;    };

    Los proveedores estructurados usan kind: "results"; los proveedores sintetizados usan kind: "answer". Los proveedores de plugins externos cuyas cargas no coinciden con ninguna estructura se transmiten literalmente como kind: "raw" por compatibilidad. Los campos específicos del proveedor, como puntuaciones sin procesar, fragmentos, búsquedas relacionadas, desplazamientos de citas insertadas, identificadores de modelos o metadatos de sesión, no se transmiten en las ramas normalizadas. Use la herramienta específica de un proveedor cuando su respuesta más detallada forme parte del flujo de trabajo.

    externalContent.wrapped: true es un marcador de confianza cuya veracidad garantiza el propio límite: el texto del proveedor (title, snippet, siteName, content, títulos de citas y message de errores) se limpia de cualquier línea de envoltura preexistente y se vuelve a envolver exactamente una vez en el límite principal, por lo que ningún metadato del proveedor puede suplantar el marcador. query siempre es la consulta solicitada, las URL de citas y resultados deben poder analizarse como http(s), published debe tener formato de fecha ISO, las URL se emiten canonizadas y una carga que contiene una clave error siempre se notifica como kind: "error", conservando el código original del proveedor dentro del mensaje envuelto. Las cargas transmitidas sin procesar conservan los marcadores establecidos por el proveedor.

    Detección automática

    Las listas de proveedores de la documentación y los flujos de configuración siguen un orden alfabético. La detección automática usa un orden de precedencia fijo e independiente, y solo selecciona un proveedor que necesita una credencial (requiresCredential !== false) cuando encuentra una configurada. Si no se establece provider, OpenClaw comprueba los proveedores en este orden y usa el primero que esté listo:

    Primero, los proveedores respaldados por API:

    1. Brave -- BRAVE_API_KEY o plugins.entries.brave.config.webSearch.apiKey (orden 10)
    2. MiniMax Search -- MINIMAX_CODE_PLAN_KEY / MINIMAX_CODING_API_KEY / MINIMAX_OAUTH_TOKEN / MINIMAX_API_KEY o plugins.entries.minimax.config.webSearch.apiKey (orden 15)
    3. Gemini -- plugins.entries.google.config.webSearch.apiKey, GEMINI_API_KEY o models.providers.google.apiKey (orden 20)
    4. Grok -- OAuth de xAI, XAI_API_KEY o plugins.entries.xai.config.webSearch.apiKey (orden 30)
    5. Kimi -- KIMI_API_KEY / MOONSHOT_API_KEY o plugins.entries.moonshot.config.webSearch.apiKey (orden 40)
    6. Perplexity -- PERPLEXITY_API_KEY / OPENROUTER_API_KEY o plugins.entries.perplexity.config.webSearch.apiKey (orden 50)
    7. Firecrawl -- FIRECRAWL_API_KEY o plugins.entries.firecrawl.config.webSearch.apiKey (orden 60)
    8. Exa -- EXA_API_KEY o plugins.entries.exa.config.webSearch.apiKey; el valor opcional plugins.entries.exa.config.webSearch.baseUrl sustituye el endpoint de Exa (orden 65)
    9. Tavily -- TAVILY_API_KEY o plugins.entries.tavily.config.webSearch.apiKey (orden 70)
    10. Parallel -- API de pago Parallel Search mediante PARALLEL_API_KEY o plugins.entries.parallel.config.webSearch.apiKey; el valor opcional plugins.entries.parallel.config.webSearch.baseUrl sustituye el endpoint (orden 75)

    A continuación, los proveedores de endpoints configurados:

    1. SearXNG -- SEARXNG_BASE_URL o plugins.entries.searxng.config.webSearch.baseUrl (orden 200)

    Los proveedores sin clave, como Parallel Search (Free), DuckDuckGo, Ollama Web Search y Codex Hosted Search, nunca prevalecen en la detección automática, aunque tengan un valor de orden interno. Solo se utilizan cuando se seleccionan explícitamente con tools.web.search.provider o mediante openclaw configure --section web. OpenClaw no envía consultas administradas de web_search a un proveedor sin clave únicamente porque no haya ningún proveedor respaldado por API configurado.

    Los modelos OpenAI Responses son una excepción: mientras tools.web.search.provider no esté definido, utilizan la búsqueda web nativa de OpenAI en lugar de los proveedores administrados anteriores (véase más adelante). Defina tools.web.search.provider como parallel-free (u otro proveedor) para dirigirlos, en cambio, por la ruta administrada.

    Búsqueda web nativa de OpenAI

    Los modelos OpenAI Responses directos (api: "openai-responses", proveedor openai, sin URL base o con una URL base oficial de la API de OpenAI) utilizan automáticamente la herramienta web_search alojada por OpenAI cuando la búsqueda web de OpenClaw está habilitada y no hay ningún proveedor administrado fijado. Este comportamiento pertenece al proveedor en el Plugin de OpenAI incluido y no se aplica a las URL base de proxies compatibles con OpenAI ni a las rutas de Azure. Defina tools.web.search.provider como otro proveedor, por ejemplo brave, para mantener la herramienta web_search administrada para los modelos de OpenAI, o defina tools.web.search.enabled: false para deshabilitar tanto la búsqueda administrada como la búsqueda nativa de OpenAI.

    Búsqueda web nativa de Codex

    El entorno de ejecución app-server de Codex utiliza automáticamente la herramienta web_search alojada por Codex cuando la búsqueda web está habilitada y no se ha seleccionado ningún proveedor administrado. La búsqueda alojada nativa y la herramienta dinámica web_search administrada de OpenClaw son mutuamente excluyentes, por lo que la búsqueda administrada no puede eludir las restricciones de dominios nativas. OpenClaw utiliza la herramienta administrada cuando la búsqueda alojada no está disponible, está deshabilitada explícitamente o se sustituye por un proveedor administrado seleccionado. OpenClaw mantiene deshabilitada la extensión independiente web.run de Codex (features.standalone_web_search: false) porque el tráfico de app-server de producción rechaza su espacio de nombres web definido por el usuario.

    • Configure la búsqueda nativa bajo tools.web.search.openaiCodex
    • Defina tools.web.search.provider: "codex" para proporcionar Codex Hosted Search como el proveedor web_search administrado para cualquier modelo principal. Cada llamada ejecuta un turno efímero y acotado del app-server de Codex y falla si Codex no emite un elemento webSearch alojado.
    • mode: "cached" es la preferencia predeterminada, pero Codex la resuelve como acceso externo en vivo para los turnos de app-server sin restricciones; defina "live" para solicitar explícitamente acceso en vivo.
    • Defina tools.web.search.provider como un proveedor administrado, por ejemplo brave, para utilizar en su lugar el web_search administrado de OpenClaw.
    • Defina tools.web.search.openaiCodex.enabled: false para excluirse de la búsqueda alojada por Codex; los demás proveedores administrados seguirán disponibles.
    • Restringir la superficie de herramientas nativas de Codex también mantiene disponible el web_search administrado.
    • Cuando se define allowedDomains, la alternativa administrada automática falla de forma cerrada si la búsqueda alojada no está disponible, de modo que no se pueda eludir la lista de permitidos nativa.
    • Las ejecuciones solo con LLM y herramientas deshabilitadas deshabilitan tanto la búsqueda nativa como la administrada.
    • tools.web.search.enabled: false deshabilita tanto la búsqueda administrada como la nativa.

    Los cambios persistentes en la política efectiva de búsqueda de Codex inician un nuevo hilo vinculado para que un hilo de app-server ya cargado no pueda conservar un acceso obsoleto a la búsqueda alojada. Las restricciones transitorias por turno utilizan un hilo restringido temporal y conservan la vinculación existente para reanudarla posteriormente.

    El tráfico directo de OpenAI ChatGPT Responses también puede utilizar la herramienta web_search alojada por OpenAI. Esa ruta independiente sigue siendo opcional mediante tools.web.search.openaiCodex.enabled: true y solo se aplica a los modelos openai/* aptos que utilizan api: "openai-chatgpt-responses".

    json5
    {  tools: {    web: {      search: {        enabled: true,        // Opcional: utilizar Codex Hosted Search también desde modelos principales que no sean Codex.        provider: "codex",        openaiCodex: {          enabled: true,          mode: "cached",          allowedDomains: ["example.com"],          contextSize: "high",          userLocation: {            country: "US",            city: "New York",            timezone: "America/New_York",          },        },      },    },  },}

    Para los entornos de ejecución y proveedores que no admiten la búsqueda nativa de Codex, Codex puede utilizar la alternativa web_search administrada mediante el espacio de nombres de herramientas dinámicas de OpenClaw. Utilice un proveedor administrado explícito cuando necesite los controles de red específicos del proveedor de OpenClaw en lugar de la búsqueda alojada por Codex.

    Seleccionar provider: "codex" habilita el Plugin codex incluido y utiliza las mismas restricciones tools.web.search.openaiCodex mostradas anteriormente. Primero autentique el app-server de Codex con openclaw models auth login --provider openai. El agente principal puede utilizar cualquier modelo o entorno de ejecución; solo el trabajador de búsqueda acotado se ejecuta mediante Codex.

    Seguridad de la red

    Las llamadas administradas de proveedores HTTP web_search utilizan la ruta de obtención protegida de OpenClaw, limitada al nombre de host propio del proveedor actual. Solo para ese nombre de host, OpenClaw permite respuestas DNS de IP falsas de Surge, Clash y sing-box en 198.18.0.0/15 y fc00::/7. Los demás destinos privados, de bucle invertido, locales de enlace y de metadatos permanecen bloqueados. Codex Hosted Search es la excepción: su trabajador acotado delega el acceso a la red en la herramienta web_search alojada del app-server de Codex.

    Esta concesión automática no se aplica a URL web_fetch arbitrarias. Para web_fetch, habilite tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRange y tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange explícitamente solo cuando el proxy de confianza controle esos intervalos sintéticos.

    Configuración

    json5
    {  tools: {    web: {      search: {        enabled: true, // predeterminado: true        provider: "brave", // u omitir para la detección automática        maxResults: 5,        timeoutSeconds: 30,        cacheTtlMinutes: 15,      },    },  },}

    La configuración específica de cada proveedor (claves de API, URL base y modos) se encuentra bajo plugins.entries.<plugin>.config.webSearch.*. Gemini también puede reutilizar models.providers.google.apiKey y models.providers.google.baseUrl como alternativas de menor prioridad después de su configuración dedicada de búsqueda web y GEMINI_API_KEY. Consulte las páginas de los proveedores para ver ejemplos. Grok también puede reutilizar un perfil de autenticación OAuth de xAI de openclaw models auth login --provider xai --method oauth; la configuración mediante clave de API sigue siendo la alternativa.

    tools.web.search.provider se valida con los identificadores de proveedores de búsqueda web declarados por los manifiestos de Plugins incluidos e instalados. Un error tipográfico como "brvae" provoca un error de validación de la configuración en lugar de recurrir silenciosamente a la detección automática. Si un proveedor configurado solo tiene indicios obsoletos del Plugin, como un bloque plugins.entries.<plugin> sobrante después de desinstalar un Plugin de terceros, OpenClaw mantiene un inicio resiliente e informa de una advertencia para que se pueda reinstalar el Plugin o ejecutar openclaw doctor --fix a fin de limpiar la configuración obsoleta.

    La selección del proveedor alternativo de web_fetch es independiente:

    • elíjalo con tools.web.fetch.provider
    • o bien omita ese campo y permita que OpenClaw detecte automáticamente el primer proveedor de obtención web disponible entre las credenciales configuradas.
    • El web_fetch sin entorno aislado puede utilizar proveedores de Plugins instalados que declaren contracts.webFetchProviders; las obtenciones en entornos aislados permiten proveedores incluidos e instalaciones verificadas de Plugins oficiales, pero excluyen los Plugins externos de terceros.
    • El Plugin oficial Firecrawl es actualmente el único colaborador incluido de webFetchProviders, configurado bajo plugins.entries.firecrawl.config.webFetch.*.

    Cuando se elige Kimi durante openclaw onboard o openclaw configure --section web, OpenClaw también puede solicitar:

    • la región de la API de Moonshot (https://api.moonshot.ai/v1 o https://api.moonshot.cn/v1)
    • el modelo de búsqueda web predeterminado de Kimi (el valor predeterminado es kimi-k2.6)

    Para x_search, configure plugins.entries.xai.config.xSearch.*. Utiliza el mismo perfil de autenticación de xAI que el chat, o la credencial XAI_API_KEY / de búsqueda web del Plugin utilizada por la búsqueda web de Grok. La configuración heredada tools.web.x_search.* se migra automáticamente mediante openclaw doctor --fix. Cuando se elige Grok durante openclaw onboard o openclaw configure --section web, OpenClaw también ofrece la configuración opcional de x_search con la misma credencial justo después de completar la configuración de Grok. Este es un paso posterior independiente dentro de la ruta de Grok, no una opción independiente de proveedor de búsqueda web de nivel superior. Si se elige otro proveedor, OpenClaw no muestra la solicitud x_search.

    Almacenamiento de claves de API

    Archivo de configuración

    Ejecute openclaw configure --section web o defina la clave directamente:

    json5
    {  plugins: {    entries: {      brave: {        config: {          webSearch: {            apiKey: "YOUR_KEY", // pragma: allowlist secret          },        },      },    },  },}

    Variable de entorno

    Defina la variable de entorno del proveedor en el entorno del proceso del Gateway:

    bash
    export BRAVE_API_KEY="YOUR_KEY"

    Para una instalación del Gateway, colóquela en ~/.openclaw/.env. Consulte Variables de entorno.

    Parámetros de la herramienta

    Parámetro Descripción
    query Consulta de búsqueda (obligatoria)
    count Resultados que se devolverán (1-10, valor predeterminado: 5)
    country Código de país ISO de 2 letras (p. ej., "US", "DE")
    language Código de idioma ISO 639-1 (p. ej., "en", "de")
    search_lang Código del idioma de búsqueda (solo Brave)
    freshness Filtro temporal: day, week, month o year
    date_after Resultados posteriores a esta fecha (AAAA-MM-DD)
    date_before Resultados anteriores a esta fecha (AAAA-MM-DD)
    ui_lang Código de idioma de la interfaz (solo Brave)
    domain_filter Matriz de dominios permitidos/denegados (solo Perplexity)
    max_tokens Presupuesto total de tokens de contenido, solo para la API nativa de búsqueda de Perplexity
    max_tokens_per_page Límite de tokens de extracción por página, solo para la API nativa de búsqueda de Perplexity

    x_search consulta publicaciones de X (anteriormente Twitter) mediante xAI y devuelve respuestas sintetizadas por IA con citas. Acepta consultas en lenguaje natural y filtros estructurados opcionales. OpenClaw crea la herramienta x_search integrada de xAI para cada solicitud, en lugar de mantenerla registrada permanentemente, por lo que solo está activa durante el turno que realmente la invoca.

    Si se omite enabled, x_search solo se expone cuando el proveedor del modelo activo es xai y se pueden resolver las credenciales de xAI. Para un modelo activo con un proveedor conocido que no sea xAI, establezca plugins.entries.xai.config.xSearch.enabled en true para habilitar su uso entre proveedores. Si falta el proveedor del modelo activo o no puede resolverse, la herramienta permanece oculta. Establezca enabled en false para deshabilitarla para todos los proveedores. Las credenciales de xAI son siempre obligatorias.

    json5
    {  plugins: {    entries: {      xai: {        config: {          xSearch: {            enabled: true, // obligatorio para un proveedor conocido de modelos que no sea xAI            model: "grok-4.3",            baseUrl: "https://api.x.ai/v1", // opcional, reemplaza webSearch.baseUrl            inlineCitations: false,            maxTurns: 2,            timeoutSeconds: 30,            cacheTtlMinutes: 15,          },          webSearch: {            apiKey: "xai-...", // opcional si se ha configurado un perfil de autenticación de xAI o XAI_API_KEY            baseUrl: "https://api.x.ai/v1", // URL base opcional compartida de Responses de xAI          },        },      },    },  },}

    x_search envía solicitudes POST a <baseUrl>/responses cuando se establece plugins.entries.xai.config.xSearch.baseUrl. Si se omite ese campo, se recurre a plugins.entries.xai.config.webSearch.baseUrl y, después, al endpoint público de xAI (https://api.x.ai/v1).

    Parámetro Descripción
    query Consulta de búsqueda (obligatoria)
    allowed_x_handles Restringir los resultados a un máximo de 20 nombres de usuario de X
    excluded_x_handles Excluir un máximo de 20 nombres de usuario de X
    from_date Incluir solo publicaciones de esta fecha o posteriores (AAAA-MM-DD)
    to_date Incluir solo publicaciones de esta fecha o anteriores (AAAA-MM-DD)
    enable_image_understanding Permitir que xAI examine imágenes adjuntas a las publicaciones coincidentes
    enable_video_understanding Permitir que xAI examine vídeos adjuntos a las publicaciones coincidentes

    allowed_x_handles y excluded_x_handles son mutuamente excluyentes.

    javascript
    await x_search({  query: "recetas para la cena",  allowed_x_handles: ["nytfood"],  from_date: "2026-03-01",});
    javascript
    // Estadísticas por publicación: utilice la URL exacta del estado o el ID de estado cuando sea posibleawait x_search({  query: "https://x.com/huntharo/status/1905678901234567890",});

    Ejemplos

    javascript
    // Búsqueda básicaawait web_search({ query: "SDK de plugins de OpenClaw" }); // Búsqueda específica para alemánawait web_search({ query: "ver televisión en línea", country: "DE", language: "de" }); // Resultados recientes (última semana)await web_search({ query: "avances en IA", freshness: "week" }); // Intervalo de fechasawait web_search({  query: "investigación climática",  date_after: "2024-01-01",  date_before: "2024-06-30",}); // Filtrado de dominios (solo Perplexity)await web_search({  query: "reseñas de productos",  domain_filter: ["-reddit.com", "-pinterest.com"],});

    Perfiles de herramientas

    Si se utilizan perfiles de herramientas o listas de permitidos, añada web_search, x_search o group:web:

    json5
    {  tools: {    allow: ["web_search", "x_search"],    // o bien: allow: ["group:web"]  (incluye web_search, x_search y web_fetch)  },}

    Temas relacionados

    Was this useful?
    On this page

    On this page