OpenClaw gestisce i messaggi in ingresso tramite una pipeline di risoluzione della sessione, accodamento, streaming, esecuzione degli strumenti e visibilità del ragionamento. Questa pagina mappa il percorso dal messaggio in ingresso alla risposta.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Flusso dei messaggi (alto livello)
messages.*per prefissi, accodamento e comportamento dei gruppi.agents.defaults.*per valori predefiniti di streaming a blocchi e suddivisione in chunk.- Override dei canali (
channels.whatsapp.*,channels.telegram.*, ecc.) per limiti e opzioni di streaming.
Deduplicazione in ingresso
I canali possono riconsegnare lo stesso messaggio dopo le riconnessioni. OpenClaw mantiene una cache di breve durata indicizzata per canale/account/peer/sessione/id messaggio, in modo che le consegne duplicate non attivino un’altra esecuzione dell’agente.Debouncing in ingresso
Messaggi rapidi consecutivi dallo stesso mittente possono essere raggruppati in un singolo turno dell’agente tramitemessages.inbound. Il debouncing è limitato per canale + conversazione
e usa il messaggio più recente per threading/ID della risposta.
Configurazione (predefinito globale + override per canale):
- Il debounce si applica ai messaggi solo testo; media/allegati vengono scaricati immediatamente.
- I comandi di controllo bypassano il debouncing, così rimangono autonomi. I canali che scelgono esplicitamente di aggregare i DM dello stesso mittente possono mantenere i comandi DM dentro la finestra di debounce, in modo che un payload inviato in più parti possa unirsi allo stesso turno dell’agente.
Sessioni e dispositivi
Le sessioni sono di proprietà del Gateway, non dei client.- Le chat dirette convergono nella chiave di sessione principale dell’agente.
- Gruppi/canali ottengono le proprie chiavi di sessione.
- L’archivio delle sessioni e le trascrizioni risiedono sull’host del Gateway.
Metadati dei risultati degli strumenti
content del risultato dello strumento è il risultato visibile al modello. details del risultato dello strumento è
metadato di runtime per rendering dell’interfaccia, diagnostica, consegna dei media e Plugin.
OpenClaw mantiene esplicito questo confine:
toolResult.detailsviene rimosso prima della riproduzione del provider e dell’input di Compaction.- Le trascrizioni persistite delle sessioni conservano solo
detailslimitati; i metadati sovradimensionati vengono sostituiti con un riepilogo compatto marcatopersistedDetailsTruncated: true. - Plugin e strumenti dovrebbero inserire il testo che il modello deve leggere in
content, non solo indetails.
Corpi in ingresso e contesto della cronologia
OpenClaw separa il corpo del prompt dal corpo del comando:BodyForAgent: testo principale rivolto al modello per il messaggio corrente. I Plugin dei canali dovrebbero mantenerlo focalizzato sul testo corrente del mittente che contiene il prompt.Body: fallback legacy del prompt. Può includere involucri del canale e wrapper opzionali della cronologia, ma i canali correnti non dovrebbero fare affidamento su di esso come input principale del modello quandoBodyForAgentè disponibile.CommandBody: testo utente grezzo per parsing di direttive/comandi.RawBody: alias legacy diCommandBody(mantenuto per compatibilità).
[Messaggi della chat dalla tua ultima risposta - per contesto][Messaggio corrente - rispondi a questo]
CommandBody (o
RawBody) sul testo originale del messaggio e mantenere Body come prompt combinato.
Cronologia strutturata, risposta, inoltro e metadati del canale vengono renderizzati come
blocchi di contesto non attendibili con ruolo utente durante l’assemblaggio del prompt.
I buffer della cronologia sono configurabili tramite messages.groupChat.historyLimit (predefinito
globale) e override per canale come channels.slack.historyLimit o
channels.telegram.accounts.<id>.historyLimit (imposta 0 per disabilitare).
Accodamento e follow-up
Se un’esecuzione è già attiva, i messaggi in ingresso possono essere accodati, indirizzati nell’esecuzione corrente o raccolti per un turno di follow-up.- Configura tramite
messages.queue(emessages.queue.byChannel). - La modalità predefinita è
steer, con un debounce di follow-up di 500 ms quando l’indirizzamento ricade sulla consegna di follow-up accodata. - Modalità:
steer,followup,collect,steer-backlog,interrupte la modalità legacy uno alla voltaqueue.
Proprietà dell’esecuzione del canale
I Plugin dei canali possono preservare l’ordinamento, applicare debounce all’input e applicare backpressure di trasporto prima che un messaggio entri nella coda della sessione. Non dovrebbero imporre un timeout separato attorno al turno dell’agente stesso. Una volta che un messaggio viene instradato a una sessione, il lavoro di lunga durata è governato dal ciclo di vita della sessione, degli strumenti e del runtime, così tutti i canali segnalano e recuperano dai turni lenti in modo coerente.Streaming, suddivisione in chunk e batching
Lo streaming a blocchi invia risposte parziali mentre il modello produce blocchi di testo. La suddivisione in chunk rispetta i limiti di testo dei canali ed evita di spezzare blocchi di codice recintati. Impostazioni principali:agents.defaults.blockStreamingDefault(on|off, predefinito off)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 risposte a blocchi)- Override dei canali:
*.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 in una bolla bozza transitoria che viene eliminata dopo la consegna finale; usa
/reasoning onper un output di ragionamento persistente.
Prefissi, threading e risposte
La formattazione dei messaggi in uscita è centralizzata inmessages:
messages.responsePrefix,channels.<channel>.responsePrefixechannels.<channel>.accounts.<id>.responsePrefix(cascata dei prefissi in uscita), piùchannels.whatsapp.messagePrefix(prefisso in ingresso WhatsApp)- Threading delle risposte tramite
replyToModee valori predefiniti per canale
Risposte silenziose
Il token silenzioso esattoNO_REPLY / no_reply significa “non consegnare una risposta visibile all’utente”.
Quando un turno ha anche media di strumenti in sospeso, come audio TTS generato, OpenClaw
rimuove il testo silenzioso ma consegna comunque l’allegato multimediale.
OpenClaw risolve quel comportamento per tipo di conversazione:
- Le conversazioni dirette non consentono il silenzio per impostazione predefinita e riscrivono una risposta silenziosa isolata in un breve fallback visibile.
- Gruppi/canali consentono il silenzio per impostazione predefinita.
- L’orchestrazione interna consente il silenzio per impostazione predefinita.
/verbose è on o full.
I valori predefiniti risiedono sotto agents.defaults.silentReply e
agents.defaults.silentReplyRewrite; surfaces.<id>.silentReply e
surfaces.<id>.silentReplyRewrite possono sovrascriverli per superficie.
Quando la sessione padre ha una o più esecuzioni di subagenti generati in sospeso, le risposte
silenziose isolate vengono scartate su tutte le superfici invece di essere riscritte, così il
padre rimane silenzioso finché l’evento di completamento del figlio consegna la risposta reale.
Correlati
- Refactoring del ciclo di vita dei messaggi - progettazione target di invio e ricezione durevoli
- Streaming — consegna dei messaggi in tempo reale
- Riprova — comportamento di riprova della consegna dei messaggi
- Coda — coda di elaborazione dei messaggi
- Canali — integrazioni con piattaforme di messaggistica