Configurazione
OpenClaw legge una configurazione facoltativa in da~/.openclaw/openclaw.json.
Se il file manca, 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)
- Ottimizzare sessioni, media, rete o UI
Configurazione minima
Modificare la configurazione
- Procedura guidata interattiva
- CLI (one-liner)
- UI di controllo
- Modifica diretta
Validazione rigorosa
Note sugli strumenti di schema:openclaw config schemastampa la stessa famiglia di JSON Schema usata dalla UI di controllo e dalla validazione della configurazione.- I valori
titleedescriptiondei campi vengono riportati nell’output dello schema per editor e strumenti per moduli. - Le voci di oggetti annidati, wildcard (
*) e elementi di array ([]) ereditano gli stessi metadati di documentazione dove esiste documentazione di 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 i campi. 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), metadati di suggerimento UI corrispondenti e riepiloghi dei figli immediati per strumenti di analisi dettagliata.- Gli schemi runtime di plugin/canale vengono uniti quando il gateway riesce a caricare il registro manifest 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 riparazioni
Attività comuni
Configurare un canale (WhatsApp, Telegram, Discord, ecc.)
Configurare un canale (WhatsApp, Telegram, Discord, ecc.)
channels.<provider>. Consulta la pagina dedicata al 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 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 in trascrizione/strumenti (predefinito1200); valori inferiori in genere riducono l’uso di token vision nelle esecuzioni ricche di screenshot.- Vedi Models CLI per cambiare modello in chat e Model Failover per il comportamento di rotazione auth e fallback.
- Per provider personalizzati/self-hosted, vedi 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 pairing monouso da approvare"allowlist": solo i mittenti inallowFrom(o nello store paired allow)"open": consente tutti i DM in ingresso (richiedeallowFrom: ["*"])"disabled": ignora tutti i DM
groupPolicy + groupAllowFrom o allowlist specifiche del canale.Consulta il riferimento completo per i dettagli per canale.Configurare il gating per menzione nelle chat di gruppo
Configurare il gating per menzione nelle chat di gruppo
- Menzioni nei metadati: @-mention native (tap-to-mention di WhatsApp, @bot di 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, quindi fai override di
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 nessuna Skills. - Consulta Skills, Config Skills e il Riferimento configurazione.
Regolare il monitoraggio dello stato dei canali del gateway
Regolare il monitoraggio dello stato dei canali del gateway
- Imposta
gateway.channelHealthCheckMinutes: 0per disabilitare 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 disabilitare i riavvii automatici per un canale o account senza disabilitare il monitor globale. - Consulta Health Checks 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 l’instradamento 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 supportato da relay per le build iOS ufficiali
Abilitare il push supportato da relay per le build iOS ufficiali
openclaw.json.Imposta questo nella configurazione gateway:- Consente al gateway di inviare
push.test, wake nudges e wake di riconnessione tramite il relay esterno. - Usa un permesso di invio limitato alla registrazione inoltrato dall’app iOS paired. Il gateway non ha bisogno di un token relay valido per tutta la distribuzione.
- Associa ogni registrazione supportata da relay all’identità del gateway con cui l’app iOS ha effettuato il pairing, così un altro gateway non può riutilizzare la registrazione memorizzata.
- Mantiene le build iOS locali/manuali su APNs diretti. 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, così il traffico di registrazione e invio raggiunge la stessa distribuzione relay.
- Installa una build iOS ufficiale/TestFlight compilata con lo stesso base URL del relay.
- Configura
gateway.push.apns.relay.baseUrlsul gateway. - Esegui il pairing dell’app iOS con il gateway e lascia che si connettano sia le sessioni node sia quelle operator.
- 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 sul gateway paired. - Il gateway memorizza l’handle relay e il permesso di invio, poi li usa per
push.test, wake nudges e wake di riconnessione.
- Se sposti l’app iOS su un gateway diverso, ricollega l’app così potrà pubblicare una nuova registrazione relay associata a quel gateway.
- Se distribuisci una nuova build iOS che punta a una distribuzione relay diversa, l’app aggiorna la registrazione relay memorizzata invece di riutilizzare la vecchia origine relay.
OPENCLAW_APNS_RELAY_BASE_URLeOPENCLAW_APNS_RELAY_TIMEOUT_MSfunzionano ancora come override temporanei via env.OPENCLAW_APNS_RELAY_ALLOW_HTTP=truerimane una via di fuga di sviluppo solo loopback; non mantenere URL relay HTTP nella configurazione.
Configurare heartbeat (check-in periodici)
Configurare heartbeat (check-in periodici)
every: stringa di durata (30m,2h). Imposta0mper disabilitare.target:last|none|<channel-id>(ad esempiodiscord,matrix,telegramowhatsapp)directPolicy:allow(predefinito) oppureblockper target heartbeat in stile DM- Consulta Heartbeat per la guida completa.
Configurare i cron job
Configurare i cron job
sessionRetention: elimina le sessioni isolate completate dasessions.json(predefinito24h; impostafalseper disabilitare).runLog: potacron/runs/<jobId>.jsonlin base a dimensione e righe mantenute.- Consulta Cron jobs 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 condiviso del Gateway. - L’autenticazione hook è solo header (
Authorization: Bearer ...ox-openclaw-token); i token nella query string vengono rifiutati. hooks.pathnon può essere/; mantieni l’ingresso webhook su un sottopercorso dedicato come/hooks.- Mantieni disabilitati i flag di bypass per contenuto non sicuro (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent) a meno che tu non stia facendo debug molto mirato. - Se abiliti
hooks.allowRequestSessionKey, imposta anchehooks.allowedSessionKeyPrefixesper limitare le chiavi di sessione selezionabili dal chiamante. - Per agenti guidati da hook, preferisci livelli di modello moderni e forti e una policy strumenti rigorosa (ad esempio solo messaggistica più sandboxing dove possibile).
Configurare l'instradamento multi-agent
Configurare l'instradamento multi-agent
Suddividere la configurazione in più file ($include)
Suddividere la configurazione in più file ($include)
$include per organizzare configurazioni grandi:- File singolo: sostituisce l’oggetto contenitore
- Array di file: deep-merge in ordine (l’ultimo vince)
- Chiavi sibling: unite dopo gli include (sovrascrivono i valori inclusi)
- Include annidati: supportati fino a 10 livelli di profondità
- Percorsi relativi: risolti relativamente al file che include
- Gestione errori: errori chiari per file mancanti, errori di parsing e include circolari
Hot reload della configurazione
Il Gateway osserva~/.openclaw/openclaw.json e applica automaticamente le modifiche — per la maggior parte delle impostazioni non è necessario alcun riavvio manuale.
Modalità di ricarica
| Modalità | Comportamento |
|---|---|
hybrid (predefinita) | Applica a caldo immediatamente le modifiche sicure. Si riavvia automaticamente per quelle critiche. |
hot | Applica a caldo solo le modifiche sicure. Registra un avviso quando è necessario un riavvio — lo gestisci tu. |
restart | Riavvia il Gateway a ogni modifica della configurazione, sicura o meno. |
off | Disabilita l’osservazione 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 built-in ed extension | 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.RPC di configurazione (aggiornamenti programmatici)
config.apply, config.patch, update.run) hanno un rate limit di 3 richieste per 60 secondi per deviceId+clientIp. Quando il limite viene raggiunto, 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 dei figli immediaticonfig.get: recupera l’istantanea corrente + hashconfig.patch: percorso preferito per aggiornamenti parzialiconfig.apply: sostituzione completa della configurazione soloupdate.run: auto-aggiornamento esplicito + riavvio
config.schema.lookup
poi config.patch.
config.apply (sostituzione completa)
config.apply (sostituzione completa)
raw(stringa) — payload JSON5 per l’intera configurazionebaseHash(facoltativo) — hash di configurazione daconfig.get(obbligatorio quando la configurazione esiste)sessionKey(facoltativo) — chiave di sessione per il ping di wake-up post-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 sostituiscono
raw(stringa) — JSON5 con solo le chiavi da modificarebaseHash(obbligatorio) — hash di configurazione daconfig.getsessionKey,note,restartDelayMs— uguali aconfig.apply
config.apply: riavvii in attesa accorpati più un cooldown di 30 secondi tra i cicli di riavvio.Variabili d’ambiente
OpenClaw legge le variabili d’ambiente dal processo padre più:.envdalla directory di lavoro corrente (se presente)~/.openclaw/.env(fallback globale)
Importazione env della shell (facoltativa)
Importazione env della shell (facoltativa)
OPENCLAW_LOAD_SHELL_ENV=1Sostituzione di variabili d'ambiente nei valori di configurazione
Sostituzione di variabili d'ambiente nei valori di configurazione
${VAR_NAME}:- Vengono riconosciuti solo nomi maiuscoli corrispondenti a:
[A-Z_][A-Z0-9_]* - Variabili mancanti/vuote generano un errore al caricamento
- Esegui l’escape con
$${VAR}per output letterale - Funziona nei file
$include - Sostituzione inline:
"${BASE}/v1"→"https://api.example.com/v1"
Riferimenti ai secret (env, file, exec)
Riferimenti ai secret (env, file, exec)
secrets.providers per env/file/exec) sono in Gestione dei secret.
I percorsi credenziali supportati sono elencati in Superficie credenziali SecretRef.Riferimento completo
Per il riferimento completo campo per campo, consulta Riferimento configurazione.Correlati: Esempi di configurazione · Riferimento configurazione · Doctor