Meddelanden¶
Den här sidan knyter samman hur OpenClaw hanterar inkommande meddelanden, sessioner, köhantering, strömning och synlighet för resonemang.
Meddelandeflöde (övergripande)¶
Inbound message
-> routing/bindings -> session key
-> queue (if a run is active)
-> agent run (streaming + tools)
-> outbound replies (channel limits + chunking)
Viktiga reglage finns i konfigurationen:
messages.*för prefix, köhantering och gruppbeteende.agents.defaults.*för blockstreaming och standardvärden för chunking.- Kanal åsidosätter (
channels.whatsapp.*,channels.telegram.*, etc.) för caps och streaming toggles.
Se Konfiguration för fullständigt schema.
Inkommande deduplicering¶
Kanaler kan återleverera samma meddelande efter återanslutning. OpenClaw håller en kortlivad cacheknapp per kanal/konto/peer/session/meddelande-id så att dubbla leveranser inte utlöser en annan agent som körs.
Inkommande debouncing¶
Snabba på varandra följande meddelanden från samma avsändare kan buntas in i en enda
agent sväng via messages.inbound. Debouncing är scoped per kanal + konversation
och använder det senaste meddelandet för svarstråd/IDs.
Konfig (global standard + per-kanal-överskridningar):
{
messages: {
inbound: {
debounceMs: 2000,
byChannel: {
whatsapp: 5000,
slack: 1500,
discord: 1500,
},
},
},
}
Noteringar:
- Debounce gäller endast textmeddelanden; media/bilagor töms omedelbart.
- Kontrollkommandon kringgår debouncing så att de förblir fristående.
Sessioner och enheter¶
Sessioner ägs av gatewayen, inte av klienter.
- Direktchattar kollapsar till agentens huvudsessionsnyckel.
- Grupper/kanaler får egna sessionsnycklar.
- Sessionslagret och transkript finns på gateway-värden.
Flera enheter/kanaler kan mappa till samma session, men historiken är inte helt synkroniserad tillbaka till varje klient. Rekommendation: använd en primär enhet för långa konversationer för att undvika olika sammanhang. Kontroll UI och TUI visar alltid gateway-backed session transkript, så de är källan till sanningen.
Detaljer: Sessionshantering.
Inkommande kroppar och historikkontext¶
OpenClaw separerar promptkroppen från kommandokroppen:
Body: snabb text skickad till agenten. Detta kan inkludera kanalkuvert och valfria historikomslag.CommandBody: rå användartext för direktiv-/kommandotolkning.RawBody: äldre alias förCommandBody(behålls för kompatibilitet).
När en kanal tillhandahåller historik använder den ett gemensamt omslag:
[Chat messages since your last reply - for context][Current message - respond to this]
För icke-direkta chattar (grupper/kanaler/rum) är nuvarande meddelandekroppen prefixet med avsändaretikett (samma stil som används för historikinlägg). Detta håller realtid och köad/historik -meddelanden konsekventa i agentprompten.
Historikbuffertar är endast väntande: de inkluderar gruppmeddelanden som inte triggade en körning (till exempel meddelanden som kräver omnämnande) och exkluderar meddelanden som redan finns i sessionstranskriptet.
Direktiv strippning gäller endast för aktuella meddelande sektionen så historik
förblir intakt. Kanaler som lindar historiken bör sätta CommandBody (eller
RawBody) till den ursprungliga meddelandetexten och behålla Body som den kombinerade prompten.
Historikbuffertar kan konfigureras via messages.groupChat.historyLimit (global
standard) och per-channel överskrider som channels.slack.historyLimit eller
channels.telegram.accounts.<id>.historyLimit (sätt 0 till inaktivera).
Köhantering och uppföljningar¶
Om en körning redan är aktiv kan inkommande meddelanden köas, styras in i den aktuella körningen eller samlas för ett uppföljningsvarv.
- Konfigurera via
messages.queue(ochmessages.queue.byChannel). - Lägen:
interrupt,steer,followup,collect, samt backlog-varianter.
Detaljer: Köhantering.
Strömning, chunking och batchning¶
Blockstreaming skickar partiella svar när modellen producerar textblock. Chunking respekterar kanalens textgränser och undviker delning av inhägnad kod.
Viktiga inställningar:
agents.defaults.blockStreamingDefault(on|off, standard av)agents.defaults.blockStreamingBreak(text_end|message_end)agents.defaults.blockStreamingChunk(minChars|maxChars|breakPreference)agents.defaults.blockStreamingCoalesce(inaktivitetbaserad batchning)agents.defaults.humanDelay(människolik paus mellan blocksvar)- Kanalöverskridningar:
*.blockStreamingoch*.blockStreamingCoalesce(icke-Telegram-kanaler kräver explicit*.blockStreaming: true)
Detaljer: Strömning + chunking.
Synlighet för resonemang och token¶
OpenClaw kan visa eller dölja modellens resonemang:
/reasoning on|off|streamstyr synligheten.- Resonemangsinnehåll räknas fortfarande mot tokenanvändning när det produceras av modellen.
- Telegram stöder strömning av resonemang in i utkastbubblan.
Detaljer: Tänkande + resonemangsdirektiv och Tokenanvändning.
Prefix, trådning och svar¶
Formatering av utgående meddelanden är centraliserad i messages:
messages.responsePrefix,kanaler.<channel>.responsePrefix, ochkanaler.<channel>.accounts.<id>.responsePrefix(utgående prefix kaskade), pluschannels.whatsapp.messagePrefix(WhatsApp inkommande prefix)- Svarstrådning via
replyToModeoch per-kanalstandarder
Detaljer: Konfiguration och kanaldokumentation.