5.19 流式与分块

OpenClaw 实现了不同的流式机制来优化消息传递体验。

两层流式架构

OpenClaw 实现了两种不同的流式机制:

  • 块流式(频道):在模型生成时通过普通频道消息传递完成的文本块
  • Token 级流式(仅 Telegram):在生成过程中更新草稿气泡显示部分文本;完成后发送最终消息
注意
目前没有真正的 Token 流式传输到外部频道消息。

块流式架构

系统通过分块管道处理模型输出:

  1. 模型事件触发 EmbeddedBlockChunker
  2. 分块器应用最小/最大字符边界
  3. 输出在 text_end(立即)或 message_end(完成后)处中断
  4. 频道发送块回复

关键控制参数

  • blockStreamingDefault:启用/禁用该功能
  • blockStreamingBreak:确定刷新时机
  • blockStreamingChunk:设置字符边界和中断偏好
  • 频道特定上限防止消息过大

分块算法

分块器遵循层次化的中断偏好:

  1. 段落边界
  2. 换行符
  3. 句子
  4. 空白
  5. 强制中断

它智能处理 Markdown 代码围栏,在需要拆分时关闭并重新打开它们以保持有效语法。

块合并

连续的块可以在空闲间隙期间合并(可配置 idleMs),减少碎片化同时保持渐进输出。

对于 Signal、Slack 和 Discord,默认最小字符阈值会增加,除非被覆盖。

Telegram 草稿流式

Telegram 支持通过三种模式更新草稿气泡:

  • partial:连续文本更新
  • block:使用标准规则的分块更新
  • off:禁用

这独立于其他频道的块流式运行。

提示
更多流式和分块的详细信息请参考 官方英文文档