Riferimento della configurazione
Riferimento della configurazione principale per~/.openclaw/openclaw.json. Per una panoramica orientata alle attività, vedi Configuration.
Questa pagina copre le principali superfici di configurazione di OpenClaw e rimanda ad altre pagine quando un sottosistema ha un proprio riferimento più approfondito. Non cerca di includere in linea ogni catalogo di comandi posseduto da canali/plugin o ogni impostazione avanzata di memoria/QMD in un’unica pagina.
Verità del codice:
openclaw config schemastampa lo Schema JSON live usato per la convalida e per la Control UI, con i metadati bundled/plugin/canale uniti quando disponibiliconfig.schema.lookuprestituisce un nodo dello schema limitato a un percorso per gli strumenti di analisi dettagliatapnpm config:docs:check/pnpm config:docs:genconvalidano l’hash di baseline della documentazione di configurazione rispetto alla superficie dello schema corrente
- Riferimento della configurazione della memoria per
agents.defaults.memorySearch.*,memory.qmd.*,memory.citationse la configurazione dreaming sottoplugins.entries.memory-core.config.dreaming - Comandi slash per il catalogo corrente dei comandi integrati + bundled
- pagine del canale/plugin proprietario per le superfici di comando specifiche del canale
Canali
Ogni canale si avvia automaticamente quando esiste la sua sezione di configurazione (a meno cheenabled: false).
Accesso DM e gruppi
Tutti i canali supportano criteri DM e criteri per i gruppi:| Criterio DM | Comportamento |
|---|---|
pairing (default) | I mittenti sconosciuti ricevono un codice di associazione monouso; il proprietario deve approvare |
allowlist | Solo i mittenti in allowFrom (o nell’archivio allow associato) |
open | Consenti tutti i DM in ingresso (richiede allowFrom: ["*"]) |
disabled | Ignora tutti i DM in ingresso |
| Criterio gruppo | Comportamento |
|---|---|
allowlist (default) | Solo i gruppi che corrispondono alla allowlist configurata |
open | Ignora le allowlist dei gruppi (la limitazione tramite menzione si applica comunque) |
disabled | Blocca tutti i messaggi di gruppo/stanza |
channels.defaults.groupPolicy imposta il valore predefinito quando groupPolicy di un provider non è impostato.
I codici di associazione scadono dopo 1 ora. Le richieste DM di associazione in sospeso sono limitate a 3 per canale.
Se un blocco provider manca completamente (channels.<provider> assente), il criterio gruppo a runtime torna a allowlist (fail-closed) con un avviso all’avvio.Override del modello per canale
Usachannels.modelByChannel per fissare ID di canali specifici a un modello. I valori accettano provider/model o alias di modello configurati. La mappatura del canale si applica quando una sessione non ha già un override del modello (ad esempio impostato tramite /model).
Valori predefiniti dei canali e heartbeat
Usachannels.defaults per il comportamento condiviso di criteri gruppo e heartbeat tra i provider:
channels.defaults.groupPolicy: criterio gruppo di fallback quandogroupPolicya livello provider non è impostato.channels.defaults.contextVisibility: modalità predefinita di visibilità del contesto supplementare per tutti i canali. Valori:all(predefinito, include tutto il contesto citato/thread/cronologia),allowlist(include solo il contesto da mittenti presenti nella allowlist),allowlist_quote(come allowlist ma mantiene il contesto esplicito di citazione/risposta). Override per canale:channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: include gli stati dei canali integri nell’output heartbeat.channels.defaults.heartbeat.showAlerts: include gli stati degradati/di errore nell’output heartbeat.channels.defaults.heartbeat.useIndicator: mostra un output heartbeat compatto in stile indicatore.
WhatsApp multi-account
WhatsApp multi-account
- I comandi in uscita usano per impostazione predefinita l’account
defaultse presente; altrimenti il primo ID account configurato (ordinato). - L’opzione facoltativa
channels.whatsapp.defaultAccountsovrascrive quella selezione predefinita dell’account di fallback quando corrisponde a un ID account configurato. - La directory di autenticazione Baileys legacy a singolo account viene migrata da
openclaw doctorinwhatsapp/default. - Override per account:
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
- Token del bot:
channels.telegram.botTokenoppurechannels.telegram.tokenFile(solo file regolari; i symlink vengono rifiutati), conTELEGRAM_BOT_TOKENcome fallback per l’account predefinito. - L’opzione facoltativa
channels.telegram.defaultAccountsovrascrive la selezione dell’account predefinito quando corrisponde a un ID account configurato. - Nelle configurazioni multi-account (2+ ID account), imposta un valore predefinito esplicito (
channels.telegram.defaultAccountoppurechannels.telegram.accounts.default) per evitare il routing di fallback;openclaw doctoravvisa quando questo manca o non è valido. configWrites: falseblocca le scritture di configurazione avviate da Telegram (migrazioni ID supergruppo,/config set|unset).- Le voci
bindings[]di primo livello contype: "acp"configurano binding ACP persistenti per gli argomenti del forum (usa il formato canonicochatId:topic:topicIdinmatch.peer.id). La semantica dei campi è condivisa in ACP Agents. - Le anteprime di stream Telegram usano
sendMessage+editMessageText(funziona nelle chat dirette e di gruppo). - Criterio di retry: vedi Retry policy.
Discord
- Token:
channels.discord.token, conDISCORD_BOT_TOKENcome fallback per l’account predefinito. - Le chiamate dirette in uscita che forniscono un
tokenDiscord esplicito usano quel token per la chiamata; le impostazioni di retry/criterio dell’account provengono comunque dall’account selezionato nello snapshot runtime attivo. - L’opzione facoltativa
channels.discord.defaultAccountsovrascrive la selezione dell’account predefinito quando corrisponde a un ID account configurato. - Usa
user:<id>(DM) ochannel:<id>(canale guild) per i target di consegna; gli ID numerici senza prefisso vengono rifiutati. - Gli slug delle guild sono in minuscolo con gli spazi sostituiti da
-; le chiavi dei canali usano il nome in formato slug (senza#). Preferisci gli ID delle guild. - I messaggi creati dal bot vengono ignorati per impostazione predefinita.
allowBots: trueli abilita; usaallowBots: "mentions"per accettare solo i messaggi dei bot che menzionano il bot (i propri messaggi restano comunque filtrati). channels.discord.guilds.<id>.ignoreOtherMentions(e gli override a livello canale) elimina i messaggi che menzionano un altro utente o ruolo ma non il bot (escludendo @everyone/@here).maxLinesPerMessage(predefinito 17) divide i messaggi alti anche quando restano sotto 2000 caratteri.channels.discord.threadBindingscontrolla il routing vincolato ai thread Discord:enabled: override Discord per le funzionalità di sessione vincolate ai thread (/focus,/unfocus,/agents,/session idle,/session max-agee consegna/routing associati)idleHours: override Discord per il disaccoppiamento automatico per inattività in ore (0disabilita)maxAgeHours: override Discord per l’età massima rigida in ore (0disabilita)spawnSubagentSessions: interruttore opt-in per la creazione/associazione automatica dei thread disessions_spawn({ thread: true })
- Le voci
bindings[]di primo livello contype: "acp"configurano binding ACP persistenti per canali e thread (usa l’id del canale/thread inmatch.peer.id). La semantica dei campi è condivisa in ACP Agents. channels.discord.ui.components.accentColorimposta il colore di accento per i contenitori Discord components v2.channels.discord.voiceabilita le conversazioni nei canali vocali Discord e gli override facoltativi di auto-join + TTS.channels.discord.voice.daveEncryptionechannels.discord.voice.decryptionFailureTolerancevengono passati a@discordjs/voicecome opzioni DAVE (truee24per impostazione predefinita).- OpenClaw tenta inoltre il recupero della ricezione vocale uscendo e rientrando in una sessione vocale dopo ripetuti errori di decrittazione.
channels.discord.streamingè la chiave canonica della modalità di stream. I valori legacystreamModee booleanistreamingvengono migrati automaticamente.channels.discord.autoPresencemappa la disponibilità runtime alla presenza del bot (healthy => online, degraded => idle, exhausted => dnd) e consente override facoltativi del testo di stato.channels.discord.dangerouslyAllowNameMatchingriabilita la corrispondenza per nome/tag modificabile (modalità di compatibilità break-glass).channels.discord.execApprovals: consegna nativa Discord delle approvazioni exec e autorizzazione degli approvatori.enabled:true,falseo"auto"(predefinito). In modalità auto, le approvazioni exec si attivano quando gli approvatori possono essere risolti daapproversocommands.ownerAllowFrom.approvers: ID utente Discord autorizzati ad approvare le richieste exec. Se omesso, usacommands.ownerAllowFromcome fallback.agentFilter: allowlist facoltativa di ID agente. Omettila per inoltrare le approvazioni per tutti gli agenti.sessionFilter: pattern facoltativi di chiavi sessione (sottostringa o regex).target: dove inviare i prompt di approvazione."dm"(predefinito) li invia ai DM degli approvatori,"channel"li invia al canale di origine,"both"li invia a entrambi. Quando il target include"channel", i pulsanti possono essere usati solo dagli approvatori risolti.cleanupAfterResolve: quandotrue, elimina i DM di approvazione dopo approvazione, rifiuto o timeout.
off (nessuna), own (messaggi del bot, predefinita), all (tutti i messaggi), allowlist (da guilds.<id>.users su tutti i messaggi).
Google Chat
- JSON dell’account di servizio: inline (
serviceAccount) o basato su file (serviceAccountFile). - È supportato anche SecretRef dell’account di servizio (
serviceAccountRef). - Fallback env:
GOOGLE_CHAT_SERVICE_ACCOUNToGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - Usa
spaces/<spaceId>ousers/<userId>per i target di consegna. channels.googlechat.dangerouslyAllowNameMatchingriabilita la corrispondenza modificabile del principal email (modalità di compatibilità break-glass).
Slack
- Socket mode richiede sia
botTokensiaappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENcome fallback env dell’account predefinito). - HTTP mode richiede
botTokenpiùsigningSecret(alla radice o per account). botToken,appToken,signingSecreteuserTokenaccettano stringhe in chiaro o oggetti SecretRef.- Gli snapshot degli account Slack espongono campi per origine/stato delle credenziali, come
botTokenSource,botTokenStatus,appTokenStatuse, in modalità HTTP,signingSecretStatus.configured_unavailablesignifica che l’account è configurato tramite SecretRef ma il comando/percorso runtime corrente non ha potuto risolvere il valore del segreto. configWrites: falseblocca le scritture di configurazione avviate da Slack.- L’opzione facoltativa
channels.slack.defaultAccountsovrascrive la selezione dell’account predefinito quando corrisponde a un ID account configurato. channels.slack.streaming.modeè la chiave canonica della modalità di stream Slack.channels.slack.streaming.nativeTransportcontrolla il trasporto streaming nativo di Slack. I valori legacystreamMode, booleanistreamingenativeStreamingvengono migrati automaticamente.- Usa
user:<id>(DM) ochannel:<id>per i target di consegna.
off, own (predefinita), all, allowlist (da reactionAllowlist).
Isolamento della sessione del thread: thread.historyScope è per-thread (predefinito) o condiviso nel canale. thread.inheritParent copia la trascrizione del canale padre nei nuovi thread.
- Lo streaming nativo di Slack, insieme allo stato del thread in stile assistente Slack “is typing…”, richiede un target di risposta nel thread. I DM di primo livello restano fuori thread per impostazione predefinita, quindi usano
typingReactiono la consegna normale invece dell’anteprima in stile thread. typingReactionaggiunge una reazione temporanea al messaggio Slack in ingresso mentre una risposta è in esecuzione, poi la rimuove al completamento. Usa uno shortcode emoji Slack come"hourglass_flowing_sand".channels.slack.execApprovals: consegna nativa Slack delle approvazioni exec e autorizzazione degli approvatori. Stesso schema di Discord:enabled(true/false/"auto"),approvers(ID utente Slack),agentFilter,sessionFilteretarget("dm","channel"o"both").
| Gruppo di azioni | Predefinito | Note |
|---|---|---|
| reactions | abilitato | Reagire + elencare reazioni |
| messages | abilitato | Leggere/inviare/modificare/eliminare |
| pins | abilitato | Fissare/rimuovere/elencare |
| memberInfo | abilitato | Informazioni membro |
| emojiList | abilitato | Elenco emoji personalizzate |
Mattermost
Mattermost viene distribuito come plugin:openclaw plugins install @openclaw/mattermost.
oncall (risponde a @-mention, predefinita), onmessage (ogni messaggio), onchar (messaggi che iniziano con un prefisso trigger).
Quando i comandi nativi Mattermost sono abilitati:
commands.callbackPathdeve essere un percorso (ad esempio/api/channels/mattermost/command), non un URL completo.commands.callbackUrldeve risolversi all’endpoint gateway OpenClaw ed essere raggiungibile dal server Mattermost.- I callback slash nativi sono autenticati con i token per comando restituiti da Mattermost durante la registrazione del comando slash. Se la registrazione fallisce o non viene attivato alcun comando, OpenClaw rifiuta i callback con
Unauthorized: invalid command token. - Per host callback privati/tailnet/interni, Mattermost può richiedere che
ServiceSettings.AllowedUntrustedInternalConnectionsincluda l’host/dominio del callback. Usa valori host/dominio, non URL completi. channels.mattermost.configWrites: consenti o nega le scritture di configurazione avviate da Mattermost.channels.mattermost.requireMention: richiede@mentionprima di rispondere nei canali.channels.mattermost.groups.<channelId>.requireMention: override per canale della limitazione tramite menzione ("*"per il predefinito).- L’opzione facoltativa
channels.mattermost.defaultAccountsovrascrive la selezione dell’account predefinito quando corrisponde a un ID account configurato.
Signal
off, own (predefinita), all, allowlist (da reactionAllowlist).
channels.signal.account: vincola l’avvio del canale a una specifica identità account Signal.channels.signal.configWrites: consenti o nega le scritture di configurazione avviate da Signal.- L’opzione facoltativa
channels.signal.defaultAccountsovrascrive la selezione dell’account predefinito quando corrisponde a un ID account configurato.
BlueBubbles
BlueBubbles è il percorso iMessage consigliato (supportato da plugin, configurato sottochannels.bluebubbles).
- I percorsi chiave principali trattati qui:
channels.bluebubbles,channels.bluebubbles.dmPolicy. - L’opzione facoltativa
channels.bluebubbles.defaultAccountsovrascrive la selezione dell’account predefinito quando corrisponde a un ID account configurato. - Le voci
bindings[]di primo livello contype: "acp"possono associare conversazioni BlueBubbles a sessioni ACP persistenti. Usa un handle BlueBubbles o una stringa target (chat_id:*,chat_guid:*,chat_identifier:*) inmatch.peer.id. Semantica condivisa dei campi: ACP Agents. - La configurazione completa del canale BlueBubbles è documentata in BlueBubbles.
iMessage
OpenClaw avviaimsg rpc (JSON-RPC su stdio). Non è richiesto alcun demone o porta.
-
L’opzione facoltativa
channels.imessage.defaultAccountsovrascrive la selezione dell’account predefinito quando corrisponde a un ID account configurato. - Richiede Full Disk Access al database Messaggi.
-
Preferisci target
chat_id:<id>. Usaimsg chats --limit 20per elencare le chat. -
cliPathpuò puntare a un wrapper SSH; impostaremoteHost(hostouser@host) per il recupero degli allegati tramite SCP. -
attachmentRootseremoteAttachmentRootslimitano i percorsi degli allegati in ingresso (predefinito:/Users/*/Library/Messages/Attachments). -
SCP usa il controllo rigoroso della chiave host, quindi assicurati che la chiave host del relay esista già in
~/.ssh/known_hosts. -
channels.imessage.configWrites: consenti o nega le scritture di configurazione avviate da iMessage. -
Le voci
bindings[]di primo livello contype: "acp"possono associare conversazioni iMessage a sessioni ACP persistenti. Usa un handle normalizzato o un target chat esplicito (chat_id:*,chat_guid:*,chat_identifier:*) inmatch.peer.id. Semantica condivisa dei campi: ACP Agents.
Esempio di wrapper SSH iMessage
Esempio di wrapper SSH iMessage
Matrix
Matrix è supportato da estensione ed è configurato sottochannels.matrix.
- L’autenticazione tramite token usa
accessToken; l’autenticazione tramite password usauserId+password. channels.matrix.proxyinstrada il traffico HTTP Matrix attraverso un proxy HTTP(S) esplicito. Gli account nominati possono sovrascriverlo conchannels.matrix.accounts.<id>.proxy.channels.matrix.network.dangerouslyAllowPrivateNetworkconsente homeserver privati/interni.proxye questo opt-in di rete sono controlli indipendenti.channels.matrix.defaultAccountseleziona l’account preferito nelle configurazioni multi-account.channels.matrix.autoJoinha valore predefinitooff, quindi le stanze invitate e i nuovi inviti in stile DM vengono ignorati finché non impostiautoJoin: "allowlist"conautoJoinAllowlistoautoJoin: "always".channels.matrix.execApprovals: consegna nativa Matrix delle approvazioni exec e autorizzazione degli approvatori.enabled:true,falseo"auto"(predefinito). In modalità auto, le approvazioni exec si attivano quando gli approvatori possono essere risolti daapproversocommands.ownerAllowFrom.approvers: ID utente Matrix (ad es.@owner:example.org) autorizzati ad approvare richieste exec.agentFilter: allowlist facoltativa di ID agente. Omettila per inoltrare le approvazioni per tutti gli agenti.sessionFilter: pattern facoltativi di chiavi sessione (sottostringa o regex).target: dove inviare i prompt di approvazione."dm"(predefinito),"channel"(stanza di origine) o"both".- Override per account:
channels.matrix.accounts.<id>.execApprovals.
channels.matrix.dm.sessionScopecontrolla come i DM Matrix vengono raggruppati in sessioni:per-user(predefinito) condivide per peer instradato, mentreper-roomisola ogni stanza DM.- I probe di stato Matrix e le ricerche live nella directory usano lo stesso criterio proxy del traffico runtime.
- La configurazione completa di Matrix, le regole di targeting e gli esempi di configurazione sono documentati in Matrix.
Microsoft Teams
Microsoft Teams è supportato da estensione ed è configurato sottochannels.msteams.
- I percorsi chiave principali trattati qui:
channels.msteams,channels.msteams.configWrites. - La configurazione completa di Teams (credenziali, webhook, criterio DM/gruppi, override per team/per canale) è documentata in Microsoft Teams.
IRC
IRC è supportato da estensione ed è configurato sottochannels.irc.
- I percorsi chiave principali trattati qui:
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.*. - L’opzione facoltativa
channels.irc.defaultAccountsovrascrive la selezione dell’account predefinito quando corrisponde a un ID account configurato. - La configurazione completa del canale IRC (host/porta/TLS/canali/allowlist/limitazione tramite menzione) è documentata in IRC.
Multi-account (tutti i canali)
Esegui più account per canale (ognuno con il proprioaccountId):
defaultviene usato quandoaccountIdviene omesso (CLI + routing).- I token env si applicano solo all’account default.
- Le impostazioni base del canale si applicano a tutti gli account salvo override per account.
- Usa
bindings[].match.accountIdper instradare ogni account a un agente diverso. - Se aggiungi un account non predefinito tramite
openclaw channels add(o onboarding del canale) mentre sei ancora su una configurazione di canale top-level a singolo account, OpenClaw promuove prima i valori top-level a singolo account con ambito account nella mappa account del canale, così l’account originale continua a funzionare. La maggior parte dei canali li sposta inchannels.<channel>.accounts.default; Matrix può invece preservare un target nominato/predefinito esistente corrispondente. - I binding esistenti solo-canale (senza
accountId) continuano a corrispondere all’account predefinito; i binding con ambito account restano facoltativi. openclaw doctor --fixripara anche le forme miste spostando i valori top-level a singolo account con ambito account nell’account promosso scelto per quel canale. La maggior parte dei canali usaaccounts.default; Matrix può preservare un target nominato/predefinito esistente corrispondente.
Altri canali di estensione
Molti canali di estensione sono configurati comechannels.<id> e documentati nelle rispettive pagine dedicate ai canali (ad esempio Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat e Twitch).
Vedi l’indice completo dei canali: Channels.
Limitazione tramite menzione nelle chat di gruppo
I messaggi di gruppo richiedono per impostazione predefinita una menzione obbligatoria (metadati di menzione o pattern regex sicuri). Si applica a WhatsApp, Telegram, Discord, Google Chat e chat di gruppo iMessage. Tipi di menzione:- Menzioni nei metadati: @-mention native della piattaforma. Ignorate nella modalità self-chat di WhatsApp.
- Pattern di testo: pattern regex sicuri in
agents.list[].groupChat.mentionPatterns. I pattern non validi e le ripetizioni annidate non sicure vengono ignorati. - La limitazione tramite menzione viene applicata solo quando il rilevamento è possibile (menzioni native o almeno un pattern).
messages.groupChat.historyLimit imposta il valore predefinito globale. I canali possono sovrascriverlo con channels.<channel>.historyLimit (o per account). Imposta 0 per disabilitarlo.
Limiti della cronologia DM
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Modalità self-chat
Includi il tuo numero inallowFrom per abilitare la modalità self-chat (ignora le @-mention native, risponde solo ai pattern di testo):
Comandi (gestione dei comandi chat)
Dettagli dei comandi
Dettagli dei comandi
- Questo blocco configura le superfici dei comandi. Per il catalogo corrente dei comandi integrati + bundled, vedi Slash Commands.
- Questa pagina è un riferimento delle chiavi di configurazione, non il catalogo completo dei comandi. I comandi posseduti da canali/plugin come QQ Bot
/bot-ping/bot-help/bot-logs, LINE/card, device-pair/pair, memory/dreaming, phone-control/phonee Talk/voicesono documentati nelle rispettive pagine di canale/plugin e in Slash Commands. - I comandi di testo devono essere messaggi autonomi con
/iniziale. native: "auto"attiva i comandi nativi per Discord/Telegram, lascia Slack disattivato.nativeSkills: "auto"attiva i comandi nativi delle Skills per Discord/Telegram, lascia Slack disattivato.- Override per canale:
channels.discord.commands.native(bool o"auto").falsecancella i comandi registrati in precedenza. - Sovrascrivi la registrazione nativa delle Skills per canale con
channels.<provider>.commands.nativeSkills. channels.telegram.customCommandsaggiunge voci extra al menu del bot Telegram.bash: trueabilita! <cmd>per la shell host. Richiedetools.elevated.enablede il mittente intools.elevated.allowFrom.<channel>.config: trueabilita/config(legge/scriveopenclaw.json). Per i client gatewaychat.send, le scritture persistenti/config set|unsetrichiedono ancheoperator.admin; il comando in sola lettura/config showresta disponibile ai normali client operatore con ambito di scrittura.mcp: trueabilita/mcpper la configurazione del server MCP gestito da OpenClaw sottomcp.servers.plugins: trueabilita/pluginsper rilevamento plugin, installazione e controlli di abilitazione/disabilitazione.channels.<provider>.configWritescontrolla le mutazioni di configurazione per canale (predefinito: true).- Per i canali multi-account,
channels.<provider>.accounts.<id>.configWritescontrolla anche le scritture che puntano a quell’account (ad esempio/allowlist --config --account <id>o/config set channels.<provider>.accounts.<id>...). restart: falsedisabilita/restarte le azioni dello strumento di riavvio del gateway. Predefinito:true.ownerAllowFromè la allowlist esplicita del proprietario per comandi/strumenti solo proprietario. È separata daallowFrom.ownerDisplay: "hash"applica l’hash agli ID del proprietario nel prompt di sistema. ImpostaownerDisplaySecretper controllare l’hashing.allowFromè per-provider. Quando è impostato, è l’unica fonte di autorizzazione (le allowlist/associazioni del canale euseAccessGroupsvengono ignorati).useAccessGroups: falseconsente ai comandi di bypassare i criteri dei gruppi di accesso quandoallowFromnon è impostato.- Mappa della documentazione dei comandi:
Valori predefiniti degli agenti
agents.defaults.workspace
Predefinito: ~/.openclaw/workspace.
agents.defaults.repoRoot
Radice del repository facoltativa mostrata nella riga Runtime del prompt di sistema. Se non impostata, OpenClaw la rileva automaticamente risalendo dalla workspace.
agents.defaults.skills
Allowlist predefinita facoltativa delle Skills per gli agenti che non impostano
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. - Un elenco non vuoto
agents.list[].skillsè l’insieme finale per quell’agente; non viene unito ai valori predefiniti.
agents.defaults.skipBootstrap
Disabilita la creazione automatica dei file bootstrap della workspace (AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md).
agents.defaults.contextInjection
Controlla quando i file bootstrap della workspace vengono iniettati nel prompt di sistema. Predefinito: "always".
"continuation-skip": i turni di continuazione sicura (dopo una risposta completata dell’assistente) saltano la reiniezione del bootstrap della workspace, riducendo la dimensione del prompt. Le esecuzioni heartbeat e i tentativi successivi alla compattazione ricostruiscono comunque il contesto.
agents.defaults.bootstrapMaxChars
Numero massimo di caratteri per file bootstrap della workspace prima del troncamento. Predefinito: 20000.
agents.defaults.bootstrapTotalMaxChars
Numero massimo totale di caratteri iniettati in tutti i file bootstrap della workspace. Predefinito: 150000.
agents.defaults.bootstrapPromptTruncationWarning
Controlla il testo di avviso visibile all’agente quando il contesto bootstrap viene troncato.
Predefinito: "once".
"off": non iniettare mai testo di avviso nel prompt di sistema."once": inietta l’avviso una sola volta per ogni firma di troncamento univoca (consigliato)."always": inietta l’avviso a ogni esecuzione quando esiste un troncamento.
agents.defaults.imageMaxDimensionPx
Dimensione massima in pixel del lato più lungo dell’immagine nei blocchi immagine di transcript/strumenti prima delle chiamate al provider.
Predefinito: 1200.
Valori più bassi riducono di solito l’uso di vision token e la dimensione del payload della richiesta per esecuzioni ricche di screenshot.
Valori più alti preservano più dettaglio visivo.
agents.defaults.userTimezone
Fuso orario per il contesto del prompt di sistema (non per i timestamp dei messaggi). Usa come fallback il fuso orario dell’host.
agents.defaults.timeFormat
Formato orario nel prompt di sistema. Predefinito: auto (preferenza del sistema operativo).
agents.defaults.model
model: accetta sia una stringa ("provider/model") sia un oggetto ({ primary, fallbacks }).- La forma stringa imposta solo il modello primario.
- La forma oggetto imposta il primario più i modelli di failover ordinati.
imageModel: accetta sia una stringa ("provider/model") sia un oggetto ({ primary, fallbacks }).- Usato dal percorso dello strumento
imagecome configurazione del modello di visione. - Usato anche come routing di fallback quando il modello selezionato/predefinito non può accettare input immagine.
- Usato dal percorso dello strumento
imageGenerationModel: accetta sia una stringa ("provider/model") sia un oggetto ({ primary, fallbacks }).- Usato dalla capacità condivisa di generazione immagini e da qualsiasi futura superficie di strumento/plugin che generi immagini.
- Valori tipici:
google/gemini-3.1-flash-image-previewper la generazione immagini Gemini nativa,fal/fal-ai/flux/devper fal, oppureopenai/gpt-image-1per OpenAI Images. - Se selezioni direttamente un provider/modello, configura anche l’autenticazione/la chiave API del provider corrispondente (ad esempio
GEMINI_API_KEYoGOOGLE_API_KEYpergoogle/*,OPENAI_API_KEYperopenai/*,FAL_KEYperfal/*). - Se omesso,
image_generatepuò comunque dedurre un provider predefinito supportato da autenticazione. Prova prima il provider predefinito corrente, poi i restanti provider di generazione immagini registrati in ordine di ID provider.
musicGenerationModel: accetta sia una stringa ("provider/model") sia un oggetto ({ primary, fallbacks }).- Usato dalla capacità condivisa di generazione musicale e dallo strumento integrato
music_generate. - Valori tipici:
google/lyria-3-clip-preview,google/lyria-3-pro-previewominimax/music-2.5+. - Se omesso,
music_generatepuò comunque dedurre un provider predefinito supportato da autenticazione. Prova prima il provider predefinito corrente, poi i restanti provider di generazione musicale registrati in ordine di ID provider. - Se selezioni direttamente un provider/modello, configura anche l’autenticazione/la chiave API del provider corrispondente.
- Usato dalla capacità condivisa di generazione musicale e dallo strumento integrato
videoGenerationModel: accetta sia una stringa ("provider/model") sia un oggetto ({ primary, fallbacks }).- Usato dalla capacità condivisa di generazione video e dallo strumento integrato
video_generate. - Valori tipici:
qwen/wan2.6-t2v,qwen/wan2.6-i2v,qwen/wan2.6-r2v,qwen/wan2.6-r2v-flashoqwen/wan2.7-r2v. - Se omesso,
video_generatepuò comunque dedurre un provider predefinito supportato da autenticazione. Prova prima il provider predefinito corrente, poi i restanti provider di generazione video registrati in ordine di ID provider. - Se selezioni direttamente un provider/modello, configura anche l’autenticazione/la chiave API del provider corrispondente.
- Il provider bundled di generazione video Qwen supporta fino a 1 video in uscita, 1 immagine in ingresso, 4 video in ingresso, durata di 10 secondi e opzioni a livello provider
size,aspectRatio,resolution,audioewatermark.
- Usato dalla capacità condivisa di generazione video e dallo strumento integrato
pdfModel: accetta sia una stringa ("provider/model") sia un oggetto ({ primary, fallbacks }).- Usato dallo strumento
pdfper il routing del modello. - Se omesso, lo strumento PDF usa come fallback
imageModel, poi il modello di sessione/predefinito risolto.
- Usato dallo strumento
pdfMaxBytesMb: limite predefinito della dimensione PDF per lo strumentopdfquandomaxBytesMbnon viene passato al momento della chiamata.pdfMaxPages: numero massimo predefinito di pagine considerate dalla modalità fallback di estrazione nello strumentopdf.verboseDefault: livello verboso predefinito per gli agenti. Valori:"off","on","full". Predefinito:"off".elevatedDefault: livello predefinito di output elevato per gli agenti. Valori:"off","on","ask","full". Predefinito:"on".model.primary: formatoprovider/model(ad esempioopenai/gpt-5.4). Se ometti il provider, OpenClaw prova prima un alias, poi una corrispondenza univoca del provider configurato per quell’esatto ID modello e solo dopo usa come fallback il provider predefinito configurato (comportamento di compatibilità deprecato, quindi preferisciprovider/modelesplicito). Se quel provider non espone più il modello predefinito configurato, OpenClaw usa come fallback il primo provider/modello configurato invece di mostrare un valore predefinito obsoleto di un provider rimosso.models: il catalogo e la allowlist dei modelli configurati per/model. Ogni voce può includerealias(scorciatoia) eparams(specifici del provider, ad esempiotemperature,maxTokens,cacheRetention,context1m).params: parametri globali predefiniti del provider applicati a tutti i modelli. Impostati inagents.defaults.params(ad es.{ cacheRetention: "long" }).- Precedenza di unione di
params(config):agents.defaults.params(base globale) viene sovrascritto daagents.defaults.models["provider/model"].params(per modello), quindiagents.list[].params(ID agente corrispondente) sovrascrive per chiave. Vedi Prompt Caching per i dettagli. embeddedHarness: criterio predefinito del runtime embedded a basso livello dell’agente. Usaruntime: "auto"per lasciare che gli harness plugin registrati rivendichino i modelli supportati,runtime: "pi"per forzare l’harness PI integrato, oppure un ID harness registrato comeruntime: "codex". Impostafallback: "none"per disabilitare il fallback automatico a PI.- I writer di configurazione che modificano questi campi (ad esempio
/models set,/models set-imagee i comandi di aggiunta/rimozione fallback) salvano la forma canonica a oggetto e preservano gli elenchi fallback esistenti quando possibile. maxConcurrent: numero massimo di esecuzioni parallele di agenti tra le sessioni (ogni sessione resta comunque serializzata). Predefinito: 4.
agents.defaults.embeddedHarness
embeddedHarness controlla quale esecutore a basso livello esegue i turni degli agenti embedded.
La maggior parte delle distribuzioni dovrebbe mantenere il valore predefinito { runtime: "auto", fallback: "pi" }.
Usalo quando un plugin attendibile fornisce un harness nativo, come l’harness bundled dell’app-server Codex.
runtime:"auto","pi"o un ID harness plugin registrato. Il plugin bundled Codex registracodex.fallback:"pi"o"none"."pi"mantiene l’harness PI integrato come fallback di compatibilità."none"fa fallire la selezione di un harness plugin mancante o non supportato invece di usare silenziosamente PI.- Override d’ambiente:
OPENCLAW_AGENT_RUNTIME=<id|auto|pi>sovrascriveruntime;OPENCLAW_AGENT_HARNESS_FALLBACK=nonedisabilita il fallback a PI per quel processo. - Per distribuzioni solo Codex, imposta
model: "codex/gpt-5.4",embeddedHarness.runtime: "codex"eembeddedHarness.fallback: "none". - Questo controlla solo l’harness della chat embedded. Generazione media, visione, PDF, musica, video e TTS usano comunque le rispettive impostazioni provider/modello.
agents.defaults.models):
| Alias | Modello |
|---|---|
opus | anthropic/claude-opus-4-6 |
sonnet | anthropic/claude-sonnet-4-6 |
gpt | openai/gpt-5.4 |
gpt-mini | openai/gpt-5.4-mini |
gpt-nano | openai/gpt-5.4-nano |
gemini | google/gemini-3.1-pro-preview |
gemini-flash | google/gemini-3-flash-preview |
gemini-flash-lite | google/gemini-3.1-flash-lite-preview |
--thinking off o definisca tu stesso agents.defaults.models["zai/<model>"].params.thinking.
I modelli Z.AI abilitano tool_stream per impostazione predefinita per lo streaming delle chiamate agli strumenti. Imposta agents.defaults.models["zai/<model>"].params.tool_stream su false per disabilitarlo.
I modelli Anthropic Claude 4.6 usano per impostazione predefinita il thinking adaptive quando non è impostato alcun livello di thinking esplicito.
agents.defaults.cliBackends
Backend CLI facoltativi per esecuzioni di fallback solo testo (senza chiamate agli strumenti). Utili come backup quando i provider API falliscono.
- I backend CLI sono orientati prima di tutto al testo; gli strumenti sono sempre disabilitati.
- Le sessioni sono supportate quando
sessionArgè impostato. - Il pass-through delle immagini è supportato quando
imageArgaccetta percorsi di file.
agents.defaults.systemPromptOverride
Sostituisce l’intero prompt di sistema assemblato da OpenClaw con una stringa fissa. Impostalo a livello predefinito (agents.defaults.systemPromptOverride) o per agente (agents.list[].systemPromptOverride). I valori per agente hanno la precedenza; un valore vuoto o composto solo da spazi viene ignorato. Utile per esperimenti controllati sui prompt.
agents.defaults.heartbeat
Esecuzioni heartbeat periodiche.
every: stringa di durata (ms/s/m/h). Predefinito:30m(autenticazione con chiave API) o1h(autenticazione OAuth). Imposta0mper disabilitare.includeSystemPromptSection: quando è false, omette la sezione Heartbeat dal prompt di sistema e salta l’iniezione diHEARTBEAT.mdnel contesto bootstrap. Predefinito:true.suppressToolErrorWarnings: quando è true, sopprime i payload di avviso degli errori degli strumenti durante le esecuzioni heartbeat.timeoutSeconds: tempo massimo in secondi consentito per un turno agente heartbeat prima che venga interrotto. Lascialo non impostato per usareagents.defaults.timeoutSeconds.directPolicy: criterio di consegna diretta/DM.allow(predefinito) consente la consegna a target diretto.blocksopprime la consegna a target diretto ed emettereason=dm-blocked.lightContext: quando è true, le esecuzioni heartbeat usano un contesto bootstrap leggero e mantengono soloHEARTBEAT.mdtra i file bootstrap della workspace.isolatedSession: quando è true, ogni heartbeat viene eseguito in una sessione nuova senza cronologia conversazionale precedente. Stesso schema di isolamento di cronsessionTarget: "isolated". Riduce il costo in token per heartbeat da circa 100K a circa 2-5K token.- Per agente: imposta
agents.list[].heartbeat. Quando un qualsiasi agente definisceheartbeat, gli heartbeat vengono eseguiti solo da quegli agenti. - Gli heartbeat eseguono turni agente completi: intervalli più brevi consumano più token.
agents.defaults.compaction
mode:defaultosafeguard(riepilogo suddiviso in blocchi per cronologie lunghe). Vedi Compaction.provider: id di un plugin provider di compattazione registrato. Quando impostato, viene chiamatosummarize()del provider invece del riepilogo LLM integrato. In caso di errore, torna a quello integrato. Impostare un provider forzamode: "safeguard". Vedi Compaction.timeoutSeconds: numero massimo di secondi consentiti per una singola operazione di compattazione prima che OpenClaw la interrompa. Predefinito:900.identifierPolicy:strict(predefinito),offocustom.strictantepone linee guida integrate per la conservazione di identificatori opachi durante il riepilogo della compattazione.identifierInstructions: testo personalizzato facoltativo per la conservazione degli identificatori usato quandoidentifierPolicy=custom.postCompactionSections: nomi facoltativi di sezioni H2/H3 di AGENTS.md da reiniettare dopo la compattazione. Il valore predefinito è["Session Startup", "Red Lines"]; imposta[]per disabilitare la reiniezione. Se non è impostato o viene impostato esplicitamente a quella coppia predefinita, anche le intestazioni meno recentiEvery Session/Safetysono accettate come fallback legacy.model: override facoltativoprovider/model-idsolo per il riepilogo della compattazione. Usalo quando la sessione principale deve mantenere un modello ma i riepiloghi di compattazione devono essere eseguiti con un altro; se non impostato, la compattazione usa il modello primario della sessione.notifyUser: quandotrue, invia un breve avviso all’utente quando inizia la compattazione (per esempio, “Compattazione del contesto in corso…”). Disabilitato per impostazione predefinita per mantenere la compattazione silenziosa.memoryFlush: turno agentico silenzioso prima della compattazione automatica per archiviare ricordi durevoli. Saltato quando il workspace è in sola lettura.
agents.defaults.contextPruning
Elimina i vecchi risultati degli strumenti dal contesto in memoria prima dell’invio all’LLM. Non modifica la cronologia della sessione su disco.
Comportamento della modalità cache-ttl
Comportamento della modalità cache-ttl
mode: "cache-ttl"abilita i passaggi di eliminazione.ttlcontrolla con quale frequenza l’eliminazione può essere eseguita di nuovo (dopo l’ultimo accesso alla cache).- L’eliminazione prima riduce in modo parziale i risultati degli strumenti troppo grandi, poi cancella completamente i risultati più vecchi degli strumenti se necessario.
... nel mezzo.Hard-clear sostituisce l’intero risultato dello strumento con il segnaposto.Note:- I blocchi di immagini non vengono mai ridotti né cancellati.
- I rapporti sono basati sui caratteri (approssimativi), non su conteggi esatti di token.
- Se esistono meno di
keepLastAssistantsmessaggi assistant, l’eliminazione viene saltata.
Streaming a blocchi
- I canali non Telegram richiedono
*.blockStreaming: trueesplicito per abilitare le risposte a blocchi. - Override per canale:
channels.<channel>.blockStreamingCoalesce(e varianti per account). Signal/Slack/Discord/Google Chat usano per impostazione predefinitaminChars: 1500. humanDelay: pausa casuale tra le risposte a blocchi.natural= 800–2500 ms. Override per agente:agents.list[].humanDelay.
Indicatori di digitazione
- Valori predefiniti:
instantper chat dirette/menzioni,messageper chat di gruppo senza menzione. - Override per sessione:
session.typingMode,session.typingIntervalSeconds.
agents.defaults.sandbox
Sandboxing facoltativo per l’agente incorporato. Vedi Sandboxing per la guida completa.
Dettagli della sandbox
Dettagli della sandbox
Backend:Modalità OpenShell:
docker: runtime Docker locale (predefinito)ssh: runtime remoto generico basato su SSHopenshell: runtime OpenShell
backend: "openshell", le impostazioni specifiche del runtime vengono spostate in
plugins.entries.openshell.config.Configurazione del backend SSH:target: destinazione SSH nel formatouser@host[:port]command: comando del client SSH (predefinito:ssh)workspaceRoot: radice remota assoluta usata per workspace per ambitoidentityFile/certificateFile/knownHostsFile: file locali esistenti passati a OpenSSHidentityData/certificateData/knownHostsData: contenuti inline o SecretRef che OpenClaw materializza in file temporanei in fase di esecuzionestrictHostKeyChecking/updateHostKeys: opzioni del criterio delle chiavi host di OpenSSH
identityDataha priorità suidentityFilecertificateDataha priorità sucertificateFileknownHostsDataha priorità suknownHostsFile- I valori
*Databasati su SecretRef vengono risolti dall’istantanea attiva del runtime dei segreti prima dell’avvio della sessione sandbox
- inizializza il workspace remoto una volta dopo la creazione o ricreazione
- poi mantiene canonico il workspace SSH remoto
- instrada
exec, gli strumenti per i file e i percorsi dei contenuti multimediali tramite SSH - non sincronizza automaticamente sul host le modifiche remote
- non supporta container browser sandbox
none: workspace sandbox per ambito sotto~/.openclaw/sandboxesro: workspace sandbox in/workspace, workspace dell’agente montato in sola lettura in/agentrw: workspace dell’agente montato in lettura/scrittura in/workspace
session: container + workspace per sessioneagent: un container + workspace per agente (predefinito)shared: container e workspace condivisi (nessun isolamento tra sessioni)
mirror: inizializza il remoto dal locale prima di exec, sincronizza indietro dopo exec; il workspace locale resta canonicoremote: inizializza il remoto una volta quando la sandbox viene creata, poi mantiene canonico il workspace remoto
remote, le modifiche locali sull’host effettuate fuori da OpenClaw non vengono sincronizzate automaticamente nella sandbox dopo il passaggio di inizializzazione.
Il trasporto avviene tramite SSH nella sandbox OpenShell, ma il plugin gestisce il ciclo di vita della sandbox e l’eventuale sincronizzazione mirror.setupCommand viene eseguito una volta dopo la creazione del container (tramite sh -lc). Richiede uscita di rete, root scrivibile, utente root.I container usano per impostazione predefinita network: "none" — imposta "bridge" (o una rete bridge personalizzata) se l’agente necessita di accesso in uscita.
"host" è bloccato. "container:<id>" è bloccato per impostazione predefinita a meno che tu non imposti esplicitamente
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true (uso di emergenza).Gli allegati in ingresso vengono preparati in media/inbound/* nel workspace attivo.docker.binds monta directory host aggiuntive; i bind globali e per agente vengono uniti.Browser sandbox (sandbox.browser.enabled): Chromium + CDP in un container. L’URL di noVNC viene inserito nel prompt di sistema. Non richiede browser.enabled in openclaw.json.
L’accesso osservatore a noVNC usa l’autenticazione VNC per impostazione predefinita e OpenClaw emette un URL con token di breve durata (invece di esporre la password nell’URL condiviso).allowHostControl: false(predefinito) impedisce alle sessioni sandbox di puntare al browser host.networkusa per impostazione predefinitaopenclaw-sandbox-browser(rete bridge dedicata). Impostabridgesolo quando vuoi esplicitamente una connettività bridge globale.cdpSourceRangelimita facoltativamente l’ingresso CDP al bordo del container a un intervallo CIDR (per esempio172.21.0.1/32).sandbox.browser.bindsmonta directory host aggiuntive solo nel container del browser sandbox. Quando impostato (incluso[]), sostituiscedocker.bindsper il container del browser.- I valori predefiniti di avvio sono definiti in
scripts/sandbox-browser-entrypoint.she ottimizzati per host container:--remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-3d-apis--disable-gpu--disable-software-rasterizer--disable-dev-shm-usage--disable-background-networking--disable-features=TranslateUI--disable-breakpad--disable-crash-reporter--renderer-process-limit=2--no-zygote--metrics-recording-only--disable-extensions(abilitato per impostazione predefinita)--disable-3d-apis,--disable-software-rasterizere--disable-gpusono abilitati per impostazione predefinita e possono essere disabilitati conOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0se l’uso di WebGL/3D lo richiede.OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0riabilita le estensioni se il tuo flusso di lavoro dipende da esse.--renderer-process-limit=2può essere modificato conOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>; imposta0per usare il limite di processi predefinito di Chromium.- più
--no-sandboxe--disable-setuid-sandboxquandonoSandboxè abilitato. - I valori predefiniti sono la baseline dell’immagine container; usa un’immagine browser personalizzata con un entrypoint personalizzato per modificare i valori predefiniti del container.
sandbox.docker.binds sono disponibili solo con Docker.
Crea le immagini:
agents.list (override per agente)
id: id agente stabile (obbligatorio).default: quando ne sono impostati più di uno, vince il primo (viene registrato un avviso). Se non ne è impostato nessuno, la prima voce della lista è quella predefinita.model: la forma stringa sostituisce soloprimary; la forma oggetto{ primary, fallbacks }sostituisce entrambi ([]disabilita i fallback globali). I job cron che sostituiscono soloprimarycontinuano a ereditare i fallback predefiniti, a meno che tu non impostifallbacks: [].params: parametri stream per agente fusi sopra la voce di modello selezionata inagents.defaults.models. Usalo per override specifici dell’agente comecacheRetention,temperatureomaxTokenssenza duplicare l’intero catalogo modelli.skills: allowlist facoltativa di Skills per agente. Se omesso, l’agente ereditaagents.defaults.skillsquando impostato; una lista esplicita sostituisce i valori predefiniti invece di fonderli, e[]significa nessuna Skills.thinkingDefault: valore predefinito facoltativo del livello di thinking per agente (off | minimal | low | medium | high | xhigh | adaptive). Sostituisceagents.defaults.thinkingDefaultper questo agente quando non è impostato alcun override per messaggio o per sessione.reasoningDefault: valore predefinito facoltativo della visibilità del ragionamento per agente (on | off | stream). Si applica quando non è impostato alcun override del ragionamento per messaggio o per sessione.fastModeDefault: valore predefinito facoltativo per agente per la modalità rapida (true | false). Si applica quando non è impostato alcun override della modalità rapida per messaggio o per sessione.embeddedHarness: override facoltativo del criterio harness di basso livello per agente. Usa{ runtime: "codex", fallback: "none" }per rendere un agente solo Codex mentre gli altri agenti mantengono il fallback PI predefinito.runtime: descrittore runtime facoltativo per agente. Usatype: "acp"con i valori predefiniti diruntime.acp(agent,backend,mode,cwd) quando l’agente deve usare per impostazione predefinita sessioni harness ACP.identity.avatar: percorso relativo al workspace, URLhttp(s)o URIdata:.identityderiva i valori predefiniti:ackReactiondaemoji,mentionPatternsdaname/emoji.subagents.allowAgents: allowlist di id agente persessions_spawn(["*"]= qualsiasi; predefinito: solo lo stesso agente).- Protezione di ereditarietà sandbox: se la sessione richiedente è in sandbox,
sessions_spawnrifiuta le destinazioni che verrebbero eseguite senza sandbox. subagents.requireAgentId: quando è true, blocca le chiamatesessions_spawnche omettonoagentId(forza la selezione esplicita del profilo; predefinito: false).
Routing multi-agente
Esegui più agenti isolati all’interno di un unico Gateway. Vedi Multi-Agent.Campi di corrispondenza del binding
type(facoltativo):routeper il routing normale (se manca, il tipo predefinito è route),acpper binding persistenti di conversazioni ACP.match.channel(obbligatorio)match.accountId(facoltativo;*= qualsiasi account; omesso = account predefinito)match.peer(facoltativo;{ kind: direct|group|channel, id })match.guildId/match.teamId(facoltativo; specifico del canale)acp(facoltativo; solo pertype: "acp"):{ mode, label, cwd, backend }
match.peermatch.guildIdmatch.teamIdmatch.accountId(esatto, senza peer/guild/team)match.accountId: "*"(esteso all’intero canale)- Agente predefinito
bindings corrispondente.
Per le voci type: "acp", OpenClaw risolve in base all’identità esatta della conversazione (match.channel + account + match.peer.id) e non usa l’ordine per livelli del route binding descritto sopra.
Profili di accesso per agente
Accesso completo (senza sandbox)
Accesso completo (senza sandbox)
Strumenti + workspace in sola lettura
Strumenti + workspace in sola lettura
Nessun accesso al filesystem (solo messaggistica)
Nessun accesso al filesystem (solo messaggistica)
Sessione
Dettagli dei campi della sessione
Dettagli dei campi della sessione
scope: strategia di raggruppamento delle sessioni di base per i contesti di chat di gruppo.per-sender(predefinito): ogni mittente ottiene una sessione isolata all’interno di un contesto di canale.global: tutti i partecipanti in un contesto di canale condividono una singola sessione (usalo solo quando è previsto un contesto condiviso).
dmScope: come vengono raggruppati i messaggi diretti.main: tutti i messaggi diretti condividono la sessione principale.per-peer: isola per id mittente tra i canali.per-channel-peer: isola per canale + mittente (consigliato per inbox multiutente).per-account-channel-peer: isola per account + canale + mittente (consigliato per multi-account).
identityLinks: mappa gli id canonici ai peer con prefisso provider per la condivisione delle sessioni tra canali.reset: criterio di reset principale.dailyesegue il reset aatHournell’ora locale;idleesegue il reset dopoidleMinutes. Quando sono configurati entrambi, prevale quello che scade per primo.resetByType: override per tipo (direct,group,thread). Il vecchiodmè accettato come alias didirect.parentForkMaxTokens: valore massimo ditotalTokensdella sessione padre consentito quando si crea una sessione thread derivata (predefinito100000).- Se
totalTokensdel padre è superiore a questo valore, OpenClaw avvia una nuova sessione thread invece di ereditare la cronologia della trascrizione del padre. - Imposta
0per disabilitare questa protezione e consentire sempre il fork dal padre.
- Se
mainKey: campo legacy. Il runtime usa sempre"main"per il bucket principale delle chat dirette.agentToAgent.maxPingPongTurns: numero massimo di turni di risposta reciproca tra agenti durante gli scambi agente-agente (intero, intervallo:0–5).0disabilita la catena ping-pong.sendPolicy: corrisponde in base achannel,chatType(direct|group|channel, con alias legacydm),keyPrefixorawKeyPrefix. La prima regola di rifiuto corrispondente prevale.maintenance: controlli di pulizia e conservazione dell’archivio sessioni.mode:warnemette solo avvisi;enforceapplica la pulizia.pruneAfter: soglia di età per le voci obsolete (predefinito30d).maxEntries: numero massimo di voci insessions.json(predefinito500).rotateBytes: ruotasessions.jsonquando supera questa dimensione (predefinito10mb).resetArchiveRetention: conservazione per gli archivi di trascrizione*.reset.<timestamp>. Per impostazione predefinita usapruneAfter; impostafalseper disabilitarla.maxDiskBytes: budget disco facoltativo per la directory delle sessioni. In modalitàwarnregistra avvisi; in modalitàenforcerimuove prima gli artefatti/sessioni più vecchi.highWaterBytes: obiettivo facoltativo dopo la pulizia del budget. Per impostazione predefinita è l’80%dimaxDiskBytes.
threadBindings: valori predefiniti globali per le funzionalità di sessione legate ai thread.enabled: interruttore predefinito principale (i provider possono fare override; Discord usachannels.discord.threadBindings.enabled)idleHours: autofocus off predefinito per inattività in ore (0disabilita; i provider possono fare override)maxAgeHours: età massima rigida predefinita in ore (0disabilita; i provider possono fare override)
Messaggi
Prefisso della risposta
Override per canale/account:channels.<channel>.responsePrefix, channels.<channel>.accounts.<id>.responsePrefix.
Risoluzione (vince il più specifico): account → canale → globale. "" disabilita e interrompe la cascata. "auto" deriva [{identity.name}].
Variabili del template:
| Variabile | Descrizione | Esempio |
|---|---|---|
{model} | Nome breve del modello | claude-opus-4-6 |
{modelFull} | Identificatore completo del modello | anthropic/claude-opus-4-6 |
{provider} | Nome del provider | anthropic |
{thinkingLevel} | Livello di thinking corrente | high, low, off |
{identity.name} | Nome dell’identità agente | (uguale a "auto") |
{think} è un alias di {thinkingLevel}.
Reazione di conferma
- Per impostazione predefinita usa
identity.emojidell’agente attivo, altrimenti"👀". Imposta""per disabilitare. - Override per canale:
channels.<channel>.ackReaction,channels.<channel>.accounts.<id>.ackReaction. - Ordine di risoluzione: account → canale →
messages.ackReaction→ fallback identity. - Ambito:
group-mentions(predefinito),group-all,direct,all. removeAckAfterReply: rimuove la conferma dopo la risposta su Slack, Discord e Telegram.messages.statusReactions.enabled: abilita le reazioni di stato del ciclo di vita su Slack, Discord e Telegram. Su Slack e Discord, se non impostato mantiene abilitate le reazioni di stato quando le reazioni di conferma sono attive. Su Telegram, impostalo esplicitamente sutrueper abilitare le reazioni di stato del ciclo di vita.
Debounce in ingresso
Raggruppa rapidi messaggi di solo testo dello stesso mittente in un singolo turno dell’agente. I media/allegati scaricano immediatamente. I comandi di controllo ignorano il debounce.TTS (sintesi vocale)
autocontrolla la modalità predefinita di auto-TTS:off,always,inboundotagged./tts on|offpuò sostituire le preferenze locali e/tts statusmostra lo stato effettivo.summaryModelsostituisceagents.defaults.model.primaryper il riepilogo automatico.modelOverridesè abilitato per impostazione predefinita;modelOverrides.allowProviderèfalseper impostazione predefinita (attivazione esplicita).- Le chiavi API usano come fallback
ELEVENLABS_API_KEY/XI_API_KEYeOPENAI_API_KEY. openai.baseUrlsostituisce l’endpoint TTS di OpenAI. L’ordine di risoluzione è configurazione, poiOPENAI_TTS_BASE_URL, poihttps://api.openai.com/v1.- Quando
openai.baseUrlpunta a un endpoint non OpenAI, OpenClaw lo tratta come un server TTS compatibile con OpenAI e allenta la convalida di modello/voce.
Talk
Valori predefiniti per la modalità Talk (macOS/iOS/Android).talk.providerdeve corrispondere a una chiave intalk.providersquando sono configurati più provider Talk.- Le vecchie chiavi flat di Talk (
talk.voiceId,talk.voiceAliases,talk.modelId,talk.outputFormat,talk.apiKey) sono solo per compatibilità e vengono migrate automaticamente intalk.providers.<provider>. - Gli ID voce usano come fallback
ELEVENLABS_VOICE_IDoSAG_VOICE_ID. providers.*.apiKeyaccetta stringhe in chiaro o oggetti SecretRef.- Il fallback
ELEVENLABS_API_KEYsi applica solo quando non è configurata alcuna chiave API Talk. providers.*.voiceAliasesconsente alle direttive Talk di usare nomi intuitivi.silenceTimeoutMscontrolla per quanto tempo la modalità Talk attende dopo il silenzio dell’utente prima di inviare la trascrizione. Se non impostato, mantiene la finestra di pausa predefinita della piattaforma (700 ms su macOS e Android, 900 ms su iOS).
Strumenti
Profili degli strumenti
tools.profile imposta una allowlist di base prima di tools.allow/tools.deny:
L’onboarding locale imposta per impostazione predefinita le nuove configurazioni locali su tools.profile: "coding" quando non è impostato (i profili espliciti esistenti vengono mantenuti).
| Profilo | Include |
|---|---|
minimal | solo session_status |
coding | group:fs, group:runtime, group:web, group:sessions, group:memory, cron, image, image_generate, video_generate |
messaging | group:messaging, sessions_list, sessions_history, sessions_send, session_status |
full | Nessuna restrizione (uguale a non impostato) |
Gruppi di strumenti
| Gruppo | Strumenti |
|---|---|
group:runtime | exec, process, code_execution (bash è accettato come alias di exec) |
group:fs | read, write, edit, apply_patch |
group:sessions | sessions_list, sessions_history, sessions_send, sessions_spawn, sessions_yield, subagents, session_status |
group:memory | memory_search, memory_get |
group:web | web_search, x_search, web_fetch |
group:ui | browser, canvas |
group:automation | cron, gateway |
group:messaging | message |
group:nodes | nodes |
group:agents | agents_list |
group:media | image, image_generate, video_generate, tts |
group:openclaw | Tutti gli strumenti integrati (esclude i plugin provider) |
tools.allow / tools.deny
Criterio globale di autorizzazione/rifiuto degli strumenti (il rifiuto prevale). Non distingue tra maiuscole e minuscole, supporta wildcard *. Applicato anche quando la sandbox Docker è disattivata.
tools.byProvider
Limita ulteriormente gli strumenti per provider o modelli specifici. Ordine: profilo di base → profilo provider → allow/deny.
tools.elevated
Controlla l’accesso exec elevato fuori dalla sandbox:
- L’override per agente (
agents.list[].tools.elevated) può solo limitare ulteriormente. /elevated on|off|ask|fullmemorizza lo stato per sessione; le direttive inline si applicano a un singolo messaggio.execelevato bypassa la sandbox e usa il percorso di escape configurato (gatewayper impostazione predefinita, oppurenodequando la destinazione exec ènode).
tools.exec
tools.loopDetection
I controlli di sicurezza per i loop degli strumenti sono disabilitati per impostazione predefinita. Imposta enabled: true per attivare il rilevamento.
Le impostazioni possono essere definite globalmente in tools.loopDetection e sostituite per agente in agents.list[].tools.loopDetection.
historySize: cronologia massima delle chiamate agli strumenti conservata per l’analisi dei loop.warningThreshold: soglia di pattern ripetuti senza avanzamento per gli avvisi.criticalThreshold: soglia ripetuta più alta per bloccare i loop critici.globalCircuitBreakerThreshold: soglia di arresto rigido per qualsiasi esecuzione senza avanzamento.detectors.genericRepeat: avvisa in caso di chiamate ripetute con stesso strumento/stessi argomenti.detectors.knownPollNoProgress: avvisa/blocca gli strumenti di polling noti (process.poll,command_status, ecc.) senza avanzamento.detectors.pingPong: avvisa/blocca pattern alternati a coppie senza avanzamento.- Se
warningThreshold >= criticalThresholdocriticalThreshold >= globalCircuitBreakerThreshold, la convalida fallisce.
tools.web
tools.media
Configura la comprensione dei media in ingresso (immagine/audio/video):
Campi della voce del modello media
Campi della voce del modello media
Voce provider (
type: "provider" o omesso):provider: id del provider API (openai,anthropic,google/gemini,groq, ecc.)model: override dell’id modelloprofile/preferredProfile: selezione del profiloauth-profiles.json
type: "cli"):command: eseguibile da avviareargs: argomenti templati (supporta{{MediaPath}},{{Prompt}},{{MaxChars}}, ecc.)
capabilities: elenco facoltativo (image,audio,video). Valori predefiniti:openai/anthropic/minimax→ image,google→ image+audio+video,groq→ audio.prompt,maxChars,maxBytes,timeoutSeconds,language: override per voce.- In caso di errore, passa alla voce successiva.
auth-profiles.json → variabili d’ambiente → models.providers.*.apiKey.Campi di completamento asincrono:asyncCompletion.directSend: quandotrue, i task asincroni completatimusic_generateevideo_generateprovano prima la consegna diretta al canale. Valore predefinito:false(vecchio percorso di attivazione della sessione richiedente/consegna modello).
tools.agentToAgent
tools.sessions
Controlla quali sessioni possono essere usate come destinazione dagli strumenti di sessione (sessions_list, sessions_history, sessions_send).
Predefinito: tree (sessione corrente + sessioni generate da essa, come i subagent).
self: solo la chiave della sessione corrente.tree: sessione corrente + sessioni generate dalla sessione corrente (subagent).agent: qualsiasi sessione appartenente all’id agente corrente (può includere altri utenti se esegui sessioni per mittente sotto lo stesso id agente).all: qualsiasi sessione. Il targeting tra agenti richiede comunquetools.agentToAgent.- Limite sandbox: quando la sessione corrente è in sandbox e
agents.defaults.sandbox.sessionToolsVisibility="spawned", la visibilità viene forzata atreeanche setools.sessions.visibility="all".
tools.sessions_spawn
Controlla il supporto agli allegati inline per sessions_spawn.
- Gli allegati sono supportati solo per
runtime: "subagent". Il runtime ACP li rifiuta. - I file vengono materializzati nel workspace figlio in
.openclaw/attachments/<uuid>/con un.manifest.json. - Il contenuto degli allegati viene automaticamente oscurato nella persistenza della trascrizione.
- Gli input Base64 vengono convalidati con controlli rigorosi su alfabeto/padding e una protezione sulla dimensione prima della decodifica.
- I permessi dei file sono
0700per le directory e0600per i file. - La pulizia segue il criterio
cleanup:deleterimuove sempre gli allegati;keepli conserva solo quandoretainOnSessionKeep: true.
tools.experimental
Flag sperimentali degli strumenti integrati. Disattivati per impostazione predefinita, salvo quando si applica una regola di auto-attivazione strict-agentic GPT-5.
planTool: abilita lo strumento strutturatoupdate_planper il tracciamento di lavori non banali in più passaggi.- Predefinito:
falsea meno cheagents.defaults.embeddedPi.executionContract(o un override per agente) non sia impostato su"strict-agentic"per un’esecuzione OpenAI o OpenAI Codex della famiglia GPT-5. Impostatrueper forzare l’attivazione dello strumento fuori da tale ambito, oppurefalseper mantenerlo disattivato anche per esecuzioni strict-agentic GPT-5. - Quando abilitato, il prompt di sistema aggiunge anche linee guida d’uso così che il modello lo usi solo per lavori sostanziali e mantenga al massimo un solo passaggio
in_progress.
agents.defaults.subagents
model: modello predefinito per i subagent generati. Se omesso, i subagent ereditano il modello del chiamante.allowAgents: allowlist predefinita degli id agente di destinazione persessions_spawnquando l’agente richiedente non imposta il propriosubagents.allowAgents(["*"]= qualsiasi; predefinito: solo lo stesso agente).runTimeoutSeconds: timeout predefinito (secondi) persessions_spawnquando la chiamata allo strumento ometterunTimeoutSeconds.0significa nessun timeout.- Criterio strumenti per subagent:
tools.subagents.tools.allow/tools.subagents.tools.deny.
Provider personalizzati e URL di base
OpenClaw usa il catalogo modelli integrato. Aggiungi provider personalizzati tramitemodels.providers nella configurazione o ~/.openclaw/agents/<agentId>/agent/models.json.
- Usa
authHeader: true+headersper esigenze di autenticazione personalizzate. - Sostituisci la radice di configurazione dell’agente con
OPENCLAW_AGENT_DIR(oPI_CODING_AGENT_DIR, alias legacy della variabile d’ambiente). - Precedenza di unione per id provider corrispondenti:
- I valori
baseUrlnon vuoti dimodels.jsondell’agente prevalgono. - I valori
apiKeynon vuoti dell’agente prevalgono solo quando quel provider non è gestito da SecretRef nel contesto attuale di configurazione/profilo auth. - I valori
apiKeydel provider gestiti da SecretRef vengono aggiornati dai marcatori sorgente (ENV_VAR_NAMEper riferimenti env,secretref-managedper riferimenti file/exec) invece di mantenere i segreti risolti. - I valori header del provider gestiti da SecretRef vengono aggiornati dai marcatori sorgente (
secretref-env:ENV_VAR_NAMEper riferimenti env,secretref-managedper riferimenti file/exec). apiKey/baseUrldell’agente vuoti o mancanti usano come fallbackmodels.providersnella configurazione.contextWindow/maxTokensdel modello corrispondente usano il valore più alto tra configurazione esplicita e valori impliciti del catalogo.contextTokensdel modello corrispondente conserva un limite runtime esplicito quando presente; usalo per limitare il contesto effettivo senza modificare i metadati nativi del modello.- Usa
models.mode: "replace"quando vuoi che la configurazione riscriva completamentemodels.json. - La persistenza dei marcatori è autorevole rispetto alla sorgente: i marcatori vengono scritti dall’istantanea di configurazione sorgente attiva (prima della risoluzione), non dai valori segreti runtime risolti.
- I valori
Dettagli dei campi del provider
models.mode: comportamento del catalogo provider (mergeoreplace).models.providers: mappa dei provider personalizzati indicizzata per id provider.models.providers.*.api: adattatore di richiesta (openai-completions,openai-responses,anthropic-messages,google-generative-ai, ecc.).models.providers.*.apiKey: credenziale del provider (preferisci SecretRef/sostituzione env).models.providers.*.auth: strategia di autenticazione (api-key,token,oauth,aws-sdk).models.providers.*.injectNumCtxForOpenAICompat: per Ollama +openai-completions, inserisceoptions.num_ctxnelle richieste (predefinito:true).models.providers.*.authHeader: forza il trasporto della credenziale nell’headerAuthorizationquando richiesto.models.providers.*.baseUrl: URL di base dell’API upstream.models.providers.*.headers: header statici aggiuntivi per il routing proxy/tenant.models.providers.*.request: override di trasporto per le richieste HTTP del model provider.request.headers: header aggiuntivi (fusi con i valori predefiniti del provider). I valori accettano SecretRef.request.auth: override della strategia di autenticazione. Modalità:"provider-default"(usa l’autenticazione integrata del provider),"authorization-bearer"(contoken),"header"(conheaderName,value,prefixfacoltativo).request.proxy: override del proxy HTTP. Modalità:"env-proxy"(usa le variabili d’ambienteHTTP_PROXY/HTTPS_PROXY),"explicit-proxy"(conurl). Entrambe le modalità accettano un sotto-oggettotlsfacoltativo.request.tls: override TLS per connessioni dirette. Campi:ca,cert,key,passphrase(tutti accettano SecretRef),serverName,insecureSkipVerify.request.allowPrivateNetwork: quandotrue, consente HTTPS versobaseUrlquando il DNS si risolve in intervalli privati, CGNAT o simili, tramite la protezione fetch HTTP del provider (attivazione esplicita dell’operatore per endpoint OpenAI-compatibili self-hosted attendibili). WebSocket usa la stessarequestper header/TLS ma non quella protezione SSRF di fetch. Predefinitofalse.
models.providers.*.models: voci esplicite del catalogo modelli del provider.models.providers.*.models.*.contextWindow: metadati della finestra di contesto nativa del modello.models.providers.*.models.*.contextTokens: limite di contesto runtime facoltativo. Usalo quando vuoi un budget di contesto effettivo più piccolo dicontextWindownativo del modello.models.providers.*.models.*.compat.supportsDeveloperRole: suggerimento facoltativo di compatibilità. Perapi: "openai-completions"con unbaseUrlnon nativo non vuoto (host diverso daapi.openai.com), OpenClaw lo forza afalsein fase di esecuzione. UnbaseUrlvuoto/omesso mantiene il comportamento OpenAI predefinito.models.providers.*.models.*.compat.requiresStringContent: suggerimento facoltativo di compatibilità per endpoint chat OpenAI-compatibili che accettano solo stringhe. Quandotrue, OpenClaw appiattisce gli arraymessages[].contentdi puro testo in stringhe semplici prima di inviare la richiesta.plugins.entries.amazon-bedrock.config.discovery: radice delle impostazioni di auto-discovery Bedrock.plugins.entries.amazon-bedrock.config.discovery.enabled: attiva/disattiva la discovery implicita.plugins.entries.amazon-bedrock.config.discovery.region: regione AWS per la discovery.plugins.entries.amazon-bedrock.config.discovery.providerFilter: filtro facoltativo dell’id provider per discovery mirata.plugins.entries.amazon-bedrock.config.discovery.refreshInterval: intervallo di polling per l’aggiornamento della discovery.plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow: finestra di contesto di fallback per i modelli individuati.plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: numero massimo di token in output di fallback per i modelli individuati.
Esempi di provider
Cerebras (GLM 4.6 / 4.7)
Cerebras (GLM 4.6 / 4.7)
cerebras/zai-glm-4.7 per Cerebras; zai/glm-4.7 per Z.AI diretto.OpenCode
OpenCode
OPENCODE_API_KEY (o OPENCODE_ZEN_API_KEY). Usa riferimenti opencode/... per il catalogo Zen o riferimenti opencode-go/... per il catalogo Go. Scorciatoia: openclaw onboard --auth-choice opencode-zen o openclaw onboard --auth-choice opencode-go.Z.AI (GLM-4.7)
Z.AI (GLM-4.7)
ZAI_API_KEY. z.ai/* e z-ai/* sono alias accettati. Scorciatoia: openclaw onboard --auth-choice zai-api-key.- Endpoint generale:
https://api.z.ai/api/paas/v4 - Endpoint coding (predefinito):
https://api.z.ai/api/coding/paas/v4 - Per l’endpoint generale, definisci un provider personalizzato con l’override del base URL.
Moonshot AI (Kimi)
Moonshot AI (Kimi)
baseUrl: "https://api.moonshot.cn/v1" oppure openclaw onboard --auth-choice moonshot-api-key-cn.Gli endpoint Moonshot nativi dichiarano la compatibilità d’uso dello streaming sul trasporto condiviso
openai-completions, e OpenClaw la determina in base alle capacità dell’endpoint
piuttosto che solo all’id provider integrato.Kimi Coding
Kimi Coding
openclaw onboard --auth-choice kimi-code-api-key.Synthetic (compatibile con Anthropic)
Synthetic (compatibile con Anthropic)
/v1 (il client Anthropic lo aggiunge). Scorciatoia: openclaw onboard --auth-choice synthetic-api-key.MiniMax M2.7 (diretto)
MiniMax M2.7 (diretto)
MINIMAX_API_KEY. Scorciatoie:
openclaw onboard --auth-choice minimax-global-api oppure
openclaw onboard --auth-choice minimax-cn-api.
Il catalogo modelli usa per impostazione predefinita solo M2.7.
Nel percorso di streaming compatibile con Anthropic, OpenClaw disabilita il thinking di MiniMax
per impostazione predefinita a meno che tu non imposti esplicitamente thinking. /fast on o
params.fastMode: true riscrivono MiniMax-M2.7 in
MiniMax-M2.7-highspeed.Modelli locali (LM Studio)
Modelli locali (LM Studio)
Vedi Local Models. In breve: esegui un grande modello locale tramite LM Studio Responses API su hardware serio; mantieni uniti i modelli ospitati per il fallback.
Skills
allowBundled: allowlist facoltativa solo per le Skills integrate (le Skills gestite/workspace non sono interessate).load.extraDirs: radici aggiuntive di Skills condivise (precedenza più bassa).install.preferBrew: quando è true, preferisce gli installer Homebrew quandobrewè disponibile, prima di passare ad altri tipi di installer.install.nodeManager: preferenza dell’installer Node per le specifichemetadata.openclaw.install(npm|pnpm|yarn|bun).entries.<skillKey>.enabled: falsedisabilita una Skills anche se è integrata/installata.entries.<skillKey>.apiKey: scorciatoia per le Skills che dichiarano una variabile env primaria (stringa in chiaro o oggetto SecretRef).
Plugins
- Caricati da
~/.openclaw/extensions,<workspace>/.openclaw/extensions, piùplugins.load.paths. - La discovery accetta plugin OpenClaw nativi più bundle Codex compatibili e bundle Claude, inclusi bundle Claude senza manifest con layout predefinito.
- Le modifiche alla configurazione richiedono un riavvio del gateway.
allow: allowlist facoltativa (vengono caricati solo i plugin elencati).denyprevale.plugins.entries.<id>.apiKey: campo di comodità per la chiave API a livello di plugin (quando supportato dal plugin).plugins.entries.<id>.env: mappa di variabili d’ambiente con ambito plugin.plugins.entries.<id>.hooks.allowPromptInjection: quandofalse, il core bloccabefore_prompt_builde ignora i campi che modificano il prompt dal vecchiobefore_agent_start, preservando però i vecchimodelOverrideeproviderOverride. Si applica agli hook dei plugin nativi e alle directory hook fornite dai bundle supportati.plugins.entries.<id>.subagent.allowModelOverride: considera esplicitamente attendibile questo plugin per richiedere override per esecuzione diprovideremodelper esecuzioni di subagent in background.plugins.entries.<id>.subagent.allowedModels: allowlist facoltativa di destinazioni canonicheprovider/modelper override attendibili dei subagent. Usa"*"solo quando vuoi intenzionalmente consentire qualsiasi modello.plugins.entries.<id>.config: oggetto di configurazione definito dal plugin (convalidato dallo schema del plugin OpenClaw nativo quando disponibile).plugins.entries.firecrawl.config.webFetch: impostazioni del provider Firecrawl per web fetch.apiKey: chiave API Firecrawl (accetta SecretRef). Usa come fallbackplugins.entries.firecrawl.config.webSearch.apiKey, il vecchiotools.web.fetch.firecrawl.apiKeyo la variabile d’ambienteFIRECRAWL_API_KEY.baseUrl: URL di base dell’API Firecrawl (predefinito:https://api.firecrawl.dev).onlyMainContent: estrae solo il contenuto principale dalle pagine (predefinito:true).maxAgeMs: età massima della cache in millisecondi (predefinito:172800000/ 2 giorni).timeoutSeconds: timeout della richiesta di scraping in secondi (predefinito:60).
plugins.entries.xai.config.xSearch: impostazioni xAI X Search (ricerca web Grok).enabled: abilita il provider X Search.model: modello Grok da usare per la ricerca (ad esempio"grok-4-1-fast").
plugins.entries.memory-core.config.dreaming: impostazioni del dreaming della memoria (sperimentale). Vedi Dreaming per fasi e soglie.enabled: interruttore principale del dreaming (predefinitofalse).frequency: cadenza cron per ogni passaggio completo di dreaming (predefinita"0 3 * * *").- i criteri di fase e le soglie sono dettagli implementativi (non chiavi di configurazione rivolte all’utente).
- La configurazione completa della memoria si trova in Memory configuration reference:
agents.defaults.memorySearch.*memory.backendmemory.citationsmemory.qmd.*plugins.entries.memory-core.config.dreaming
- I plugin bundle Claude abilitati possono anche contribuire con valori predefiniti di Pi incorporati da
settings.json; OpenClaw li applica come impostazioni dell’agente sanificate, non come patch grezze della configurazione OpenClaw. plugins.slots.memory: scegli l’id del plugin memoria attivo, oppure"none"per disabilitare i plugin memoria.plugins.slots.contextEngine: scegli l’id del plugin motore di contesto attivo; il valore predefinito è"legacy"a meno che tu non installi e selezioni un altro motore.plugins.installs: metadati di installazione gestiti dalla CLI usati daopenclaw plugins update.- Include
source,spec,sourcePath,installPath,version,resolvedName,resolvedVersion,resolvedSpec,integrity,shasum,resolvedAt,installedAt. - Tratta
plugins.installs.*come stato gestito; preferisci i comandi CLI alle modifiche manuali.
- Include
Browser
evaluateEnabled: falsedisabilitaact:evaluateewait --fn.ssrfPolicy.dangerouslyAllowPrivateNetworkè disabilitato quando non impostato, quindi la navigazione del browser resta rigorosa per impostazione predefinita.- Imposta
ssrfPolicy.dangerouslyAllowPrivateNetwork: truesolo quando ti fidi intenzionalmente della navigazione del browser su reti private. - In modalità rigorosa, gli endpoint dei profili CDP remoti (
profiles.*.cdpUrl) sono soggetti allo stesso blocco delle reti private durante i controlli di raggiungibilità/discovery. ssrfPolicy.allowPrivateNetworkresta supportato come alias legacy.- In modalità rigorosa, usa
ssrfPolicy.hostnameAllowlistessrfPolicy.allowedHostnamesper eccezioni esplicite. - I profili remoti sono solo attach-only (avvio/arresto/reset disabilitati).
profiles.*.cdpUrlaccettahttp://,https://,ws://ewss://. Usa HTTP(S) quando vuoi che OpenClaw rilevi/json/version; usa WS(S) quando il tuo provider ti fornisce un URL WebSocket DevTools diretto.- I profili
existing-sessionsono solo host e usano Chrome MCP invece di CDP. - I profili
existing-sessionpossono impostareuserDataDirper puntare a un profilo specifico di browser basato su Chromium come Brave o Edge. - I profili
existing-sessionmantengono gli attuali limiti del percorso Chrome MCP: azioni basate su snapshot/riferimenti invece del targeting con selettori CSS, hook di upload di un solo file, nessun override del timeout delle finestre di dialogo, nessunwait --load networkidle, e nessunresponsebody, esportazione PDF, intercettazione dei download o azioni batch. - I profili
openclawgestiti localmente assegnano automaticamentecdpPortecdpUrl; impostacdpUrlesplicitamente solo per CDP remoto. - Ordine di rilevamento automatico: browser predefinito se basato su Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
- Servizio di controllo: solo loopback (porta derivata da
gateway.port, predefinita18791). extraArgsaggiunge flag di avvio extra all’avvio locale di Chromium (per esempio--disable-gpu, dimensionamento finestra o flag di debug).
UI
seamColor: colore di accento per il chrome della UI dell’app nativa (tinta del fumetto della modalità Talk, ecc.).assistant: override dell’identità della Control UI. Usa come fallback l’identità dell’agente attivo.
Gateway
Dettagli dei campi del gateway
Dettagli dei campi del gateway
mode:local(esegue il gateway) oremote(si connette a un gateway remoto). Il gateway rifiuta di avviarsi a meno che non sialocal.port: porta singola multiplexata per WS + HTTP. Precedenza:--port>OPENCLAW_GATEWAY_PORT>gateway.port>18789.bind:auto,loopback(predefinito),lan(0.0.0.0),tailnet(solo IP Tailscale) ocustom.- Alias bind legacy: usa i valori della modalità bind in
gateway.bind(auto,loopback,lan,tailnet,custom), non gli alias host (0.0.0.0,127.0.0.1,localhost,::,::1). - Nota Docker: il bind predefinito
loopbackascolta su127.0.0.1dentro il container. Con il networking bridge Docker (-p 18789:18789), il traffico arriva sueth0, quindi il gateway non è raggiungibile. Usa--network host, oppure impostabind: "lan"(obind: "custom"concustomBindHost: "0.0.0.0") per ascoltare su tutte le interfacce. - Auth: richiesta per impostazione predefinita. I bind non loopback richiedono l’autenticazione del gateway. In pratica ciò significa un token/password condiviso oppure un reverse proxy identity-aware con
gateway.auth.mode: "trusted-proxy". La procedura guidata di onboarding genera un token per impostazione predefinita. - Se sono configurati sia
gateway.auth.tokensiagateway.auth.password(inclusi SecretRef), imposta esplicitamentegateway.auth.modesutokenopassword. L’avvio e i flussi di installazione/riparazione del servizio falliscono quando entrambi sono configurati e la modalità non è impostata. gateway.auth.mode: "none": modalità esplicita senza autenticazione. Usala solo per configurazioni attendibili su local loopback; intenzionalmente questa opzione non viene proposta dai prompt di onboarding.gateway.auth.mode: "trusted-proxy": delega l’autenticazione a un reverse proxy identity-aware e si fida degli header di identità dagateway.trustedProxies(vedi Trusted Proxy Auth). Questa modalità si aspetta una sorgente proxy non loopback; i reverse proxy loopback sullo stesso host non soddisfano l’autenticazione trusted-proxy.gateway.auth.allowTailscale: quandotrue, gli header di identità di Tailscale Serve possono soddisfare l’autenticazione di Control UI/WebSocket (verificata tramitetailscale whois). Gli endpoint API HTTP non usano quell’autenticazione tramite header Tailscale; seguono invece la normale modalità HTTP auth del gateway. Questo flusso senza token presuppone che l’host del gateway sia attendibile. Il valore predefinito ètruequandotailscale.mode = "serve".gateway.auth.rateLimit: limitatore facoltativo per autenticazioni fallite. Si applica per IP client e per ambito auth (segreto condiviso e token dispositivo vengono tracciati indipendentemente). I tentativi bloccati restituiscono429+Retry-After.- Sul percorso asincrono Tailscale Serve Control UI, i tentativi falliti per lo stesso
{scope, clientIp}vengono serializzati prima della scrittura del fallimento. Tentativi errati concorrenti dello stesso client possono quindi attivare il limitatore alla seconda richiesta invece di passare entrambi come semplici mancati match. gateway.auth.rateLimit.exemptLoopbackètrueper impostazione predefinita; impostafalsequando vuoi intenzionalmente limitare anche il traffico localhost (per setup di test o deployment proxy rigorosi).
- Sul percorso asincrono Tailscale Serve Control UI, i tentativi falliti per lo stesso
- I tentativi di autenticazione WS con origine browser vengono sempre limitati con l’esenzione loopback disabilitata (difesa in profondità contro brute force localhost basato su browser).
- Su loopback, quei blocchi di origine browser sono isolati per valore
Originnormalizzato, così fallimenti ripetuti da un’origine localhost non bloccano automaticamente un’origine diversa. tailscale.mode:serve(solo tailnet, bind loopback) ofunnel(pubblico, richiede auth).controlUi.allowedOrigins: allowlist esplicita delle origini browser per le connessioni WebSocket al Gateway. Richiesta quando ci si aspettano client browser da origini non loopback.controlUi.dangerouslyAllowHostHeaderOriginFallback: modalità pericolosa che abilita il fallback dell’origine dall’header Host per deployment che si basano intenzionalmente su una policy di origine basata su Host-header.remote.transport:ssh(predefinito) odirect(ws/wss). Perdirect,remote.urldeve esserews://owss://.OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1: override break-glass lato client che consentews://in chiaro verso IP attendibili di rete privata; il valore predefinito resta solo loopback per il traffico in chiaro.gateway.remote.token/.passwordsono campi credenziali del client remoto. Non configurano da soli l’autenticazione del gateway.gateway.push.apns.relay.baseUrl: URL HTTPS di base per il relay APNs esterno usato dalle build iOS ufficiali/TestFlight dopo che pubblicano registrazioni relay-backed sul gateway. Questo URL deve corrispondere all’URL relay compilato nella build iOS.gateway.push.apns.relay.timeoutMs: timeout in millisecondi per l’invio dal gateway al relay. Predefinito10000.- Le registrazioni relay-backed sono delegate a una specifica identità gateway. L’app iOS associata recupera
gateway.identity.get, include quell’identità nella registrazione relay e inoltra al gateway una concessione di invio con ambito di registrazione. Un altro gateway non può riutilizzare quella registrazione memorizzata. OPENCLAW_APNS_RELAY_BASE_URL/OPENCLAW_APNS_RELAY_TIMEOUT_MS: override env temporanei per la configurazione relay sopra indicata.OPENCLAW_APNS_RELAY_ALLOW_HTTP=true: escape hatch solo per sviluppo per URL relay HTTP loopback. Gli URL relay di produzione devono restare su HTTPS.gateway.channelHealthCheckMinutes: intervallo in minuti del monitor di salute dei canali. Imposta0per disabilitare globalmente i riavvii del monitor di salute. Predefinito:5.gateway.channelStaleEventThresholdMinutes: soglia in minuti per socket obsoleti. Mantienila maggiore o uguale agateway.channelHealthCheckMinutes. Predefinito:30.gateway.channelMaxRestartsPerHour: numero massimo di riavvii del monitor di salute per canale/account in un’ora mobile. Predefinito:10.channels.<provider>.healthMonitor.enabled: opt-out per canale dei riavvii del monitor di salute mantenendo attivo il monitor globale.channels.<provider>.accounts.<accountId>.healthMonitor.enabled: override per account per canali multi-account. Quando impostato, ha precedenza sull’override a livello canale.- I percorsi di chiamata del gateway locale possono usare
gateway.remote.*come fallback solo quandogateway.auth.*non è impostato. - Se
gateway.auth.token/gateway.auth.passwordè configurato esplicitamente tramite SecretRef e non risolto, la risoluzione fallisce in modalità chiusa (nessun fallback remoto che mascheri il problema). trustedProxies: IP dei reverse proxy che terminano TLS o inseriscono header del client inoltrato. Elenca solo proxy che controlli. Le voci loopback restano valide per setup con proxy sullo stesso host/rilevamento locale (per esempio Tailscale Serve o un reverse proxy locale), ma non rendono le richieste loopback idonee agateway.auth.mode: "trusted-proxy".allowRealIpFallback: quandotrue, il gateway accettaX-Real-IPse mancaX-Forwarded-For. Predefinitofalseper comportamento fail-closed.gateway.tools.deny: nomi di strumenti aggiuntivi bloccati per HTTPPOST /tools/invoke(estende la deny list predefinita).gateway.tools.allow: rimuove nomi di strumenti dalla deny list HTTP predefinita.
Endpoint compatibili con OpenAI
- Chat Completions: disabilitato per impostazione predefinita. Abilitalo con
gateway.http.endpoints.chatCompletions.enabled: true. - API Responses:
gateway.http.endpoints.responses.enabled. - Hardened URL-input per Responses:
gateway.http.endpoints.responses.maxUrlPartsgateway.http.endpoints.responses.files.urlAllowlistgateway.http.endpoints.responses.images.urlAllowlistLe allowlist vuote vengono trattate come non impostate; usagateway.http.endpoints.responses.files.allowUrl=falsee/ogateway.http.endpoints.responses.images.allowUrl=falseper disabilitare il recupero tramite URL.
- Header facoltativo di hardening della risposta:
gateway.http.securityHeaders.strictTransportSecurity(impostalo solo per origini HTTPS che controlli; vedi Trusted Proxy Auth)
Isolamento multiistanza
Esegui più gateway su un host con porte e directory di stato uniche:--dev (usa ~/.openclaw-dev + porta 19001), --profile <name> (usa ~/.openclaw-<name>).
Vedi Multiple Gateways.
gateway.tls
enabled: abilita la terminazione TLS sul listener gateway (HTTPS/WSS) (predefinito:false).autoGenerate: genera automaticamente una coppia locale certificato/chiave self-signed quando non sono configurati file espliciti; solo per uso locale/dev.certPath: percorso filesystem del file certificato TLS.keyPath: percorso filesystem del file chiave privata TLS; mantienilo con permessi limitati.caPath: percorso facoltativo del bundle CA per verifica client o catene di trust personalizzate.
gateway.reload
mode: controlla come vengono applicate in fase di esecuzione le modifiche alla configurazione."off": ignora le modifiche live; i cambiamenti richiedono un riavvio esplicito."restart": riavvia sempre il processo gateway in caso di modifica della configurazione."hot": applica le modifiche nel processo senza riavvio."hybrid"(predefinito): prova prima l’hot reload; se necessario, passa al riavvio.
debounceMs: finestra di debounce in ms prima che le modifiche alla configurazione vengano applicate (intero non negativo).deferralTimeoutMs: tempo massimo in ms di attesa per le operazioni in corso prima di forzare un riavvio (predefinito:300000= 5 minuti).
Hook
Authorization: Bearer <token> oppure x-openclaw-token: <token>.
I token hook nella query string vengono rifiutati.
Note su convalida e sicurezza:
hooks.enabled=truerichiede unhooks.tokennon vuoto.hooks.tokendeve essere distinto dagateway.auth.token; il riutilizzo del token Gateway viene rifiutato.hooks.pathnon può essere/; usa un sottopercorso dedicato come/hooks.- Se
hooks.allowRequestSessionKey=true, limitahooks.allowedSessionKeyPrefixes(per esempio["hook:"]).
POST /hooks/wake→{ text, mode?: "now"|"next-heartbeat" }POST /hooks/agent→{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }sessionKeydal payload della richiesta è accettato solo quandohooks.allowRequestSessionKey=true(predefinito:false).
POST /hooks/<name>→ risolto tramitehooks.mappings
Dettagli della mappatura
Dettagli della mappatura
match.pathcorrisponde al sottopercorso dopo/hooks(ad esempio/hooks/gmail→gmail).match.sourcecorrisponde a un campo del payload per percorsi generici.- I template come
{{messages[0].subject}}leggono dal payload. transformpuò puntare a un modulo JS/TS che restituisce un’azione hook.transform.moduledeve essere un percorso relativo e restare entrohooks.transformsDir(i percorsi assoluti e l’attraversamento vengono rifiutati).
agentIdinstrada a un agente specifico; gli ID sconosciuti usano come fallback il predefinito.allowedAgentIds: limita l’instradamento esplicito (*o omesso = consenti tutti,[]= nega tutti).defaultSessionKey: chiave sessione fissa facoltativa per esecuzioni dell’agente hook senzasessionKeyesplicito.allowRequestSessionKey: consente ai chiamanti di/hooks/agentdi impostaresessionKey(predefinito:false).allowedSessionKeyPrefixes: allowlist facoltativa di prefissi per valorisessionKeyespliciti (richiesta + mappatura), ad esempio["hook:"].deliver: trueinvia la risposta finale a un canale;channelusa come predefinitolast.modelsostituisce l’LLM per questa esecuzione hook (deve essere consentito se è impostato il catalogo modelli).
Integrazione Gmail
- Il gateway avvia automaticamente
gog gmail watch serveall’avvio quando è configurato. ImpostaOPENCLAW_SKIP_GMAIL_WATCHER=1per disabilitarlo. - Non eseguire un
gog gmail watch serveseparato insieme al Gateway.
Host canvas
- Serve HTML/CSS/JS modificabili dall’agente e A2UI tramite HTTP sotto la porta del Gateway:
http://<gateway-host>:<gateway.port>/__openclaw__/canvas/http://<gateway-host>:<gateway.port>/__openclaw__/a2ui/
- Solo locale: mantieni
gateway.bind: "loopback"(predefinito). - Bind non loopback: le route canvas richiedono l’autenticazione Gateway (token/password/trusted-proxy), come le altre superfici HTTP del Gateway.
- I WebView Node in genere non inviano header di autenticazione; dopo che un node è associato e connesso, il Gateway pubblicizza URL di capability con ambito node per l’accesso a canvas/A2UI.
- Gli URL di capability sono associati alla sessione WS attiva del node e scadono rapidamente. Non viene usato alcun fallback basato su IP.
- Inserisce il client di live reload nell’HTML servito.
- Crea automaticamente un
index.htmliniziale quando è vuoto. - Serve anche A2UI in
/__openclaw__/a2ui/. - Le modifiche richiedono un riavvio del gateway.
- Disabilita il live reload per directory grandi o errori
EMFILE.
Discovery
mDNS (Bonjour)
minimal(predefinito): omettecliPath+sshPortdai record TXT.full: includecliPath+sshPort.- L’hostname usa come predefinito
openclaw. Sostituiscilo conOPENCLAW_MDNS_HOSTNAME.
Wide-area (DNS-SD)
~/.openclaw/dns/. Per la discovery tra reti, abbinalo a un server DNS (CoreDNS consigliato) + split DNS Tailscale.
Configurazione: openclaw dns setup --apply.
Ambiente
env (variabili env inline)
- Le variabili env inline vengono applicate solo se nell’env del processo manca la chiave.
- File
.env:.envdella CWD +~/.openclaw/.env(nessuno dei due sostituisce variabili esistenti). shellEnv: importa le chiavi previste mancanti dal profilo della tua shell di login.- Vedi Environment per la precedenza completa.
Sostituzione delle variabili env
Fai riferimento alle variabili env in qualsiasi stringa di configurazione con${VAR_NAME}:
- Vengono corrisposti solo nomi in maiuscolo:
[A-Z_][A-Z0-9_]*. - Variabili mancanti/vuote generano un errore durante il caricamento della configurazione.
- Escape con
$${VAR}per un letterale${VAR}. - Funziona con
$include.
Segreti
I riferimenti ai segreti sono additivi: i valori in chiaro continuano a funzionare.SecretRef
Usa una forma oggetto:
- pattern
provider:^[a-z][a-z0-9_-]{0,63}$ - pattern id
source: "env":^[A-Z][A-Z0-9_]{0,127}$ - id
source: "file": puntatore JSON assoluto (per esempio"/providers/openai/apiKey") - pattern id
source: "exec":^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$ - gli id
source: "exec"non devono contenere segmenti di percorso delimitati da slash.o..(per esempioa/../bviene rifiutato)
Superficie credenziali supportata
- Matrice canonica: SecretRef Credential Surface
secrets applyusa come destinazione i percorsi credenziali supportati diopenclaw.json.- I riferimenti
auth-profiles.jsonsono inclusi nella risoluzione runtime e nella copertura di audit.
Configurazione dei provider di segreti
- Il provider
filesupportamode: "json"emode: "singleValue"(iddeve essere"value"in modalità singleValue). - Il provider
execrichiede un percorsocommandassoluto e usa payload di protocollo su stdin/stdout. - Per impostazione predefinita, i percorsi di comando symlink vengono rifiutati. Imposta
allowSymlinkCommand: trueper consentire percorsi symlink validando però il percorso target risolto. - Se
trustedDirsè configurato, il controllo delle directory attendibili si applica al percorso target risolto. - L’ambiente figlio
execè minimo per impostazione predefinita; passa esplicitamente le variabili richieste conpassEnv. - I riferimenti ai segreti vengono risolti al momento dell’attivazione in un’istantanea in memoria, poi i percorsi di richiesta leggono solo l’istantanea.
- Il filtraggio della superficie attiva si applica durante l’attivazione: i riferimenti non risolti sulle superfici abilitate fanno fallire avvio/reload, mentre le superfici inattive vengono saltate con diagnostica.
Archiviazione auth
- I profili per agente sono archiviati in
<agentDir>/auth-profiles.json. auth-profiles.jsonsupporta riferimenti a livello di valore (keyRefperapi_key,tokenRefpertoken) per modalità di credenziali statiche.- I profili in modalità OAuth (
auth.profiles.<id>.mode = "oauth") non supportano credenziali di profilo auth basate su SecretRef. - Le credenziali runtime statiche provengono da istantanee risolte in memoria; le vecchie voci statiche
auth.jsonvengono ripulite quando rilevate. - Importazioni OAuth legacy da
~/.openclaw/credentials/oauth.json. - Vedi OAuth.
- Comportamento runtime dei segreti e strumenti
audit/configure/apply: Secrets Management.
auth.cooldowns
billingBackoffHours: backoff di base in ore quando un profilo fallisce per veri errori di fatturazione/credito insufficiente (predefinito:5). Testi espliciti di fatturazione possono comunque finire qui anche su risposte401/403, ma i matcher di testo specifici del provider restano limitati al provider che li possiede (per esempio OpenRouterKey limit exceeded). I messaggi402ritentabili relativi a finestra d’uso o limiti di spesa di organizzazione/workspace restano invece nel percorsorate_limit.billingBackoffHoursByProvider: override facoltativi per provider delle ore di backoff di fatturazione.billingMaxHours: limite massimo in ore per la crescita esponenziale del backoff di fatturazione (predefinito:24).authPermanentBackoffMinutes: backoff di base in minuti per erroriauth_permanentad alta confidenza (predefinito:10).authPermanentMaxMinutes: limite massimo in minuti per la crescita del backoffauth_permanent(predefinito:60).failureWindowHours: finestra mobile in ore usata per i contatori di backoff (predefinito:24).overloadedProfileRotations: massimo numero di rotazioni dello stesso provider auth-profile per errori di sovraccarico prima di passare al fallback del modello (predefinito:1). Le forme di provider occupato comeModelNotReadyExceptionfiniscono qui.overloadedBackoffMs: ritardo fisso prima di ritentare una rotazione di provider/profilo sovraccarico (predefinito:0).rateLimitedProfileRotations: massimo numero di rotazioni dello stesso provider auth-profile per errori di rate limit prima di passare al fallback del modello (predefinito:1). Quel bucket di rate limit include testo tipico del provider comeToo many concurrent requests,ThrottlingException,concurrency limit reached,workers_ai ... quota limit exceedederesource exhausted.
Logging
- File di log predefinito:
/tmp/openclaw/openclaw-YYYY-MM-DD.log. - Imposta
logging.fileper un percorso stabile. consoleLevelpassa adebugcon--verbose.maxFileBytes: dimensione massima del file di log in byte prima che le scritture vengano soppresse (intero positivo; predefinito:524288000= 500 MB). Usa una rotazione esterna dei log per i deployment di produzione.
Diagnostica
enabled: interruttore principale per l’output di strumentazione (predefinito:true).flags: array di stringhe flag che abilita output di log mirati (supporta wildcard come"telegram.*"o"*").stuckSessionWarnMs: soglia di età in ms per emettere avvisi di sessione bloccata mentre una sessione resta nello stato di elaborazione.otel.enabled: abilita la pipeline di esportazione OpenTelemetry (predefinito:false).otel.endpoint: URL del collector per l’esportazione OTel.otel.protocol:"http/protobuf"(predefinito) o"grpc".otel.headers: header di metadati HTTP/gRPC aggiuntivi inviati con le richieste di esportazione OTel.otel.serviceName: nome del servizio per gli attributi della risorsa.otel.traces/otel.metrics/otel.logs: abilita l’esportazione di trace, metriche o log.otel.sampleRate: frequenza di campionamento delle trace0–1.otel.flushIntervalMs: intervallo periodico di flush della telemetria in ms.cacheTrace.enabled: registra snapshot del trace della cache per esecuzioni incorporate (predefinito:false).cacheTrace.filePath: percorso di output per il JSONL del trace della cache (predefinito:$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl).cacheTrace.includeMessages/includePrompt/includeSystem: controlla cosa è incluso nell’output del trace della cache (tutti predefiniti:true).
Aggiornamento
channel: canale di rilascio per installazioni npm/git —"stable","beta"o"dev".checkOnStart: verifica aggiornamenti npm all’avvio del gateway (predefinito:true).auto.enabled: abilita l’aggiornamento automatico in background per le installazioni di pacchetti (predefinito:false).auto.stableDelayHours: ritardo minimo in ore prima dell’applicazione automatica sul canale stable (predefinito:6; max:168).auto.stableJitterHours: finestra aggiuntiva di distribuzione graduale del canale stable in ore (predefinito:12; max:168).auto.betaCheckIntervalHours: frequenza in ore dei controlli sul canale beta (predefinito:1; max:24).
ACP
enabled: gate globale della funzionalità ACP (predefinito:false).dispatch.enabled: gate indipendente per il dispatch dei turni di sessione ACP (predefinito:true). Impostafalseper mantenere disponibili i comandi ACP bloccandone però l’esecuzione.backend: id backend runtime ACP predefinito (deve corrispondere a un plugin runtime ACP registrato).defaultAgent: id agente ACP di fallback quando gli spawn non specificano una destinazione esplicita.allowedAgents: allowlist di id agente consentiti per le sessioni runtime ACP; vuoto significa nessuna restrizione aggiuntiva.maxConcurrentSessions: numero massimo di sessioni ACP attive contemporaneamente.stream.coalesceIdleMs: finestra di flush per inattività in ms per il testo in streaming.stream.maxChunkChars: dimensione massima del blocco prima della suddivisione della proiezione dei blocchi in streaming.stream.repeatSuppression: sopprime righe di stato/strumenti ripetute per turno (predefinito:true).stream.deliveryMode:"live"trasmette incrementalmente;"final_only"bufferizza fino agli eventi terminali del turno.stream.hiddenBoundarySeparator: separatore prima del testo visibile dopo eventi di strumenti nascosti (predefinito:"paragraph").stream.maxOutputChars: numero massimo di caratteri di output dell’assistente proiettati per turno ACP.stream.maxSessionUpdateChars: numero massimo di caratteri per righe di stato/aggiornamento ACP proiettate.stream.tagVisibility: record dei nomi dei tag con override booleani di visibilità per eventi in streaming.runtime.ttlMinutes: TTL di inattività in minuti per i worker di sessione ACP prima che possano essere ripuliti.runtime.installCommand: comando di installazione facoltativo da eseguire durante il bootstrap di un ambiente runtime ACP.
CLI
cli.banner.taglineModecontrolla lo stile del tagline del banner:"random"(predefinito): tagline a rotazione divertenti/stagionali."default": tagline neutro fisso (All your chats, one OpenClaw.)."off": nessun testo tagline (titolo/versione del banner ancora mostrati).
- Per nascondere l’intero banner (non solo i tagline), imposta la variabile env
OPENCLAW_HIDE_BANNER=1.
Wizard
Metadati scritti dai flussi di configurazione guidata della CLI (onboard, configure, doctor):
Identità
Vedi i campi identity diagents.list in Valori predefiniti dell’agente.
Bridge (legacy, rimosso)
Le build correnti non includono più il bridge TCP. I node si connettono tramite il Gateway WebSocket. Le chiavibridge.* non fanno più parte dello schema di configurazione (la convalida fallisce finché non vengono rimosse; openclaw doctor --fix può eliminare le chiavi sconosciute).
Configurazione bridge legacy (riferimento storico)
Configurazione bridge legacy (riferimento storico)
Cron
sessionRetention: per quanto tempo mantenere le sessioni completate delle esecuzioni cron isolate prima di eliminarle dasessions.json. Controlla anche la pulizia delle trascrizioni cron eliminate archiviate. Predefinito:24h; impostafalseper disabilitare.runLog.maxBytes: dimensione massima per file di log di esecuzione (cron/runs/<jobId>.jsonl) prima della pulizia. Predefinito:2_000_000byte.runLog.keepLines: righe più recenti conservate quando viene attivata la pulizia del log di esecuzione. Predefinito:2000.webhookToken: token bearer usato per la consegna POST del webhook cron (delivery.mode = "webhook"); se omesso non viene inviato alcun header auth.webhook: URL webhook legacy deprecato di fallback (http/https) usato solo per i job archiviati che hanno ancoranotify: true.
cron.retry
maxAttempts: numero massimo di tentativi per job one-shot in caso di errori transitori (predefinito:3; intervallo:0–10).backoffMs: array di ritardi di backoff in ms per ogni tentativo di retry (predefinito:[30000, 60000, 300000]; 1–10 voci).retryOn: tipi di errore che attivano i retry —"rate_limit","overloaded","network","timeout","server_error". Ometti per ritentare tutti i tipi transitori.
cron.failureAlert
enabled: abilita gli avvisi di errore per i job cron (predefinito:false).after: errori consecutivi prima che venga attivato un avviso (intero positivo, min:1).cooldownMs: millisecondi minimi tra avvisi ripetuti per lo stesso job (intero non negativo).mode: modalità di consegna —"announce"invia tramite un messaggio di canale;"webhook"pubblica sul webhook configurato.accountId: id account o canale facoltativo per definire l’ambito della consegna dell’avviso.
cron.failureDestination
- Destinazione predefinita per le notifiche di errore cron per tutti i job.
mode:"announce"o"webhook"; usa come predefinito"announce"quando esistono dati di destinazione sufficienti.channel: override del canale per la consegna announce."last"riutilizza l’ultimo canale di consegna noto.to: destinazione announce esplicita o URL webhook. Obbligatorio per la modalità webhook.accountId: override facoltativo dell’account per la consegna.delivery.failureDestinationper job sostituisce questo valore predefinito globale.- Quando non è impostata né una destinazione di errore globale né una per job, i job che già consegnano tramite
announceusano come fallback quella destinazione announce primaria in caso di errore. delivery.failureDestinationè supportato solo per jobsessionTarget="isolated"a meno chedelivery.modeprimario del job non sia"webhook".
Variabili template del modello media
Segnaposto del template espansi intools.media.models[].args:
| Variabile | Descrizione |
|---|---|
{{Body}} | Corpo completo del messaggio in ingresso |
{{RawBody}} | Corpo grezzo (senza wrapper cronologia/mittente) |
{{BodyStripped}} | Corpo con le menzioni di gruppo rimosse |
{{From}} | Identificatore del mittente |
{{To}} | Identificatore della destinazione |
{{MessageSid}} | ID del messaggio del canale |
{{SessionId}} | UUID della sessione corrente |
{{IsNewSession}} | "true" quando viene creata una nuova sessione |
{{MediaUrl}} | pseudo-URL del media in ingresso |
{{MediaPath}} | percorso locale del media |
{{MediaType}} | tipo di media (image/audio/document/…) |
{{Transcript}} | trascrizione audio |
{{Prompt}} | prompt media risolto per le voci CLI |
{{MaxChars}} | max caratteri di output risolti per le voci CLI |
{{ChatType}} | "direct" o "group" |
{{GroupSubject}} | oggetto del gruppo (best effort) |
{{GroupMembers}} | anteprima dei membri del gruppo (best effort) |
{{SenderName}} | nome visualizzato del mittente (best effort) |
{{SenderE164}} | numero di telefono del mittente (best effort) |
{{Provider}} | suggerimento provider (whatsapp, telegram, discord, ecc.) |
Include di configurazione ($include)
Suddividi la configurazione in più file:
- File singolo: sostituisce l’oggetto contenitore.
- Array di file: merge profondo in ordine (gli ultimi sostituiscono i precedenti).
- Chiavi sibling: unite dopo gli include (sostituiscono i valori inclusi).
- Include nidificati: fino a 10 livelli di profondità.
- Percorsi: risolti relativamente al file che include, ma devono restare all’interno della directory di configurazione di livello superiore (
dirnamediopenclaw.json). Le forme assolute/../sono consentite solo se si risolvono comunque entro quel confine. - Errori: messaggi chiari per file mancanti, errori di parsing e include circolari.
Correlati: Configuration · Configuration Examples · Doctor