OpenClaw从入门到应用——Agent:流式传输与分块
通过OpenClaw实现副业收入《OpenClaw赚钱实录从“养龙虾“到可持续变现的实践指南》OpenClaw 有两个独立的流式传输层块流式传输频道在助手生成内容时发出已完成的块。这些是普通的频道消息不是令牌增量。预览流式传输Telegram/Discord/Slack在生成过程中更新一个临时的预览消息。目前没有真正的令牌增量流式传输到频道消息。预览流式传输是基于消息的发送 编辑/追加。块流式传输频道消息块流式传输在助手输出可用时以粗粒度的块发送。模型输出 └─ text_delta/events ├─ (blockStreamingBreaktext_end) │ └─ 分块器在缓冲区增长时发出块 └─ (blockStreamingBreakmessage_end) └─ 分块器在 message_end 时刷新 └─ 频道发送块回复图例text_delta/events模型流事件对于非流式模型可能很稀疏。分块器EmbeddedBlockChunker应用最小/最大边界 断点偏好。频道发送实际的出站消息块回复。控制选项agents.defaults.blockStreamingDefaulton/off默认关闭。频道覆盖*.blockStreaming以及每个账户的变体可为每个频道强制设置on/off。agents.defaults.blockStreamingBreaktext_end或message_end。agents.defaults.blockStreamingChunk{ minChars, maxChars, breakPreference? }。agents.defaults.blockStreamingCoalesce{ minChars?, maxChars?, idleMs? }在发送前合并流式块。频道硬性上限*.textChunkLimit例如channels.whatsapp.textChunkLimit。频道分块模式*.chunkMode默认为lengthnewline在长度分块前按空行段落边界分割。Discord 软性上限channels.discord.maxLinesPerMessage默认 17 行分割过长的回复以避免 UI 裁剪。边界语义text_end一旦分块器发出就流式传输块在每个text_end时刷新。message_end等待助手消息完成然后刷新缓冲的输出。即使使用message_end如果缓冲的文本超过maxChars仍然会使用分块器因此可以在末尾发出多个块。分块算法低/高边界块分块由EmbeddedBlockChunker实现低边界在缓冲区 minChars之前不要发出除非强制。高边界优先在maxChars之前分割如果强制则在maxChars处分割。断点偏好paragraph→newline→sentence→whitespace→ 硬性分割。代码围栏永远不会在围栏内部进行分割当在maxChars处强制分割时会关闭并重新打开围栏以保持 Markdown 有效性。maxChars会被限制在频道的textChunkLimit内因此你无法超过每个频道的上限。合并合并流式块启用块流式传输后OpenClaw 可以在发送之前合并连续的块。这减少了“单行垃圾信息”同时仍然提供渐进式输出。合并会在刷新前等待空闲间隔idleMs。缓冲区受maxChars限制如果超过该限制则会刷新。minChars防止在积累足够文本之前发送微小片段最终刷新总是会发送剩余文本。连接符源自blockStreamingChunk.breakPreferenceparagraph→\n\nnewline→\nsentence→ 空格。可通过*.blockStreamingCoalesce进行频道覆盖包括每个账户的配置。除非被覆盖否则 Signal/Slack/Discord 的默认合并minChars会提高到 1500。块之间的类人节奏启用块流式传输后你可以在块回复之间添加随机暂停在第一个块之后。这让多气泡回复感觉更自然。配置agents.defaults.humanDelay可通过agents.list[].humanDelay为每个代理覆盖。模式off默认natural800–2500mscustomminMs/maxMs。仅适用于块回复不适用于最终回复或工具摘要。“流式分块或一次性全部”这对应于流式分块blockStreamingDefault: onblockStreamingBreak: text_end边生成边发出。非 Telegram 频道还需要*.blockStreaming: true。在末尾一次性流式传输所有内容blockStreamingBreak: message_end一次性刷新如果内容很长可能会有多个块。无块流式传输blockStreamingDefault: off仅最终回复。频道说明除非显式将*.blockStreaming设置为true否则块流式传输默认关闭。频道可以在没有块回复的情况下流式传输实时预览channels..streaming。配置位置提醒blockStreaming*默认值位于agents.defaults下而不是根配置中。预览流式传输模式规范键channels..streaming模式off禁用预览流式传输。partial单个预览用最新文本替换。block预览以分块/追加步骤更新。progress在生成期间显示进度/状态预览完成后显示最终答案。频道映射频道offpartialblockprogressTelegram✅✅✅映射为partialDiscord✅✅✅映射为partialSlack✅✅✅✅仅限 Slack当streamingpartial时channels.slack.nativeStreaming切换 Slack 原生流式传输 API 调用默认true。旧键迁移TelegramstreamMode 布尔值streaming自动迁移到streaming枚举。DiscordstreamMode 布尔值streaming自动迁移到streaming枚举。SlackstreamMode自动迁移到streaming枚举布尔值streaming自动迁移到nativeStreaming。运行时行为Telegram在私聊和群组/主题中使用sendMessageeditMessageText进行预览更新。当显式启用 Telegram 块流式传输时会跳过预览流式传输以避免双重流式传输。/reasoning stream可以将推理写入预览。Discord使用发送 编辑预览消息。block模式使用草稿分块draftChunk。当显式启用 Discord 块流式传输时会跳过预览流式传输。Slackpartial在可用时可以使用 Slack 原生流式传输chat.startStream/append/stop。block使用追加式草稿预览。progress使用状态预览文本然后显示最终答案。链接标题# 流式传输 分块OpenClaw 有两个独立的流式传输层块流式传输频道在助手生成内容时发出已完成的块。这些是普通的频道消息不是令牌增量。预览流式传输Telegram/Discord/Slack在生成过程中更新一个临时的预览消息。目前没有真正的令牌增量流式传输到频道消息。预览流式传输是基于消息的发送 编辑/追加。块流式传输频道消息块流式传输在助手输出可用时以粗粒度的块发送。模型输出 └─ text_delta/events ├─ (blockStreamingBreaktext_end) │ └─ 分块器在缓冲区增长时发出块 └─ (blockStreamingBreakmessage_end) └─ 分块器在 message_end 时刷新 └─ 频道发送块回复图例text_delta/events模型流事件对于非流式模型可能很稀疏。分块器EmbeddedBlockChunker应用最小/最大边界 断点偏好。频道发送实际的出站消息块回复。控制选项agents.defaults.blockStreamingDefaulton/off默认关闭。频道覆盖*.blockStreaming以及每个账户的变体可为每个频道强制设置on/off。agents.defaults.blockStreamingBreaktext_end或message_end。agents.defaults.blockStreamingChunk{ minChars, maxChars, breakPreference? }。agents.defaults.blockStreamingCoalesce{ minChars?, maxChars?, idleMs? }在发送前合并流式块。频道硬性上限*.textChunkLimit例如channels.whatsapp.textChunkLimit。频道分块模式*.chunkMode默认为lengthnewline在长度分块前按空行段落边界分割。Discord 软性上限channels.discord.maxLinesPerMessage默认 17 行分割过长的回复以避免 UI 裁剪。边界语义text_end一旦分块器发出就流式传输块在每个text_end时刷新。message_end等待助手消息完成然后刷新缓冲的输出。即使使用message_end如果缓冲的文本超过maxChars仍然会使用分块器因此可以在末尾发出多个块。分块算法低/高边界块分块由EmbeddedBlockChunker实现低边界在缓冲区 minChars之前不要发出除非强制。高边界优先在maxChars之前分割如果强制则在maxChars处分割。断点偏好paragraph→newline→sentence→whitespace→ 硬性分割。代码围栏永远不会在围栏内部进行分割当在maxChars处强制分割时会关闭并重新打开围栏以保持 Markdown 有效性。maxChars会被限制在频道的textChunkLimit内因此你无法超过每个频道的上限。合并合并流式块启用块流式传输后OpenClaw 可以在发送之前合并连续的块。这减少了“单行垃圾信息”同时仍然提供渐进式输出。合并会在刷新前等待空闲间隔idleMs。缓冲区受maxChars限制如果超过该限制则会刷新。minChars防止在积累足够文本之前发送微小片段最终刷新总是会发送剩余文本。连接符源自blockStreamingChunk.breakPreferenceparagraph→\n\nnewline→\nsentence→ 空格。可通过*.blockStreamingCoalesce进行频道覆盖包括每个账户的配置。除非被覆盖否则 Signal/Slack/Discord 的默认合并minChars会提高到 1500。块之间的类人节奏启用块流式传输后你可以在块回复之间添加随机暂停在第一个块之后。这让多气泡回复感觉更自然。配置agents.defaults.humanDelay可通过agents.list[].humanDelay为每个代理覆盖。模式off默认natural800–2500mscustomminMs/maxMs。仅适用于块回复不适用于最终回复或工具摘要。“流式分块或一次性全部”这对应于流式分块blockStreamingDefault: onblockStreamingBreak: text_end边生成边发出。非 Telegram 频道还需要*.blockStreaming: true。在末尾一次性流式传输所有内容blockStreamingBreak: message_end一次性刷新如果内容很长可能会有多个块。无块流式传输blockStreamingDefault: off仅最终回复。频道说明除非显式将*.blockStreaming设置为true否则块流式传输默认关闭。频道可以在没有块回复的情况下流式传输实时预览channels..streaming。配置位置提醒blockStreaming*默认值位于agents.defaults下而不是根配置中。预览流式传输模式规范键channels..streaming模式off禁用预览流式传输。partial单个预览用最新文本替换。block预览以分块/追加步骤更新。progress在生成期间显示进度/状态预览完成后显示最终答案。频道映射频道offpartialblockprogressTelegram✅✅✅映射为partialDiscord✅✅✅映射为partialSlack✅✅✅✅仅限 Slack当streamingpartial时channels.slack.nativeStreaming切换 Slack 原生流式传输 API 调用默认true。旧键迁移TelegramstreamMode 布尔值streaming自动迁移到streaming枚举。DiscordstreamMode 布尔值streaming自动迁移到streaming枚举。SlackstreamMode自动迁移到streaming枚举布尔值streaming自动迁移到nativeStreaming。运行时行为Telegram在私聊和群组/主题中使用sendMessageeditMessageText进行预览更新。当显式启用 Telegram 块流式传输时会跳过预览流式传输以避免双重流式传输。/reasoning stream可以将推理写入预览。Discord使用发送 编辑预览消息。block模式使用草稿分块draftChunk。当显式启用 Discord 块流式传输时会跳过预览流式传输。Slackpartial在可用时可以使用 Slack 原生流式传输chat.startStream/append/stop。block使用追加式草稿预览。progress使用状态预览文本然后显示最终答案。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2579098.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!