messages.*dla prefiksów, kolejkowania, debounce wiadomości przychodzących i zachowania grup.agents.defaults.*dla strumieniowania blokowego, dzielenia na fragmenty i domyślnych ustawień cichych odpowiedzi.- Nadpisania kanałów (
channels.telegram.*,channels.whatsapp.*itd.) dla limitów poszczególnych kanałów i przełączników strumieniowania.
Deduplikacja wiadomości przychodzących
Kanały mogą ponownie dostarczyć tę samą wiadomość po ponownym połączeniu. OpenClaw przechowuje pamięci podręczną w pamięci operacyjnej, indeksowaną według zakresu agenta, trasy kanału (kanał + rozmówca + konto + wątek) oraz identyfikatora wiadomości, dzięki czemu ponownie dostarczona wiadomość nie uruchamia agenta po raz drugi. Wpis pamięci podręcznej wygasa po 20 minutach lub po osiągnięciu 5000 śledzonych wpisów, zależnie od tego, co nastąpi wcześniej.Debounce wiadomości przychodzących
Szybko następujące po sobie wiadomości tekstowe od tego samego nadawcy można połączyć w jedną turę agenta za pomocąmessages.inbound. Debounce działa w zakresie kanału + konwersacji i używa najnowszej wiadomości do tworzenia wątku odpowiedzi i identyfikatorów.
- Debounce dotyczy wyłącznie wiadomości tekstowych; multimedia i załączniki powodują natychmiastowe opróżnienie bufora.
- Polecenia sterujące (stop/abort/status itd.) omijają debounce, dzięki czemu są przekazywane natychmiast.
- Domyślnie wyłączone:
messages.inbound.debounceMsnie ma wbudowanej wartości domyślnej, więc debounce jest aktywowany dopiero po jego ustawieniu (globalnie lub dla kanału). - Opcjonalne ustawienie
coalesceSameSenderDmsw iMessage jest jedynym wyjątkiem: wstrzymuje wszystkie wiadomości tekstowe DM od tego samego nadawcy (w tym polecenia) wystarczająco długo, aby rozdzielone przez Apple wysłanie polecenia i adresu URL dotarło jako jedna tura. Czaty grupowe są zawsze przekazywane natychmiast, niezależnie od tego ustawienia.
Sesje i urządzenia
Sesje należą do Gateway, a nie do klientów.- Czaty bezpośrednie są łączone w główny klucz sesji agenta.
- Grupy/kanały otrzymują własne klucze sesji.
- Magazyn sesji i transkrypcje znajdują się na hoście Gateway.
Treść promptów i kontekst historii
Pluginy kanałów wypełniają kilka pól tekstowych w kontekście wiadomości przychodzącej, od najbardziej do najmniej preferowanego:
Gdy kanał dostarcza historię, otacza ją następującymi elementami:
[Chat messages since your last reply - for context][Current message - respond to this]
BodyForCommands (lub starsze CommandBody / RawBody) na oryginalny tekst wiadomości i zachować połączony prompt w Body.
Bufory historii obejmują wyłącznie oczekujące wiadomości: zawierają wiadomości grupowe, które nie wywołały uruchomienia (na przykład wiadomości wymagające wzmianki), i wykluczają wiadomości znajdujące się już w transkrypcji sesji. Ustrukturyzowana historia, odpowiedzi, przekazane wiadomości i metadane kanałów są podczas składania promptu renderowane jako niezaufane bloki kontekstu roli użytkownika.
Rozmiar historii konfiguruje się za pomocą messages.groupChat.historyLimit (globalna wartość domyślna) lub nadpisań dla poszczególnych kanałów, takich jak channels.slack.historyLimit i channels.telegram.accounts.<id>.historyLimit (ustaw 0, aby wyłączyć).
Metadane wyników narzędzi
content wyniku narzędzia jest wynikiem widocznym dla modelu; details to metadane środowiska wykonawczego używane do renderowania interfejsu, diagnostyki, dostarczania multimediów i obsługi pluginów.
toolResult.detailsjest usuwane przed ponownym odtworzeniem u dostawcy i przed przekazaniem danych wejściowych do Compaction.- Utrwalone transkrypcje sesji zachowują tylko ograniczone
details; zbyt duże metadane są zastępowane zwięzłym podsumowaniem oznaczonympersistedDetailsTruncated: true. - Pluginy i narzędzia powinny umieszczać tekst, który model musi odczytać, w
content, a nie wyłącznie wdetails.
Kolejkowanie i wiadomości uzupełniające
Gdy uruchomienie jest już aktywne, wiadomości przychodzące są domyślnie kierowane do niego.messages.queue steruje trybem:
Wartości domyślne:
messages.queue.debounceMs wynosi 500ms (dotyczy jednakowo kierowania, wiadomości uzupełniających i grupowania), messages.queue.cap wynosi 20 wiadomości w kolejce, a messages.queue.drop to summarize (dostępne są również old i new). Nadpisania dla poszczególnych kanałów konfiguruje się za pomocą messages.queue.byChannel i messages.queue.debounceMsByChannel.
Szczegóły: Kolejka poleceń i Kolejka sterowania.
Własność uruchomienia kanału
Pluginy kanałów mogą zachowywać kolejność, stosować debounce danych wejściowych i wymuszać przeciwciśnienie transportu, zanim wiadomość trafi do kolejki sesji. Nie powinny nakładać osobnego limitu czasu na samą turę agenta. Po skierowaniu wiadomości do sesji cykle życia sesji, narzędzi i środowiska wykonawczego zarządzają długotrwałą pracą, dzięki czemu wszystkie kanały spójnie raportują powolne tury i odzyskują po nich sprawność.Strumieniowanie, dzielenie na fragmenty i grupowanie
Strumieniowanie blokowe wysyła częściowe odpowiedzi w miarę generowania bloków tekstu przez model; dzielenie na fragmenty respektuje limity tekstu kanału i unika rozdzielania bloków kodu ograniczonych znacznikami.agents.defaults.blockStreamingDefault(on|off, domyślnieoff)agents.defaults.blockStreamingBreak(text_end|message_end)agents.defaults.blockStreamingChunk(minChars|maxChars|breakPreference)agents.defaults.blockStreamingCoalesce(grupowanie na podstawie bezczynności)agents.defaults.humanDelay(przerwa przypominająca ludzką między odpowiedziami blokowymi)- Nadpisania kanałów:
*.streaming.block.enabledi*.streaming.block.coalescew dołączonych kanałach; nieaktualne płaskie klucze są migrowane przezopenclaw doctor --fix. Strumieniowanie blokowe jest wyłączone, chyba że zostanie jawnie włączone — na każdym kanale, w tym Telegram. QQ Bot stanowi wyjątek: nie ma kluczystreaming.blocki strumieniuje odpowiedzi blokowe, chyba żechannels.qqbot.streaming.modema wartość"off".
Widoczność rozumowania i tokeny
/reasoning on|off|streamsteruje widocznością.- Treść rozumowania nadal wlicza się do użycia tokenów, gdy model ją generuje.
- Telegram obsługuje strumieniowanie rozumowania do tymczasowego dymka wersji roboczej, który jest usuwany po ostatecznym dostarczeniu; aby uzyskać trwałe dane wyjściowe rozumowania, należy użyć
/reasoning on.
Prefiksy, wątki i odpowiedzi
- Kaskada prefiksów wychodzących:
messages.responsePrefix,channels.<channel>.responsePrefix,channels.<channel>.accounts.<id>.responsePrefix. WhatsApp ma równieżchannels.whatsapp.messagePrefixdla prefiksu wiadomości przychodzących. - Tworzenie wątków odpowiedzi za pomocą
replyToModei wartości domyślnych dla poszczególnych kanałów.
Ciche odpowiedzi
Cichy tokenNO_REPLY (wielkość liter nie ma znaczenia, więc pasuje również no_reply) oznacza „nie dostarczaj odpowiedzi widocznej dla użytkownika”. Gdy tura zawiera również oczekujące multimedia narzędzia, takie jak wygenerowany dźwięk TTS, OpenClaw usuwa cichy tekst, ale nadal dostarcza załącznik multimedialny.
Zasady ciszy są ustalane według typu konwersacji:
- Konwersacje bezpośrednie nigdy nie otrzymują wskazówek promptu
NO_REPLY. Jeśli bezpośrednie uruchomienie przypadkowo zwróci sam cichy token, OpenClaw go pomija, zamiast przepisywać lub dostarczać. - Grupy/kanały domyślnie zezwalają na ciszę. W trybie widocznych odpowiedzi
message_toolcisza oznacza, że model nie wywołujemessage(action=send). - Wewnętrzna orkiestracja domyślnie zezwala na ciszę.
agents.defaults.silentReply; surfaces.<id>.silentReply może nadpisać zasady grupowe/wewnętrzne dla poszczególnych obszarów.
OpenClaw używa również cichych odpowiedzi w przypadku ogólnych wewnętrznych awarii modułu uruchamiającego w czatach innych niż bezpośrednie, dzięki czemu grupy/kanały nie widzą standardowego komunikatu o błędzie Gateway. Sklasyfikowane awarie z przeznaczonym dla użytkownika opisem sposobu odzyskania, takie jak powiadomienia o braku uwierzytelnienia, limicie szybkości lub przeciążeniu, nadal mogą być dostarczane. Czaty bezpośrednie domyślnie pokazują zwięzły opis awarii; nieprzetworzone szczegóły modułu uruchamiającego są wyświetlane tylko wtedy, gdy włączone jest /verbose full.
Same ciche odpowiedzi są odrzucane we wszystkich obszarach, więc sesje nadrzędne pozostają ciche, zamiast przepisywać tekst znacznika na zastępczą wypowiedź.
Powiązane
- Refaktoryzacja cyklu życia wiadomości - docelowy trwały projekt wysyłania i odbierania
- Strumieniowanie - dostarczanie wiadomości w czasie rzeczywistym
- Ponawianie - zachowanie ponawiania dostarczania wiadomości
- Kolejka - kolejka przetwarzania wiadomości
- Kanały - integracje z platformami komunikacyjnymi