Nachrichtenfluss (allgemein)
messages.*für Präfixe, Warteschlangenbildung und Gruppenverhalten.agents.defaults.*für Block-Streaming- und Chunking-Standardwerte.- Kanal-Overrides (
channels.whatsapp.*,channels.telegram.*usw.) für Limits und Streaming-Schalter.
Deduplizierung eingehender Nachrichten
Kanäle können dieselbe Nachricht nach erneuten Verbindungen erneut zustellen. OpenClaw hält einen kurzlebigen Cache vor, der nach Kanal/Konto/Peer/Sitzung/Nachrichten-ID geschlüsselt ist, damit doppelte Zustellungen keine weitere Agent-Ausführung auslösen.Entprellung eingehender Nachrichten
Schnell aufeinanderfolgende Nachrichten desselben Absenders können übermessages.inbound zu einem einzigen Agent-Turn gebündelt werden. Die Entprellung ist pro Kanal + Unterhaltung begrenzt und verwendet die neueste Nachricht für Antwort-Threading/IDs.
Konfiguration (globaler Standard + kanalbezogene Overrides):
- Entprellung gilt für reine Textnachrichten; Medien/Anhänge lösen sofortiges Flushen aus.
- Steuerbefehle umgehen die Entprellung, damit sie eigenständig bleiben. Kanäle, die ausdrücklich in das Zusammenführen von Direktnachrichten desselben Absenders einwilligen, können DM-Befehle innerhalb des Entprellungsfensters behalten, sodass ein aufgeteiltes Payload in denselben Agent-Turn einfließen kann.
Sitzungen und Geräte
Sitzungen gehören dem Gateway, nicht den Clients.- Direktchats werden auf den Hauptsitzungsschlüssel des Agents zusammengeführt.
- Gruppen/Kanäle erhalten eigene Sitzungsschlüssel.
- Sitzungsspeicher und Transkripte liegen auf dem Gateway-Host.
Tool-Ergebnis-Metadaten
Tool-Ergebnis-content ist das für das Modell sichtbare Ergebnis. Tool-Ergebnis-details sind Laufzeitmetadaten für UI-Rendering, Diagnose, Medienzustellung und Plugins.
OpenClaw hält diese Grenze ausdrücklich ein:
toolResult.detailswird vor Provider-Replay und Compaction-Eingabe entfernt.- Persistierte Sitzungstranskripte behalten nur begrenzte
details; übergroße Metadaten werden durch eine kompakte Zusammenfassung mitpersistedDetailsTruncated: trueersetzt. - Plugins und Tools sollten Text, den das Modell lesen muss, in
contentablegen, nicht nur indetails.
Eingehende Inhalte und Verlaufskontext
OpenClaw trennt den Prompt-Text vom Befehlstext:BodyForAgent: Primärer modellbezogener Text für die aktuelle Nachricht. Kanal-Plugins sollten diesen auf den aktuellen prompt-tragenden Text des Absenders fokussieren.Body: Legacy-Prompt-Fallback. Dies kann Kanalumschläge und optionale Verlaufs-Wrapper enthalten, aktuelle Kanäle sollten sich jedoch nicht darauf als primäre Modelleingabe verlassen, wennBodyForAgentverfügbar ist.CommandBody: Roher Benutzertext für Direktiven-/Befehls-Parsing.RawBody: Legacy-Alias fürCommandBody(aus Kompatibilitätsgründen beibehalten).
[Chat messages since your last reply - for context][Current message - respond to this]
CommandBody (oder RawBody) auf den ursprünglichen Nachrichtentext setzen und Body als kombinierten Prompt behalten. Strukturierte Verlaufs-, Antwort-, Weiterleitungs- und Kanalmetadaten werden bei der Prompt-Zusammenstellung als nicht vertrauenswürdige Kontextblöcke mit Benutzerrolle gerendert.
Verlaufspuffer sind über messages.groupChat.historyLimit (globaler Standard) und kanalbezogene Overrides wie channels.slack.historyLimit oder channels.telegram.accounts.<id>.historyLimit konfigurierbar (setzen Sie 0, um sie zu deaktivieren).
Warteschlangenbildung und Follow-ups
Wenn bereits eine Ausführung aktiv ist, werden eingehende Nachrichten standardmäßig in die aktuelle Ausführung gelenkt.messages.queue legt fest, ob Nachrichten während aktiver Ausführungen lenken, für später in die Warteschlange gestellt, zu einem späteren Turn gesammelt oder die aktive Ausführung unterbrechen.
- Konfigurieren Sie dies über
messages.queue(undmessages.queue.byChannel). - Der Standardmodus ist
steer, mit 500 ms Entprellung für Codex-Steuerungsbündel und Follow-up-/Sammelwarteschlangen. - Modi:
steer,followup,collectundinterrupt.
Besitz der Kanalausführung
Kanal-Plugins können Reihenfolge beibehalten, Eingaben entprellen und Transport-Backpressure anwenden, bevor eine Nachricht in die Sitzungswarteschlange gelangt. Sie sollten keinen separaten Timeout um den Agent-Turn selbst erzwingen. Sobald eine Nachricht an eine Sitzung geroutet wurde, wird langlaufende Arbeit durch den Sitzungs-, Tool- und Laufzeit-Lebenszyklus gesteuert, sodass alle Kanäle langsame Turns konsistent melden und wiederherstellen.Streaming, Chunking und Bündelung
Block-Streaming sendet Teilantworten, während das Modell Textblöcke erzeugt. Chunking respektiert Textlimits des Kanals und vermeidet das Aufteilen von eingezäunten Codeblöcken. Wichtige Einstellungen:agents.defaults.blockStreamingDefault(on|off, standardmäßig aus)agents.defaults.blockStreamingBreak(text_end|message_end)agents.defaults.blockStreamingChunk(minChars|maxChars|breakPreference)agents.defaults.blockStreamingCoalesce(leerlaufbasierte Bündelung)agents.defaults.humanDelay(menschenähnliche Pause zwischen Blockantworten)- Kanal-Overrides:
*.blockStreamingund*.blockStreamingCoalesce(Nicht-Telegram-Kanäle erfordern ausdrücklich*.blockStreaming: true)
Reasoning-Sichtbarkeit und Token
OpenClaw kann Modell-Reasoning einblenden oder ausblenden:/reasoning on|off|streamsteuert die Sichtbarkeit.- Reasoning-Inhalte zählen weiterhin zur Token-Nutzung, wenn sie vom Modell erzeugt werden.
- Telegram unterstützt Reasoning-Streaming in eine flüchtige Entwurfsblase, die nach der endgültigen Zustellung gelöscht wird; verwenden Sie
/reasoning onfür persistente Reasoning-Ausgabe.
Präfixe, Threading und Antworten
Die Formatierung ausgehender Nachrichten ist inmessages zentralisiert:
messages.responsePrefix,channels.<channel>.responsePrefixundchannels.<channel>.accounts.<id>.responsePrefix(Kaskade ausgehender Präfixe), pluschannels.whatsapp.messagePrefix(eingehendes WhatsApp-Präfix)- Antwort-Threading über
replyToModeund kanalbezogene Standardwerte
Stille Antworten
Das genaue stille TokenNO_REPLY / no_reply bedeutet „keine für Benutzer sichtbare Antwort zustellen“.
Wenn ein Turn auch ausstehende Tool-Medien enthält, etwa erzeugtes TTS-Audio, entfernt OpenClaw den stillen Text, stellt den Medienanhang aber dennoch zu.
OpenClaw löst dieses Verhalten nach Unterhaltungstyp auf:
- Direkte Unterhaltungen erhalten nie
NO_REPLY-Prompt-Anleitung. Wenn eine direkte Ausführung versehentlich ein nacktes stilles Token zurückgibt, unterdrückt OpenClaw es, statt es umzuschreiben oder zuzustellen. - Gruppen/Kanäle erlauben Stille standardmäßig nur für automatische Gruppenantworten. Im sichtbaren Antwortmodus
message_toolbedeutet Stille, dass das Modellmessage(action=send)nicht aufruft. - Interne Orchestrierung erlaubt Stille standardmäßig.
/verbose full aktiviert ist.
Standardwerte befinden sich unter agents.defaults.silentReply; surfaces.<id>.silentReply kann Gruppen-/interne Richtlinien pro Oberfläche überschreiben.
Nackte stille Antworten werden auf allen Oberflächen verworfen, sodass übergeordnete Sitzungen still bleiben, statt Sentinel-Text in Fallback-Geplauder umzuschreiben.
Verwandte Themen
- Refaktorierung des Nachrichtenlebenszyklus - Zielentwurf für dauerhaftes Senden und Empfangen
- Streaming — Nachrichtenzustellung in Echtzeit
- Retry — Wiederholungsverhalten bei der Nachrichtenzustellung
- Warteschlange — Warteschlange für Nachrichtenverarbeitung
- Kanäle — Integrationen für Messaging-Plattformen