Configurazione
OpenClaw legge una configurazione facoltativa da~/.openclaw/openclaw.json.
Se il file non esiste, OpenClaw usa impostazioni predefinite sicure. Motivi comuni per aggiungere una configurazione:
- Connettere i canali e controllare chi può inviare messaggi al bot
- Impostare modelli, strumenti, sandboxing o automazione (cron, hook)
- Regolare sessioni, media, rete o UI
Configurazione minima
Modifica della configurazione
- Procedura guidata interattiva
- CLI (comandi su una sola riga)
- Control UI
- Modifica diretta
Validazione rigorosa
Note sugli strumenti dello schema:openclaw config schemastampa la stessa famiglia di schemi JSON usata da Control UI e dalla validazione della configurazione.- Considera l’output di quello schema come il contratto canonico leggibile dalle macchine per
openclaw.json; questa panoramica e il riferimento della configurazione lo riassumono. - I valori dei campi
titleedescriptionvengono riportati nell’output dello schema per gli strumenti di editing e dei moduli. - Le voci di oggetti annidati, wildcard (
*) e elementi di array ([]) ereditano gli stessi metadati di documentazione quando esiste la documentazione del campo corrispondente. - Anche i rami di composizione
anyOf/oneOf/allOfereditano gli stessi metadati di documentazione, così le varianti union/intersection mantengono lo stesso aiuto per il campo. config.schema.lookuprestituisce un percorso di configurazione normalizzato con un nodo di schema superficiale (title,description,type,enum,const, limiti comuni e campi di validazione simili), i metadati di suggerimento UI corrispondenti e i riepiloghi immediati dei figli per gli strumenti di approfondimento.- Gli schemi runtime di plugin/canali vengono uniti quando il gateway può caricare il registro manifest corrente.
pnpm config:docs:checkrileva disallineamenti tra gli artefatti baseline della configurazione orientati alla documentazione e la superficie di schema corrente.
- Il Gateway non si avvia
- Funzionano solo i comandi diagnostici (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Esegui
openclaw doctorper vedere i problemi esatti - Esegui
openclaw doctor --fix(o--yes) per applicare le correzioni
Attività comuni
Configurare un canale (WhatsApp, Telegram, Discord, ecc.)
Configurare un canale (WhatsApp, Telegram, Discord, ecc.)
channels.<provider>. Consulta la pagina dedicata del canale per i passaggi di configurazione:- WhatsApp —
channels.whatsapp - Telegram —
channels.telegram - Discord —
channels.discord - Feishu —
channels.feishu - Google Chat —
channels.googlechat - Microsoft Teams —
channels.msteams - Slack —
channels.slack - Signal —
channels.signal - iMessage —
channels.imessage - Mattermost —
channels.mattermost
Scegliere e configurare i modelli
Scegliere e configurare i modelli
agents.defaults.modelsdefinisce il catalogo dei modelli e funge da allowlist per/model.- I riferimenti ai modelli usano il formato
provider/model(ad esempioanthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxcontrolla il ridimensionamento delle immagini nel transcript/strumenti (predefinito1200); valori inferiori di solito riducono l’uso di token di visione nelle esecuzioni ricche di screenshot.- Consulta Models CLI per cambiare modello in chat e Model Failover per il comportamento di rotazione dell’autenticazione e di fallback.
- Per provider personalizzati/self-hosted, consulta Provider personalizzati nel riferimento.
Controllare chi può inviare messaggi al bot
Controllare chi può inviare messaggi al bot
dmPolicy:"pairing"(predefinito): i mittenti sconosciuti ricevono un codice di pairing monouso da approvare"allowlist": solo i mittenti inallowFrom(o nell’archivio allow dei paired)"open": consente tutti i messaggi diretti in ingresso (richiedeallowFrom: ["*"])"disabled": ignora tutti i messaggi diretti
groupPolicy + groupAllowFrom o allowlist specifiche del canale.Consulta il riferimento completo per i dettagli per canale.Configurare il gating delle menzioni nelle chat di gruppo
Configurare il gating delle menzioni nelle chat di gruppo
- Menzioni nei metadati: menzioni @ native (@ con tocco su WhatsApp, @bot su Telegram, ecc.)
- Pattern di testo: pattern regex sicuri in
mentionPatterns - Consulta il riferimento completo per override per canale e modalità self-chat.
Limitare le Skills per agente
Limitare le Skills per agente
agents.defaults.skills per una baseline condivisa, poi sostituisci agenti specifici con agents.list[].skills:- Ometti
agents.defaults.skillsper avere Skills senza restrizioni per impostazione predefinita. - Ometti
agents.list[].skillsper ereditare i valori predefiniti. - Imposta
agents.list[].skills: []per non avere Skills. - Consulta Skills, Configurazione delle Skills e il Riferimento della configurazione.
Regolare il monitoraggio dello stato dei canali del gateway
Regolare il monitoraggio dello stato dei canali del gateway
- Imposta
gateway.channelHealthCheckMinutes: 0per disattivare globalmente i riavvii del monitoraggio dello stato. channelStaleEventThresholdMinutesdovrebbe essere maggiore o uguale all’intervallo di controllo.- Usa
channels.<provider>.healthMonitor.enabledochannels.<provider>.accounts.<id>.healthMonitor.enabledper disattivare i riavvii automatici per un canale o account senza disattivare il monitor globale. - Consulta Controlli dello stato per il debug operativo e il riferimento completo per tutti i campi.
Configurare sessioni e reset
Configurare sessioni e reset
dmScope:main(condivisa) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: valori predefiniti globali per il routing delle sessioni associate ai thread (Discord supporta/focus,/unfocus,/agents,/session idlee/session max-age).- Consulta Gestione delle sessioni per ambito, collegamenti di identità e policy di invio.
- Consulta il riferimento completo per tutti i campi.
Abilitare il sandboxing
Abilitare il sandboxing
scripts/sandbox-setup.shConsulta Sandboxing per la guida completa e il riferimento completo per tutte le opzioni.Abilitare il push basato su relay per le build iOS ufficiali
Abilitare il push basato su relay per le build iOS ufficiali
openclaw.json.Imposta questo nella configurazione del gateway:- Consente al gateway di inviare
push.test, solleciti di riattivazione e riattivazioni di riconnessione tramite il relay esterno. - Usa un’autorizzazione di invio limitata alla registrazione inoltrata dall’app iOS associata. Il gateway non ha bisogno di un token relay valido per l’intero deployment.
- Associa ogni registrazione supportata da relay all’identità del gateway con cui l’app iOS è stata associata, così un altro gateway non può riutilizzare la registrazione memorizzata.
- Mantiene le build iOS locali/manuali su APNs diretto. Gli invii supportati da relay si applicano solo alle build ufficiali distribuite che si sono registrate tramite il relay.
- Deve corrispondere al base URL del relay incorporato nella build iOS ufficiale/TestFlight, in modo che il traffico di registrazione e invio raggiunga lo stesso deployment relay.
- Installa una build iOS ufficiale/TestFlight compilata con lo stesso base URL del relay.
- Configura
gateway.push.apns.relay.baseUrlsul gateway. - Associa l’app iOS al gateway e consenti la connessione sia della sessione node sia di quella operatore.
- L’app iOS recupera l’identità del gateway, si registra presso il relay usando App Attest più la ricevuta dell’app e quindi pubblica il payload
push.apns.registersupportato da relay nel gateway associato. - Il gateway memorizza l’handle del relay e l’autorizzazione di invio, poi li usa per
push.test, i solleciti di riattivazione e le riattivazioni di riconnessione.
- Se sposti l’app iOS su un gateway diverso, riconnetti l’app in modo che possa pubblicare una nuova registrazione relay associata a quel gateway.
- Se distribuisci una nuova build iOS che punta a un deployment relay diverso, l’app aggiorna la registrazione relay memorizzata nella cache invece di riutilizzare il vecchio relay di origine.
OPENCLAW_APNS_RELAY_BASE_URLeOPENCLAW_APNS_RELAY_TIMEOUT_MSfunzionano ancora come override temporanei tramite variabili di ambiente.OPENCLAW_APNS_RELAY_ALLOW_HTTP=truerimane una via di fuga per lo sviluppo solo loopback; non salvare URL relay HTTP nella configurazione.
Configurare heartbeat (check-in periodici)
Configurare heartbeat (check-in periodici)
every: stringa durata (30m,2h). Imposta0mper disabilitare.target:last|none|<channel-id>(ad esempiodiscord,matrix,telegramowhatsapp)directPolicy:allow(predefinito) oblockper target heartbeat in stile DM- Consulta Heartbeat per la guida completa.
Configurare job cron
Configurare job cron
sessionRetention: elimina le sessioni isolate completate dasessions.json(predefinito24h; impostafalseper disabilitare).runLog: potacron/runs/<jobId>.jsonlper dimensione e righe mantenute.- Consulta Job cron per la panoramica della funzionalità e gli esempi CLI.
Configurare webhook (hook)
Configurare webhook (hook)
- Tratta tutto il contenuto dei payload hook/webhook come input non attendibile.
- Usa un
hooks.tokendedicato; non riutilizzare il token Gateway condiviso. - L’autenticazione degli hook è solo via header (
Authorization: Bearer ...ox-openclaw-token); i token nella query string vengono rifiutati. hooks.pathnon può essere/; mantieni l’ingresso dei webhook su un sottopercorso dedicato come/hooks.- Mantieni disattivati i flag di bypass per contenuti non sicuri (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent) a meno che tu non stia facendo debug strettamente circoscritto. - Se abiliti
hooks.allowRequestSessionKey, imposta anchehooks.allowedSessionKeyPrefixesper limitare le chiavi di sessione selezionate dal chiamante. - Per agenti guidati da hook, preferisci livelli di modello moderni e robusti e una policy degli strumenti rigorosa (ad esempio solo messaggistica più sandboxing dove possibile).
Configurare il routing multi-agent
Configurare il routing multi-agent
Dividere la configurazione in più file ($include)
Dividere la configurazione in più file ($include)
$include per organizzare configurazioni di grandi dimensioni:- File singolo: sostituisce l’oggetto che lo contiene
- Array di file: unione profonda in ordine (quello successivo prevale)
- Chiavi sibling: unite dopo gli include (sovrascrivono i valori inclusi)
- Include annidati: supportati fino a 10 livelli di profondità
- Percorsi relativi: risolti rispetto al file che include
- Gestione errori: errori chiari per file mancanti, errori di parsing e include circolari
Ricaricamento a caldo della configurazione
Il Gateway monitora~/.openclaw/openclaw.json e applica automaticamente le modifiche — per la maggior parte delle impostazioni non è necessario alcun riavvio manuale.
Modalità di ricaricamento
| Modalità | Comportamento |
|---|---|
hybrid (predefinita) | Applica a caldo istantaneamente le modifiche sicure. Riavvia automaticamente per quelle critiche. |
hot | Applica a caldo solo le modifiche sicure. Registra un avviso quando serve un riavvio — lo gestisci tu. |
restart | Riavvia il Gateway a ogni modifica della configurazione, sicura o meno. |
off | Disabilita il monitoraggio del file. Le modifiche hanno effetto al successivo riavvio manuale. |
Cosa viene applicato a caldo e cosa richiede un riavvio
La maggior parte dei campi viene applicata a caldo senza downtime. In modalitàhybrid, le modifiche che richiedono un riavvio vengono gestite automaticamente.
| Categoria | Campi | Riavvio necessario? |
|---|---|---|
| Canali | channels.*, web (WhatsApp) — tutti i canali integrati e di estensione | No |
| Agente e modelli | agent, agents, models, routing | No |
| Automazione | hooks, cron, agent.heartbeat | No |
| Sessioni e messaggi | session, messages | No |
| Strumenti e media | tools, browser, skills, audio, talk | No |
| UI e varie | ui, logging, identity, bindings | No |
| Server gateway | gateway.* (porta, bind, auth, tailscale, TLS, HTTP) | Sì |
| Infrastruttura | discovery, canvasHost, plugins | Sì |
gateway.reload e gateway.remote sono eccezioni: modificarli non attiva un riavvio.Config RPC (aggiornamenti programmatici)
config.apply, config.patch, update.run) sono soggette a rate limit di 3 richieste ogni 60 secondi per deviceId+clientIp. Quando viene applicato il limite, la RPC restituisce UNAVAILABLE con retryAfterMs.config.schema.lookup: ispeziona un sottoalbero di configurazione limitato a un percorso con un nodo di schema superficiale, metadati di suggerimento corrispondenti e riepiloghi immediati dei figliconfig.get: recupera lo snapshot corrente + hashconfig.patch: percorso di aggiornamento parziale preferitoconfig.apply: solo sostituzione completa della configurazioneupdate.run: autoaggiornamento esplicito + riavvio
config.schema.lookup e poi config.patch.
config.apply (sostituzione completa)
config.apply (sostituzione completa)
raw(stringa) — payload JSON5 per l’intera configurazionebaseHash(facoltativo) — hash della configurazione daconfig.get(obbligatorio quando la configurazione esiste)sessionKey(facoltativo) — chiave di sessione per il ping di riattivazione dopo il riavvionote(facoltativo) — nota per il sentinel di riavviorestartDelayMs(facoltativo) — ritardo prima del riavvio (predefinito 2000)
config.patch (aggiornamento parziale)
config.patch (aggiornamento parziale)
- Gli oggetti vengono uniti ricorsivamente
nullelimina una chiave- Gli array vengono sostituiti
raw(stringa) — JSON5 con solo le chiavi da modificarebaseHash(obbligatorio) — hash della configurazione daconfig.getsessionKey,note,restartDelayMs— come inconfig.apply
config.apply: riavvii in attesa accorpati più un cooldown di 30 secondi tra i cicli di riavvio.Variabili di ambiente
OpenClaw legge le variabili di ambiente dal processo padre più:.envdalla directory di lavoro corrente (se presente)~/.openclaw/.env(fallback globale)
Importazione env dalla shell (facoltativa)
Importazione env dalla shell (facoltativa)
OPENCLAW_LOAD_SHELL_ENV=1Sostituzione delle variabili di ambiente nei valori di configurazione
Sostituzione delle variabili di ambiente nei valori di configurazione
${VAR_NAME}:- Vengono riconosciuti solo nomi in maiuscolo corrispondenti a:
[A-Z_][A-Z0-9_]* - Variabili mancanti/vuote generano un errore al momento del caricamento
- Usa l’escape
$${VAR}per un output letterale - Funziona all’interno dei file
$include - Sostituzione inline:
"${BASE}/v1"→"https://api.example.com/v1"
Riferimenti ai segreti (env, file, exec)
Riferimenti ai segreti (env, file, exec)
secrets.providers per env/file/exec) sono disponibili in Gestione dei segreti.
I percorsi delle credenziali supportati sono elencati in Superficie delle credenziali SecretRef.Riferimento completo
Per il riferimento completo campo per campo, consulta Riferimento della configurazione.Correlati: Esempi di configurazione · Riferimento della configurazione · Doctor