Tools
Ricerca sul web
web_search cerca sul web con il provider configurato e restituisce
risultati normalizzati, memorizzati nella cache per query per 15 minuti (configurabile). OpenClaw
include anche x_search per i post su X (precedentemente Twitter) e web_fetch per il
recupero leggero di URL. web_fetch viene sempre eseguito localmente; web_search viene instradato
tramite xAI Responses quando Grok è il provider, mentre x_search usa sempre
xAI Responses.
Avvio rapido
Scegli un provider
Scegli un provider e completa l'eventuale configurazione richiesta. Alcuni provider non richiedono chiavi, mentre altri necessitano di una chiave API. Consulta le pagine dei provider riportate di seguito per i dettagli.
Configura
openclaw configure --section webQuesto comando memorizza il provider e le eventuali credenziali necessarie. Per i provider
basati su API, puoi invece impostare la variabile di ambiente del provider (ad esempio
BRAVE_API_KEY) e saltare questo passaggio.
Usalo
await web_search({ query: "OpenClaw plugin SDK" });Per i post su X:
await x_search({ query: "dinner recipes" });Scelta di un provider
Risultati strutturati con estratti. Supporta la modalità llm-context e i filtri per paese e lingua. È disponibile un piano gratuito.
Risposte sintetizzate dall'IA e basate su fonti tramite il tuo account del server dell'app Codex.
Provider senza chiave. Non è necessaria alcuna chiave API. Integrazione non ufficiale basata su HTML.
Ricerca neurale e per parole chiave con estrazione dei contenuti (parti evidenziate, testo e riepiloghi).
Risultati strutturati. Offre i risultati migliori in abbinamento a firecrawl_search e firecrawl_scrape per un'estrazione approfondita.
Risposte sintetizzate dall'IA con citazioni tramite l'ancoraggio a Google Search.
Risposte sintetizzate dall'IA con citazioni tramite l'ancoraggio web di xAI.
Risposte sintetizzate dall'IA con citazioni tramite la ricerca web di Moonshot; i fallback alla chat non ancorata generano esplicitamente un errore.
Risultati strutturati tramite l'API di ricerca del piano MiniMax Token.
Ricerca tramite un host Ollama locale con accesso effettuato oppure tramite l'API Ollama ospitata.
API Parallel Search a pagamento (PARALLEL_API_KEY); limiti di frequenza più elevati e ottimizzazione degli obiettivi.
Opzione senza chiave da attivare esplicitamente. Search MCP gratuito di Parallel, con estratti densi ottimizzati per gli LLM e senza chiave API.
Risultati strutturati con controlli per l'estrazione dei contenuti e filtri per dominio.
Metamotore di ricerca ospitato autonomamente. Non è necessaria alcuna chiave API. Aggrega Google, Bing, DuckDuckGo e altri servizi.
Risultati strutturati con profondità di ricerca, filtri per argomento e tavily_extract per l'estrazione dagli URL.
Confronto tra provider
| Provider | Stile dei risultati | Filtri | Chiave API |
|---|---|---|---|
| Brave | Estratti strutturati | Paese, lingua, periodo, modalità llm-context |
BRAVE_API_KEY |
| Codex Hosted Search | Sintesi tramite IA + URL delle fonti | Domini, dimensione del contesto, posizione dell'utente | Nessuna; usa l'accesso Codex/OpenAI |
| DuckDuckGo | Estratti strutturati | -- | Nessuna (senza chiave) |
| Exa | Risultati strutturati + contenuti estratti | Modalità neurale/per parole chiave, data, estrazione dei contenuti | EXA_API_KEY |
| Firecrawl | Estratti strutturati | Tramite lo strumento firecrawl_search |
FIRECRAWL_API_KEY |
| Gemini | Sintesi tramite IA + citazioni | -- | GEMINI_API_KEY |
| Grok | Sintesi tramite IA + citazioni | -- | OAuth xAI, XAI_API_KEY o plugins.entries.xai.config.webSearch.apiKey |
| Kimi | Sintesi tramite IA + citazioni; errore in caso di fallback alla chat non ancorata | -- | KIMI_API_KEY / MOONSHOT_API_KEY |
| MiniMax Search | Estratti strutturati | Regione (global / cn) |
MINIMAX_CODE_PLAN_KEY / MINIMAX_CODING_API_KEY / MINIMAX_OAUTH_TOKEN |
| Ollama Web Search | Estratti strutturati | -- | Nessuna per gli host locali con accesso effettuato; OLLAMA_API_KEY per la ricerca diretta su https://ollama.com |
| Parallel | Estratti densi classificati per il contesto degli LLM | -- | PARALLEL_API_KEY (a pagamento) |
| Parallel Search (Free) | Estratti densi classificati per il contesto degli LLM | -- | Nessuna (Search MCP gratuito) |
| Perplexity | Estratti strutturati | Paese, lingua, periodo, domini, limiti dei contenuti | PERPLEXITY_API_KEY / OPENROUTER_API_KEY |
| SearXNG | Estratti strutturati | Categorie, lingua | Nessuna (ospitato autonomamente) |
| Tavily | Estratti strutturati | Tramite lo strumento tavily_search |
TAVILY_API_KEY |
Rilevamento automatico
Gli elenchi dei provider nella documentazione e nei flussi di configurazione sono in ordine alfabetico. Il rilevamento automatico usa un
ordine di precedenza separato e fisso e seleziona un provider che richiede una
credenziale (requiresCredential !== false) solo quando ne trova uno configurato. Se
non è impostato alcun provider, OpenClaw controlla i provider nell'ordine seguente e usa il
primo pronto:
Prima i provider basati su API:
- Brave --
BRAVE_API_KEYoplugins.entries.brave.config.webSearch.apiKey(ordine 10) - MiniMax Search --
MINIMAX_CODE_PLAN_KEY/MINIMAX_CODING_API_KEY/MINIMAX_OAUTH_TOKEN/MINIMAX_API_KEYoplugins.entries.minimax.config.webSearch.apiKey(ordine 15) - Gemini --
plugins.entries.google.config.webSearch.apiKey,GEMINI_API_KEYomodels.providers.google.apiKey(ordine 20) - Grok -- OAuth xAI,
XAI_API_KEYoplugins.entries.xai.config.webSearch.apiKey(ordine 30) - Kimi --
KIMI_API_KEY/MOONSHOT_API_KEYoplugins.entries.moonshot.config.webSearch.apiKey(ordine 40) - Perplexity --
PERPLEXITY_API_KEY/OPENROUTER_API_KEYoplugins.entries.perplexity.config.webSearch.apiKey(ordine 50) - Firecrawl --
FIRECRAWL_API_KEYoplugins.entries.firecrawl.config.webSearch.apiKey(ordine 60) - Exa --
EXA_API_KEYoplugins.entries.exa.config.webSearch.apiKey; il valore facoltativoplugins.entries.exa.config.webSearch.baseUrlsostituisce l'endpoint Exa (ordine 65) - Tavily --
TAVILY_API_KEYoplugins.entries.tavily.config.webSearch.apiKey(ordine 70) - Parallel -- API Parallel Search a pagamento tramite
PARALLEL_API_KEYoplugins.entries.parallel.config.webSearch.apiKey; il valore facoltativoplugins.entries.parallel.config.webSearch.baseUrlsostituisce l'endpoint (ordine 75)
Successivamente, i provider con endpoint configurato:
- SearXNG --
SEARXNG_BASE_URLoplugins.entries.searxng.config.webSearch.baseUrl(ordine 200)
I provider senza chiave, come Parallel Search (Free), DuckDuckGo,
Ollama Web Search e Codex Hosted Search, non prevalgono mai nel rilevamento automatico,
anche se dispongono di un valore di ordinamento interno. Vengono usati solo quando li
selezioni esplicitamente con tools.web.search.provider o tramite
openclaw configure --section web. OpenClaw non invia le query gestite di
web_search a un provider senza chiave solo perché non è configurato alcun provider
basato su API.
I modelli OpenAI Responses costituiscono un'eccezione: quando tools.web.search.provider
non è impostato, usano la ricerca web nativa di OpenAI anziché i provider gestiti
sopra elencati (vedi sotto). Imposta tools.web.search.provider su
parallel-free (o su un altro provider) per instradarli invece attraverso il percorso gestito.
Ricerca web nativa di OpenAI
I modelli OpenAI Responses diretti (api: "openai-responses", provider openai,
senza URL di base oppure con un URL di base ufficiale dell'API OpenAI) usano
automaticamente lo strumento web_search ospitato da OpenAI quando la ricerca
web di OpenClaw è abilitata e non è stato selezionato esplicitamente alcun
provider gestito. Questo comportamento appartiene al provider nel plugin
OpenAI incluso e non si applica agli URL di base di proxy compatibili con
OpenAI né alle route Azure. Imposta tools.web.search.provider su un altro
provider, come brave, per mantenere lo strumento web_search gestito per i
modelli OpenAI, oppure imposta tools.web.search.enabled: false per
disabilitare sia la ricerca gestita sia quella nativa di OpenAI.
Ricerca web nativa di Codex
Il runtime app-server di Codex usa automaticamente lo strumento web_search
ospitato da Codex quando la ricerca web è abilitata e non è selezionato alcun
provider gestito. La ricerca nativa ospitata e lo strumento dinamico
web_search gestito da OpenClaw si escludono a vicenda, quindi la ricerca
gestita non può aggirare le restrizioni sui domini della ricerca nativa.
OpenClaw usa lo strumento gestito quando la ricerca ospitata non è disponibile,
è disabilitata esplicitamente oppure viene sostituita da un provider gestito
selezionato. OpenClaw mantiene disabilitata l'estensione autonoma web.run di
Codex (features.standalone_web_search: false) perché il traffico app-server
di produzione rifiuta il namespace web definito dall'utente.
- Configura la ricerca nativa in
tools.web.search.openaiCodex - Imposta
tools.web.search.provider: "codex"per predisporre Codex Hosted Search come providerweb_searchgestito per qualsiasi modello padre. Ogni chiamata esegue un turno effimero e limitato dell'app-server di Codex e non riesce se Codex non emette un elementowebSearchospitato. mode: "cached"è la preferenza predefinita, ma Codex la risolve in accesso esterno in tempo reale per i turni app-server senza restrizioni; imposta"live"per richiedere esplicitamente l'accesso in tempo reale- Imposta
tools.web.search.providersu un provider gestito, comebrave, per usare inveceweb_searchgestito da OpenClaw - Imposta
tools.web.search.openaiCodex.enabled: falseper rinunciare alla ricerca ospitata da Codex; gli altri provider gestiti rimangono disponibili - Limitando la superficie degli strumenti nativi di Codex, anche
web_searchgestito rimane disponibile - Quando è impostato
allowedDomains, il fallback gestito automatico si interrompe in modo sicuro se la ricerca ospitata non è disponibile, in modo che l'elenco di domini consentiti nativo non possa essere aggirato - Le esecuzioni basate soltanto sull'LLM con gli strumenti disabilitati disabilitano sia la ricerca nativa sia quella gestita
tools.web.search.enabled: falsedisabilita sia la ricerca gestita sia quella nativa
Le modifiche persistenti ai criteri di ricerca effettivi di Codex avviano un nuovo thread associato, affinché un thread app-server già caricato non possa mantenere un accesso obsoleto alla ricerca ospitata. Le restrizioni transitorie per singolo turno usano un thread temporaneo con restrizioni e conservano l'associazione esistente per la successiva ripresa.
Anche il traffico OpenAI ChatGPT Responses diretto può usare lo strumento
web_search ospitato da OpenAI. Questo percorso separato rimane facoltativo
tramite tools.web.search.openaiCodex.enabled: true e si applica soltanto ai
modelli openai/* idonei che usano api: "openai-chatgpt-responses".
{ tools: { web: { search: { enabled: true, // Optional: use Codex Hosted Search from non-Codex parent models too. provider: "codex", openaiCodex: { enabled: true, mode: "cached", allowedDomains: ["example.com"], contextSize: "high", userLocation: { country: "US", city: "New York", timezone: "America/New_York", }, }, }, }, },}Per i runtime e i provider che non supportano la ricerca nativa di Codex,
Codex può usare il fallback web_search gestito tramite il namespace dinamico
degli strumenti di OpenClaw. Usa un provider gestito esplicito quando ti
servono i controlli di rete specifici del provider di OpenClaw anziché la
ricerca ospitata da Codex.
La selezione di provider: "codex" abilita il plugin codex incluso e usa le
stesse restrizioni tools.web.search.openaiCodex mostrate sopra. Autentica
prima l'app-server di Codex con openclaw models auth login --provider openai.
L'agente padre può usare qualsiasi modello o runtime; soltanto il worker di
ricerca limitato viene eseguito tramite Codex.
Sicurezza della rete
Le chiamate HTTP dei provider web_search gestiti usano il percorso di
recupero protetto di OpenClaw, limitato al nome host del provider corrente.
Soltanto per tale nome host, OpenClaw consente le risposte DNS fake-IP di
Surge, Clash e sing-box negli intervalli 198.18.0.0/15 e fc00::/7. Le altre
destinazioni private, local loopback, link-local e di metadati rimangono
bloccate. Codex Hosted Search costituisce l'eccezione: il suo worker limitato
delega l'accesso alla rete allo strumento web_search ospitato dall'app-server
di Codex.
Questa autorizzazione automatica non si applica agli URL web_fetch arbitrari.
Per web_fetch, abilita esplicitamente
tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRange e
tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange soltanto quando il tuo
proxy attendibile gestisce tali intervalli sintetici.
Configurazione
{ tools: { web: { search: { enabled: true, // default: true provider: "brave", // or omit for auto-detection maxResults: 5, timeoutSeconds: 30, cacheTtlMinutes: 15, }, }, },}La configurazione specifica del provider (chiavi API, URL di base, modalità) si
trova in plugins.entries.<plugin>.config.webSearch.*. Gemini può inoltre
riutilizzare models.providers.google.apiKey e
models.providers.google.baseUrl come fallback con priorità inferiore, dopo
la propria configurazione dedicata alla ricerca web e GEMINI_API_KEY. Per
alcuni esempi, consulta le pagine dei provider.
Grok può inoltre riutilizzare un profilo di autenticazione OAuth xAI ottenuto
con openclaw models auth login --provider xai --method oauth; la
configurazione tramite chiave API rimane il fallback.
tools.web.search.provider viene convalidato rispetto agli ID dei provider di
ricerca web dichiarati dai manifest dei plugin inclusi e installati. Un errore
di battitura come "brvae" causa il fallimento della convalida della
configurazione anziché ricorrere silenziosamente al rilevamento automatico. Se
per un provider configurato rimangono soltanto dati obsoleti del plugin, come
un blocco plugins.entries.<plugin> residuo dopo la disinstallazione di un
plugin di terze parti, OpenClaw mantiene resiliente l'avvio e segnala un
avviso, così puoi reinstallare il plugin oppure eseguire
openclaw doctor --fix per ripulire la configurazione obsoleta.
La selezione del provider di fallback per web_fetch è separata:
- sceglilo con
tools.web.fetch.provider - oppure ometti questo campo e lascia che OpenClaw rilevi automaticamente il primo provider di recupero web pronto in base alle credenziali configurate
web_fetchsenza sandbox può usare i provider dei plugin installati che dichiaranocontracts.webFetchProviders; i recuperi nella sandbox consentono i provider inclusi e le installazioni verificate dei plugin ufficiali, ma escludono i plugin esterni di terze parti- il plugin ufficiale Firecrawl è attualmente l'unico contributore
webFetchProvidersincluso ed è configurato inplugins.entries.firecrawl.config.webFetch.*
Quando scegli Kimi durante openclaw onboard o
openclaw configure --section web, OpenClaw può anche richiedere:
- la regione dell'API Moonshot (
https://api.moonshot.ai/v1oppurehttps://api.moonshot.cn/v1) - il modello predefinito di ricerca web di Kimi (il valore predefinito è
kimi-k2.6)
Per x_search, configura plugins.entries.xai.config.xSearch.*. Usa lo stesso
profilo di autenticazione xAI della chat oppure la credenziale
XAI_API_KEY/di ricerca web del plugin usata dalla ricerca web di Grok.
La configurazione precedente tools.web.x_search.* viene migrata
automaticamente da openclaw doctor --fix.
Quando scegli Grok durante openclaw onboard o
openclaw configure --section web, OpenClaw offre anche la configurazione
facoltativa di x_search con la stessa credenziale, subito dopo il
completamento della configurazione di Grok. Si tratta di un passaggio
successivo separato all'interno del percorso di Grok, non di una scelta
separata del provider di ricerca web di primo livello. Se scegli un altro
provider, OpenClaw non mostra la richiesta relativa a x_search.
Archiviazione delle chiavi API
File di configurazione
Esegui openclaw configure --section web oppure imposta direttamente la chiave:
{ plugins: { entries: { brave: { config: { webSearch: { apiKey: "YOUR_KEY", // pragma: allowlist secret }, }, }, }, },}Variabile di ambiente
Imposta la variabile di ambiente del provider nell'ambiente del processo Gateway:
export BRAVE_API_KEY="YOUR_KEY"Per un'installazione del Gateway, inseriscila in ~/.openclaw/.env.
Consulta Variabili di ambiente.
Parametri dello strumento
| Parametro | Descrizione |
|---|---|
query |
Query di ricerca (obbligatoria) |
count |
Risultati da restituire (1-10, valore predefinito: 5) |
country |
Codice paese ISO di 2 lettere (ad es. "US", "DE") |
language |
Codice lingua ISO 639-1 (ad es. "en", "de") |
search_lang |
Codice della lingua di ricerca (solo Brave) |
freshness |
Filtro temporale: day, week, month oppure year |
date_after |
Risultati successivi a questa data (YYYY-MM-DD) |
date_before |
Risultati precedenti a questa data (YYYY-MM-DD) |
ui_lang |
Codice della lingua dell'interfaccia (solo Brave) |
domain_filter |
Array di domini consentiti/negati (solo Perplexity) |
max_tokens |
Budget totale di token per i contenuti, solo API Perplexity Search nativa |
max_tokens_per_page |
Limite di token estratti per pagina, solo API Perplexity Search nativa |
x_search
x_search interroga i post su X (precedentemente Twitter) tramite xAI e
restituisce risposte sintetizzate dall'IA con citazioni. Accetta query in
linguaggio naturale e filtri strutturati facoltativi. OpenClaw costruisce lo
strumento x_search integrato di xAI per ogni richiesta, invece di mantenerlo
registrato in modo permanente, quindi è attivo soltanto durante il turno che
lo invoca effettivamente.
Configurazione di x_search
Se enabled viene omesso, x_search viene esposto solo quando il provider del
modello attivo è xai e le credenziali xAI vengono risolte. Per un modello attivo
con un provider noto diverso da xAI, imposta plugins.entries.xai.config.xSearch.enabled
su true per abilitare esplicitamente l'uso tra provider diversi. Se il provider
del modello attivo è mancante o non risolto, lo strumento rimane nascosto. Imposta
enabled su false per disabilitarlo per tutti i provider. Le credenziali xAI
sono sempre obbligatorie.
{ plugins: { entries: { xai: { config: { xSearch: { enabled: true, // obbligatorio per un provider di modelli noto diverso da xAI model: "grok-4.3", baseUrl: "https://api.x.ai/v1", // facoltativo, sostituisce webSearch.baseUrl inlineCitations: false, maxTurns: 2, timeoutSeconds: 30, cacheTtlMinutes: 15, }, webSearch: { apiKey: "xai-...", // facoltativo se è configurato un profilo di autenticazione xAI o XAI_API_KEY baseUrl: "https://api.x.ai/v1", // URL di base condiviso facoltativo per xAI Responses }, }, }, }, },}x_search invia una richiesta POST a <baseUrl>/responses quando è impostato
plugins.entries.xai.config.xSearch.baseUrl. Se questo campo viene omesso,
utilizza come ripiego plugins.entries.xai.config.webSearch.baseUrl, quindi il
valore precedente tools.web.search.grok.baseUrl e infine l'endpoint pubblico
di xAI (https://api.x.ai/v1).
Parametri di x_search
| Parametro | Descrizione |
|---|---|
query |
Query di ricerca (obbligatoria) |
allowed_x_handles |
Limita i risultati a un massimo di 20 handle X |
excluded_x_handles |
Esclude un massimo di 20 handle X |
from_date |
Include solo i post pubblicati in questa data o successivamente (YYYY-MM-DD) |
to_date |
Include solo i post pubblicati in questa data o precedentemente (YYYY-MM-DD) |
enable_image_understanding |
Consente a xAI di esaminare le immagini allegate ai post corrispondenti |
enable_video_understanding |
Consente a xAI di esaminare i video allegati ai post corrispondenti |
allowed_x_handles ed excluded_x_handles si escludono a vicenda.
Esempio di x_search
await x_search({ query: "dinner recipes", allowed_x_handles: ["nytfood"], from_date: "2026-03-01",});// Statistiche per post: quando possibile, usa l'URL esatto dello stato o il relativo IDawait x_search({ query: "https://x.com/huntharo/status/1905678901234567890",});Esempi
// Ricerca di baseawait web_search({ query: "OpenClaw plugin SDK" }); // Ricerca specifica per la Germaniaawait web_search({ query: "TV online schauen", country: "DE", language: "de" }); // Risultati recenti (ultima settimana)await web_search({ query: "AI developments", freshness: "week" }); // Intervallo di dateawait web_search({ query: "climate research", date_after: "2024-01-01", date_before: "2024-06-30",}); // Filtro per dominio (solo Perplexity)await web_search({ query: "product reviews", domain_filter: ["-reddit.com", "-pinterest.com"],});Profili degli strumenti
Se utilizzi profili degli strumenti o elenchi di elementi consentiti, aggiungi web_search, x_search o group:web:
{ tools: { allow: ["web_search", "x_search"], // oppure: allow: ["group:web"] (include web_search, x_search e web_fetch) },}Contenuti correlati
- Recupero web -- recupera un URL e ne estrae il contenuto leggibile
- Browser web -- automazione completa del browser per siti che fanno ampio uso di JS
- Ricerca Grok -- Grok come provider di
web_search - Ricerca web Ollama -- ricerca web senza chiave tramite il tuo host Ollama