OpenClaw verwerkt inkomende berichten via een pipeline van sessieresolutie, wachtrijvorming, streaming, tooluitvoering en zichtbaarheid van redenering. Deze pagina brengt het pad van inkomend bericht naar antwoord in kaart.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.
Berichtenstroom (hoog niveau)
messages.*voor prefixes, wachtrijvorming en groepsgedrag.agents.defaults.*voor standaardinstellingen voor blokstreaming en opdelen in chunks.- Kanaaloverrides (
channels.whatsapp.*,channels.telegram.*, enzovoort) voor limieten en streaming-schakelaars.
Dedupe van inkomende berichten
Kanalen kunnen hetzelfde bericht opnieuw afleveren na reconnects. OpenClaw houdt een kortlevende cache bij, gesleuteld op kanaal/account/peer/sessie/bericht-id, zodat dubbele afleveringen geen nieuwe agent-run triggeren.Debouncing van inkomende berichten
Snel opeenvolgende berichten van de zelfde afzender kunnen worden gebundeld in een enkele agent-beurt viamessages.inbound. Debouncing is gescoped per kanaal + gesprek
en gebruikt het meest recente bericht voor antwoord-threading/ID’s.
Configuratie (globale standaard + overrides per kanaal):
- Debounce geldt voor alleen-tekst-berichten; media/bijlagen worden onmiddellijk geflusht.
- Besturingscommando’s omzeilen debouncing zodat ze zelfstandig blijven — behalve wanneer een kanaal expliciet kiest voor samenvoegen van DM’s van dezelfde afzender (bijv. BlueBubbles
coalesceSameSenderDms), waarbij DM-commando’s binnen het debounce-venster wachten zodat een split-send-payload aan dezelfde agent-beurt kan worden toegevoegd.
Sessies en apparaten
Sessies zijn eigendom van de Gateway, niet van clients.- Directe chats worden samengevouwen tot de hoofdsessiesleutel van de agent.
- Groepen/kanalen krijgen hun eigen sessiesleutels.
- De sessiestore en transcripties staan op de Gateway-host.
Metadata van toolresultaten
Toolresultaatcontent is het model-zichtbare resultaat. Toolresultaat details is
runtime-metadata voor UI-rendering, diagnostiek, medialevering en Plugins.
OpenClaw houdt die grens expliciet:
toolResult.detailswordt verwijderd voor provider-replay en Compaction-invoer.- Bewaarde sessietranscripties houden alleen begrensde
details; te grote metadata wordt vervangen door een compacte samenvatting gemarkeerd metpersistedDetailsTruncated: true. - Plugins en tools moeten tekst die het model moet lezen in
contentzetten, niet alleen indetails.
Inkomende bodies en geschiedeniscontext
OpenClaw scheidt de promptbody van de commandobody:Body: prompttekst die naar de agent wordt gestuurd. Dit kan kanaal-enveloppen en optionele geschiedeniswrappers bevatten.CommandBody: ruwe gebruikerstekst voor directive-/commandoparsing.RawBody: legacy-alias voorCommandBody(behouden voor compatibiliteit).
[Chat messages since your last reply - for context][Current message - respond to this]
CommandBody (of
RawBody) instellen op de oorspronkelijke berichttekst en Body als de gecombineerde prompt behouden.
Geschiedenisbuffers zijn configureerbaar via messages.groupChat.historyLimit (globale
standaard) en overrides per kanaal zoals channels.slack.historyLimit of
channels.telegram.accounts.<id>.historyLimit (stel 0 in om uit te schakelen).
Wachtrijvorming en follow-ups
Als er al een run actief is, kunnen inkomende berichten in de wachtrij worden geplaatst, in de huidige run worden gestuurd, of worden verzameld voor een follow-upbeurt.- Configureer via
messages.queue(enmessages.queue.byChannel). - De standaardmodus is
steer, met een follow-updebounce van 500 ms wanneer sturen terugvalt op levering als follow-up in de wachtrij. - Modi:
steer,followup,collect,steer-backlog,interrupt, en de legacy-aliasqueue.
Eigenaarschap van kanaalruns
Kanaal-Plugins kunnen ordening behouden, input debouncen en transport- backpressure toepassen voordat een bericht de sessiewachtrij ingaat. Ze mogen geen afzonderlijke timeout rond de agent-beurt zelf opleggen. Zodra een bericht naar een sessie is gerouteerd, wordt langlopende verwerking beheerd door de lifecycle van sessie, tool en runtime, zodat alle kanalen trage beurten consistent rapporteren en herstellen.Streaming, opdelen in chunks en batching
Blokstreaming stuurt gedeeltelijke antwoorden terwijl het model tekstblokken produceert. Opdelen in chunks respecteert tekstlimieten van kanalen en voorkomt het splitsen van fenced code. Belangrijke instellingen:agents.defaults.blockStreamingDefault(on|off, standaard uit)agents.defaults.blockStreamingBreak(text_end|message_end)agents.defaults.blockStreamingChunk(minChars|maxChars|breakPreference)agents.defaults.blockStreamingCoalesce(idle-gebaseerde batching)agents.defaults.humanDelay(mensachtige pauze tussen blokantwoorden)- Kanaaloverrides:
*.blockStreamingen*.blockStreamingCoalesce(niet-Telegram-kanalen vereisen expliciet*.blockStreaming: true)
Zichtbaarheid van redenering en tokens
OpenClaw kan modelredenering tonen of verbergen:/reasoning on|off|streamregelt de zichtbaarheid.- Redeneringsinhoud telt nog steeds mee voor tokengebruik wanneer die door het model wordt geproduceerd.
- Telegram ondersteunt reasoning-stream naar de conceptballon.
Prefixes, threading en antwoorden
Opmaak van uitgaande berichten is gecentraliseerd inmessages:
messages.responsePrefix,channels.<channel>.responsePrefix, enchannels.<channel>.accounts.<id>.responsePrefix(cascade voor uitgaande prefixes), pluschannels.whatsapp.messagePrefix(inkomende prefix voor WhatsApp)- Antwoord-threading via
replyToModeen kanaalspecifieke standaarden
Stille antwoorden
Het exacte stille tokenNO_REPLY / no_reply betekent “lever geen zichtbaar antwoord aan de gebruiker”.
Wanneer een beurt ook pending toolmedia heeft, zoals gegenereerde TTS-audio, verwijdert OpenClaw
de stille tekst maar levert het nog steeds de mediabijlage.
OpenClaw lost dat gedrag op per gesprekstype:
- Directe gesprekken staan stilte standaard niet toe en herschrijven een kaal stil antwoord naar een kort zichtbaar fallbackantwoord.
- Groepen/kanalen staan stilte standaard toe.
- Interne orkestratie staat stilte standaard toe.
/verbose on of full is.
Standaarden staan onder agents.defaults.silentReply en
agents.defaults.silentReplyRewrite; surfaces.<id>.silentReply en
surfaces.<id>.silentReplyRewrite kunnen ze per surface overriden.
Wanneer de bovenliggende sessie een of meer pending gespawnde subagent-runs heeft, worden kale
stille antwoorden op alle surfaces gedropt in plaats van herschreven, zodat de
bovenliggende sessie stil blijft totdat de voltooiingsgebeurtenis van het kind het echte antwoord levert.
Gerelateerd
- Streaming — real-time berichtlevering
- Opnieuw proberen — retry-gedrag voor berichtlevering
- Wachtrij — wachtrij voor berichtverwerking
- Kanalen — integraties met messagingplatforms