Messaggi
Questa pagina collega tra loro il modo in cui OpenClaw gestisce i messaggi in entrata, le sessioni, l’accodamento, lo streaming e la visibilità del ragionamento.Flusso dei messaggi (panoramica di alto livello)
messages.*per prefissi, accodamento e comportamento dei gruppi.agents.defaults.*per i valori predefiniti di block streaming e chunking.- Override del canale (
channels.whatsapp.*,channels.telegram.*, ecc.) per limiti e interruttori dello streaming.
Deduplicazione in entrata
I canali possono riconsegnare lo stesso messaggio dopo le riconnessioni. OpenClaw mantiene una cache di breve durata indicizzata per channel/account/peer/session/message id, in modo che le consegne duplicate non attivino un’altra esecuzione dell’agente.Debouncing in entrata
Messaggi rapidi e consecutivi provenienti dallo stesso mittente possono essere raggruppati in un singolo turno dell’agente tramitemessages.inbound. Il debouncing è applicato per channel + conversation
e usa il messaggio più recente per threading/ID della risposta.
Configurazione (valore predefinito globale + override per canale):
- Il debounce si applica ai messaggi solo testo; contenuti multimediali/allegati vengono inviati immediatamente.
- I comandi di controllo bypassano il debouncing così da rimanere autonomi — tranne quando un canale abilita esplicitamente la coalescenza dei DM dello stesso mittente (ad esempio BlueBubbles
coalesceSameSenderDms), dove i comandi DM attendono all’interno della finestra di debounce così che un payload split-send possa unirsi allo stesso turno dell’agente.
Sessioni e dispositivi
Le sessioni sono di proprietà del Gateway, non dei client.- Le chat dirette confluiscono nella chiave di sessione principale dell’agente.
- I gruppi/canali hanno le proprie chiavi di sessione.
- L’archivio delle sessioni e le trascrizioni risiedono sull’host del Gateway.
Corpi in entrata e contesto della cronologia
OpenClaw separa il corpo del prompt dal corpo del comando:Body: testo del prompt inviato all’agente. Può includere envelope del canale e wrapper della cronologia opzionali.CommandBody: testo utente grezzo per il parsing di direttive/comandi.RawBody: alias legacy perCommandBody(mantenuto per compatibilità).
[Chat messages since your last reply - for context][Current message - respond to this]
CommandBody (o
RawBody) sul testo originale del messaggio e mantenere Body come prompt combinato.
I buffer della cronologia sono configurabili tramite messages.groupChat.historyLimit (valore predefinito
globale) e override per canale come channels.slack.historyLimit o
channels.telegram.accounts.<id>.historyLimit (imposta 0 per disabilitare).
Accodamento e followup
Se un’esecuzione è già attiva, i messaggi in entrata possono essere accodati, instradati verso l’esecuzione corrente oppure raccolti per un turno di followup.- Configura tramite
messages.queue(emessages.queue.byChannel). - Modalità:
interrupt,steer,followup,collect, più le varianti backlog.
Streaming, chunking e batching
Il block streaming invia risposte parziali mentre il modello produce blocchi di testo. Il chunking rispetta i limiti di testo del canale ed evita di spezzare blocchi di codice fenced. Impostazioni principali:agents.defaults.blockStreamingDefault(on|off, disattivato per impostazione predefinita)agents.defaults.blockStreamingBreak(text_end|message_end)agents.defaults.blockStreamingChunk(minChars|maxChars|breakPreference)agents.defaults.blockStreamingCoalesce(batching basato sull’inattività)agents.defaults.humanDelay(pausa simile a quella umana tra le risposte a blocchi)- Override del canale:
*.blockStreaminge*.blockStreamingCoalesce(i canali non Telegram richiedono*.blockStreaming: trueesplicito)
Visibilità del ragionamento e token
OpenClaw può esporre o nascondere il ragionamento del modello:/reasoning on|off|streamcontrolla la visibilità.- Il contenuto del ragionamento conta comunque nell’uso dei token quando viene prodotto dal modello.
- Telegram supporta lo stream del ragionamento nella bolla di bozza.
Prefissi, threading e risposte
La formattazione dei messaggi in uscita è centralizzata inmessages:
messages.responsePrefix,channels.<channel>.responsePrefixechannels.<channel>.accounts.<id>.responsePrefix(cascata del prefisso in uscita), oltre achannels.whatsapp.messagePrefix(prefisso in entrata di WhatsApp)- Reply threading tramite
replyToModee valori predefiniti per canale
Risposte silenziose
Il token silenzioso esattoNO_REPLY / no_reply significa “non inviare una risposta visibile all’utente”.
OpenClaw applica questo comportamento in base al tipo di conversazione:
- Le conversazioni dirette non consentono il silenzio per impostazione predefinita e riscrivono una risposta silenziosa pura in un breve fallback visibile.
- I gruppi/canali consentono il silenzio per impostazione predefinita.
- L’orchestrazione interna consente il silenzio per impostazione predefinita.
agents.defaults.silentReply e
agents.defaults.silentReplyRewrite; surfaces.<id>.silentReply e
surfaces.<id>.silentReplyRewrite possono sostituirli per singola surface.