Akış + parçalama
OpenClaw iki ayrı akış katmanına sahiptir:- Blok akışı (kanallar): asistan yazarken tamamlanan blokları yayar. Bunlar normal kanal mesajlarıdır (token deltaları değil).
- Önizleme akışı (Telegram/Discord/Slack): oluşturma sırasında geçici bir önizleme mesajını günceller.
Blok akışı (kanal mesajları)
Blok akışı, asistan çıktısını kullanılabilir oldukça büyük parçalar halinde gönderir.text_delta/events: model akış olayları (akışsız modeller için seyrek olabilir).chunker: min/max sınırları + kırma tercihi uygulayanEmbeddedBlockChunker.channel send: gerçek giden mesajlar (blok yanıtları).
agents.defaults.blockStreamingDefault:"on"/"off"(varsayılan kapalı).- Kanal geçersiz kılmaları: kanal başına
"on"/"off"zorlamak için*.blockStreaming(ve hesap başına varyantları). agents.defaults.blockStreamingBreak:"text_end"veya"message_end".agents.defaults.blockStreamingChunk:{ minChars, maxChars, breakPreference? }.agents.defaults.blockStreamingCoalesce:{ minChars?, maxChars?, idleMs? }(göndermeden önce akış bloklarını birleştirir).- Kanal kesin üst sınırı:
*.textChunkLimit(ör.channels.whatsapp.textChunkLimit). - Kanal parça modu:
*.chunkMode(lengthvarsayılan,newlineuzunluğa göre parçalamadan önce boş satırlarda (paragraf sınırları) böler). - Discord yumuşak üst sınırı:
channels.discord.maxLinesPerMessage(varsayılan 17), kullanıcı arayüzü kırpmasını önlemek için uzun yanıtları böler.
text_end:chunkerblok yayar yaymaz akış bloklarını gönderir; hertext_endiçin boşaltır.message_end: asistan mesajı bitene kadar bekler, sonra arabelleğe alınmış çıktıyı boşaltır.
message_end, arabelleğe alınmış metin maxChars değerini aşarsa yine chunker kullanır; bu nedenle sonda birden çok parça yayabilir.
Parçalama algoritması (alt/üst sınırlar)
Blok parçalamaEmbeddedBlockChunker tarafından uygulanır:
- Alt sınır: arabellek >=
minCharsolana kadar yayma (zorlanmadıkça). - Üst sınır:
maxCharsöncesinde bölmeyi tercih eder; zorlanırsamaxCharskonumunda böler. - Kırma tercihi:
paragraph→newline→sentence→whitespace→ sert kırma. - Kod çitleri: çitlerin içinde asla bölmez;
maxCharskonumunda zorlandığında Markdown geçerliliğini korumak için çiti kapatıp yeniden açar.
maxChars, kanal textChunkLimit değerine sabitlenir; bu yüzden kanal başına sınırları aşamazsınız.
Birleştirme (akış bloklarını birleştirme)
Blok akışı etkin olduğunda, OpenClaw art arda gelen blok parçalarını göndermeden önce birleştirebilir. Bu, ilerlemeli çıktı sağlamaya devam ederken “tek satırlık spam”i azaltır.- Birleştirme, boşaltmadan önce boşta kalma aralıklarını (
idleMs) bekler. - Arabellekler
maxCharsile sınırlandırılır ve aşılırsa boşaltılır. minChars, yeterli metin birikene kadar çok küçük parçaların gönderilmesini engeller (son boşaltma her zaman kalan metni gönderir).- Birleştirici,
blockStreamingChunk.breakPreferencedeğerinden türetilir (paragraph→\n\n,newline→\n,sentence→ boşluk). - Kanal geçersiz kılmaları
*.blockStreamingCoalesceüzerinden kullanılabilir (hesap başına yapılandırmalar dahil). - Varsayılan birleştirme
minChars, geçersiz kılınmadıkça Signal/Slack/Discord için 1500’e yükseltilir.
Bloklar arasında insan benzeri tempo
Blok akışı etkin olduğunda, blok yanıtları arasında rastgele bir duraklama ekleyebilirsiniz (ilk bloktan sonra). Bu, çok baloncuklu yanıtların daha doğal hissettirmesini sağlar.- Yapılandırma:
agents.defaults.humanDelay(ajan başınaagents.list[].humanDelayile geçersiz kılınır). - Modlar:
off(varsayılan),natural(800–2500ms),custom(minMs/maxMs). - Yalnızca blok yanıtlarına uygulanır; son yanıtlara veya araç özetlerine uygulanmaz.
”Parçaları akıt veya her şeyi”
Bu, şuna karşılık gelir:- Parçaları akıt:
blockStreamingDefault: "on"+blockStreamingBreak: "text_end"(ilerledikçe yay). Telegram dışındaki kanallarda ayrıca*.blockStreaming: truegerekir. - Her şeyi sonda akıt:
blockStreamingBreak: "message_end"(bir kez boşaltır; çok uzunsa muhtemelen birden çok parça halinde). - Blok akışı yok:
blockStreamingDefault: "off"(yalnızca son yanıt).
*.blockStreaming açıkça true olarak
ayarlanmadıkça blok akışı kapalıdır. Kanallar, blok yanıtları olmadan
canlı bir önizleme akıtabilir (channels.<channel>.streaming).
Yapılandırma konumu hatırlatması: blockStreaming* varsayılanları kök yapılandırmada değil,
agents.defaults altında bulunur.
Önizleme akışı modları
Kanoni̇k anahtar:channels.<channel>.streaming
Modlar:
off: önizleme akışını devre dışı bırakır.partial: en son metinle değiştirilen tek bir önizleme.block: parçalanmış/eklenmiş adımlarla önizleme güncellemeleri.progress: oluşturma sırasında ilerleme/durum önizlemesi, tamamlandığında son yanıt.
Kanal eşleme
| Kanal | off | partial | block | progress |
|---|---|---|---|---|
| Telegram | ✅ | ✅ | ✅ | partial olarak eşlenir |
| Discord | ✅ | ✅ | ✅ | partial olarak eşlenir |
| Slack | ✅ | ✅ | ✅ | ✅ |
channels.slack.streaming.nativeTransport,channels.slack.streaming.mode="partial"olduğunda Slack yerel akış API çağrılarını açıp kapatır (varsayılan:true).- Slack yerel akışı ve Slack asistan ileti dizisi durumu, bir yanıt ileti dizisi hedefi gerektirir; üst düzey DM’ler bu ileti dizisi tarzı önizlemeyi göstermez.
- Telegram:
streamMode+ booleanstreaming,streamingenum’una otomatik geçirilir. - Discord:
streamMode+ booleanstreaming,streamingenum’una otomatik geçirilir. - Slack:
streamMode,streaming.modealanına otomatik geçirilir; booleanstreaming,streaming.mode+streaming.nativeTransportalanlarına otomatik geçirilir; eskinativeStreaming,streaming.nativeTransportalanına otomatik geçirilir.
Çalışma zamanı davranışı
Telegram:- DM’lerde ve grup/konularda önizleme güncellemeleri için
sendMessage+editMessageTextkullanır. - Telegram blok akışı açıkça etkinleştirildiğinde önizleme akışı atlanır (çift akışı önlemek için).
/reasoning stream, gerekçelendirmeyi önizlemeye yazabilir.
- Gönderme + düzenleme önizleme mesajları kullanır.
blockmodudraftChunktaslak parçalamayı kullanır.- Discord blok akışı açıkça etkinleştirildiğinde önizleme akışı atlanır.
partial, mevcut olduğunda Slack yerel akışını (chat.startStream/append/stop) kullanabilir.block, ekleme tarzı taslak önizlemeleri kullanır.progress, durum önizleme metni kullanır, ardından son yanıtı verir.
İlgili
- Mesajlar — mesaj yaşam döngüsü ve teslimat
- Yeniden deneme — teslimat hatasında yeniden deneme davranışı
- Kanallar — kanal başına akış desteği