Mechanizmy streamingu
OpenClaw oferuje dwa odrębne mechanizmy streamingu:
- Streaming blokowy (block streaming) — dostarcza ukończone bloki jako normalne wiadomości kanału w miarę generowania treści
- Streaming podglądowy (preview streaming) — aktualizuje tymczasowe wiadomości podglądu podczas generowania (Telegram, Discord, Slack)
System nie oferuje prawdziwego streamingu token-delta do wiadomości kanałowych. Streaming podglądowy operuje na bazie wiadomości, używając wzorca wyślij-i-edytuj.
Architektura streamingu blokowego
Przepływ przetwarza wyjście modelu przez zdarzenia delta tekstu, stosuje logikę chunkowania, a następnie wysyła bloki jako odpowiedzi kanału.
Kluczowe opcje konfiguracji:
agents.defaults.blockStreamingDefault— włącz/wyłącz streaming (domyślnie wyłączony)agents.defaults.blockStreamingBreak— wybierztext_endlubmessage_endagents.defaults.blockStreamingChunk— ustawminChars,maxCharsibreakPreferenceagents.defaults.blockStreamingCoalesce— scalanie bloków z czasem bezczynności- Nadpisania per kanał przez
*.blockStreamingi*.textChunkLimit
Algorytm chunkowania
EmbeddedBlockChunker implementuje inteligentne dzielenie tekstu:
- Próg minimalny — czeka aż bufor osiągnie
minChars - Granica maksymalna — preferuje podziały przed
maxChars; wymusza podział na limicie - Preferencja podziału — akapit → nowa linia → zdanie → spacja → twardy podział
- Obsługa bloków kodu — nigdy nie dzieli wewnątrz ogradzań kodu; zamyka i otwiera ponownie, zachowując poprawność Markdown
Koalescencja i tempo
Scalanie bloków: kolejne fragmenty scalają się w przerwach bezczynności (idleMs), redukując fragmentację przy zachowaniu progresywnego dostarczania. Domyślny minChars wzrasta do 1500 dla Signal, Slack i Discord.
Opóźnienia zbliżone do ludzkich: agents.defaults.humanDelay dodaje losowe pauzy między odpowiedziami blokowymi. Opcje: off (domyślnie), natural (800–2500 ms) lub niestandardowe zakresy.
Tryby streamingu podglądowego
Kanoniczne ustawienie: channels.<channel>.streaming
Dostępne opcje: off, partial, block, progress
- Telegram — obsługuje wszystkie tryby; używa wzorca edycji wiadomości
- Discord — obsługuje wszystkie tryby; używa chunkowania wersji roboczych
- Slack — obsługuje wszystkie tryby, w tym natywne API streamingu i styl dopisywania (append)