Przepływ wiadomości (ogólnie)
messages.*dla prefiksów, kolejkowania i zachowania grup.agents.defaults.*dla domyślnych ustawień streamingu bloków i dzielenia na fragmenty.- Nadpisania kanałów (
channels.whatsapp.*,channels.telegram.*itd.) dla limitów i przełączników streamingu.
Deduplikacja wiadomości przychodzących
Kanały mogą ponownie dostarczyć tę samą wiadomość po ponownym połączeniu. OpenClaw utrzymuje krótkotrwałą pamięć podręczną kluczowaną według kanału/konta/uczestnika/sesji/identyfikatora wiadomości, aby zduplikowane dostarczenia nie uruchamiały kolejnego przebiegu agenta.Debouncing wiadomości przychodzących
Szybkie kolejne wiadomości od tego samego nadawcy mogą zostać zebrane w jedną turę agenta przezmessages.inbound. Debouncing jest zakresowany per kanał + konwersacja i używa najnowszej wiadomości do wątkowania odpowiedzi/identyfikatorów.
Konfiguracja (domyślna globalna + nadpisania per kanał):
- Debounce dotyczy wiadomości wyłącznie tekstowych; multimedia/załączniki są opróżniane natychmiast.
- Polecenia sterujące omijają debouncing, aby pozostały samodzielne. Kanały, które jawnie włączają scalanie wiadomości DM od tego samego nadawcy, mogą zachować polecenia DM w oknie debounce, aby ładunek wysłany w częściach mógł dołączyć do tej samej tury agenta.
Sesje i urządzenia
Sesje należą do Gateway, a nie do klientów.- Czaty bezpośrednie zwijają się do głównego klucza sesji agenta.
- Grupy/kanały otrzymują własne klucze sesji.
- Magazyn sesji i transkrypcje znajdują się na hoście Gateway.
Metadane wyników narzędzi
content wyniku narzędzia to wynik widoczny dla modelu. details wyniku narzędzia to metadane środowiska wykonawczego używane do renderowania interfejsu, diagnostyki, dostarczania multimediów i Pluginów.
OpenClaw zachowuje tę granicę jako jawną:
toolResult.detailsjest usuwane przed odtworzeniem dla dostawcy i wejściem do Compaction.- Utrwalone transkrypcje sesji zachowują tylko ograniczone
details; zbyt duże metadane są zastępowane zwartym podsumowaniem oznaczonympersistedDetailsTruncated: true. - Pluginy i narzędzia powinny umieszczać tekst, który model musi przeczytać, w
content, a nie tylko wdetails.
Treści wejściowe i kontekst historii
OpenClaw oddziela treść promptu od treści polecenia:BodyForAgent: główny tekst bieżącej wiadomości przeznaczony dla modelu. Pluginy kanałów powinny utrzymywać go skupionym na aktualnym tekście nadawcy niosącym prompt.Body: starszy zapasowy prompt. Może zawierać koperty kanału i opcjonalne opakowania historii, ale obecne kanały nie powinny polegać na nim jako głównym wejściu modelu, gdy dostępne jestBodyForAgent.CommandBody: surowy tekst użytkownika do parsowania dyrektyw/poleceń.RawBody: starszy alias dlaCommandBody(zachowany dla zgodności).
[Chat messages since your last reply - for context][Current message - respond to this]
CommandBody (lub RawBody) na oryginalny tekst wiadomości i zachowywać Body jako połączony prompt. Ustrukturyzowana historia, odpowiedzi, przekazane wiadomości i metadane kanału są renderowane podczas składania promptu jako niezaufane bloki kontekstu w roli użytkownika.
Bufory historii można konfigurować przez messages.groupChat.historyLimit (domyślne ustawienie globalne) oraz nadpisania per kanał, takie jak channels.slack.historyLimit lub channels.telegram.accounts.<id>.historyLimit (ustaw 0, aby wyłączyć).
Kolejkowanie i wiadomości uzupełniające
Jeśli przebieg jest już aktywny, wiadomości przychodzące są domyślnie kierowane do bieżącego przebiegu.messages.queue wybiera, czy wiadomości podczas aktywnego przebiegu mają sterować nim, trafiać do kolejki na później, zbierać się w jedną późniejszą turę albo przerywać aktywny przebieg.
- Skonfiguruj przez
messages.queue(orazmessages.queue.byChannel). - Domyślny tryb to
steer, z debounce 500 ms dla partii sterowania Codex oraz kolejek followup/collect. - Tryby:
steer,followup,collectiinterrupt.
Własność przebiegu kanału
Pluginy kanałów mogą zachowywać kolejność, stosować debounce wejścia i nakładać backpressure transportu, zanim wiadomość trafi do kolejki sesji. Nie powinny narzucać osobnego limitu czasu wokół samej tury agenta. Gdy wiadomość zostanie skierowana do sesji, długotrwała praca jest regulowana przez cykl życia sesji, narzędzia i środowiska wykonawczego, aby wszystkie kanały spójnie raportowały wolne tury i odzyskiwały po nich działanie.Streaming, dzielenie na fragmenty i grupowanie
Streaming bloków wysyła częściowe odpowiedzi, gdy model tworzy bloki tekstu. Dzielenie na fragmenty respektuje limity tekstu kanału i unika rozdzielania bloków kodu w ogrodzeniach. Kluczowe ustawienia:agents.defaults.blockStreamingDefault(on|off, domyślnie wyłączone)agents.defaults.blockStreamingBreak(text_end|message_end)agents.defaults.blockStreamingChunk(minChars|maxChars|breakPreference)agents.defaults.blockStreamingCoalesce(grupowanie oparte na bezczynności)agents.defaults.humanDelay(pauza podobna do ludzkiej między odpowiedziami blokowymi)- Nadpisania kanałów:
*.blockStreamingi*.blockStreamingCoalesce(kanały inne niż Telegram wymagają jawnego*.blockStreaming: true)
Widoczność rozumowania i tokeny
OpenClaw może ujawniać albo ukrywać rozumowanie modelu:/reasoning on|off|streamkontroluje widoczność.- Treść rozumowania nadal wlicza się do użycia tokenów, gdy jest tworzona przez model.
- Telegram obsługuje strumień rozumowania w przejściowym dymku wersji roboczej, który jest usuwany po ostatecznym dostarczeniu; użyj
/reasoning on, aby uzyskać trwałe wyjście rozumowania.
Prefiksy, wątkowanie i odpowiedzi
Formatowanie wiadomości wychodzących jest scentralizowane wmessages:
messages.responsePrefix,channels.<channel>.responsePrefixichannels.<channel>.accounts.<id>.responsePrefix(kaskada prefiksów wychodzących), pluschannels.whatsapp.messagePrefix(prefiks przychodzący WhatsApp)- Wątkowanie odpowiedzi przez
replyToModei domyślne ustawienia per kanał
Ciche odpowiedzi
Dokładny cichy tokenNO_REPLY / no_reply oznacza „nie dostarczaj odpowiedzi widocznej dla użytkownika”.
Gdy tura ma również oczekujące multimedia narzędzia, takie jak wygenerowany dźwięk TTS, OpenClaw usuwa cichy tekst, ale nadal dostarcza załącznik multimedialny.
OpenClaw rozstrzyga to zachowanie według typu konwersacji:
- Konwersacje bezpośrednie nigdy nie otrzymują wskazówek promptu
NO_REPLY. Jeśli bezpośredni przebieg przypadkowo zwróci sam cichy token, OpenClaw go tłumi zamiast przepisywać lub dostarczać. - Grupy/kanały domyślnie zezwalają na ciszę tylko dla automatycznych odpowiedzi grupowych. W trybie widocznej odpowiedzi
message_toolcisza oznacza, że model nie wywołujemessage(action=send). - Wewnętrzna orkiestracja domyślnie zezwala na ciszę.
/verbose full.
Ustawienia domyślne znajdują się pod agents.defaults.silentReply; surfaces.<id>.silentReply może nadpisać politykę grupową/wewnętrzną per powierzchnia.
Same ciche odpowiedzi są odrzucane na wszystkich powierzchniach, więc sesje nadrzędne pozostają ciche zamiast przepisywać tekst znacznika na zapasową pogawędkę.
Powiązane
- Refaktoryzacja cyklu życia wiadomości - docelowy trwały projekt wysyłania i odbierania
- Streaming — dostarczanie wiadomości w czasie rzeczywistym
- Ponawianie — zachowanie ponawiania dostarczania wiadomości
- Kolejka — kolejka przetwarzania wiadomości
- Kanały — integracje platform wiadomości