概述

OpenClaw 的消息处理是一条从入站消息到回复的完整流水线,涵盖会话解析、队列、流式传输、工具执行和推理可见性。

核心要点

消息流水线:

入站消息 -> routing/bindings -> session key
         -> queue(如有 run 在运行)
         -> agent run(streaming + tools)
         -> 出站回复(channel 限制 + chunking)

入站去重:channel 重连后可能重复投递同一消息,OpenClaw 通过短期缓存(channel/account/peer/session/message id)防止重复触发 agent run。

入站防抖(debounce):同一发送方的快速连续消息可合并为单次 agent turn,按 channel 可分别配置(如 WhatsApp 5000ms、Slack 1500ms)。媒体/附件立即触发,不受防抖影响。

会话归属:

  • 直接聊天 → 归入 agent main session key
  • 群组/频道 → 各自独立 session key
  • 会话 store 和 transcript 存在 Gateway 主机上

队列模式(messages.queue.mode):steer(默认)、followup、collect、steer-backlog、interrupt、queue

工具结果元数据:toolResult.content 是模型可见内容,toolResult.details 是 UI 渲染/诊断元数据,在 provider replay 和 compaction 前会被剥离。

静默回复:NO_REPLY/no_reply 表示不投递用户可见回复。直接对话默认不允许静默(会改写为简短回复),群组/频道默认允许静默。

配置/使用

入站防抖配置:

{
  messages: {
    inbound: {
      debounceMs: 2000,
      byChannel: { whatsapp: 5000, slack: 1500, discord: 1500 }
    }
  }
}

流式传输关键配置:

  • agents.defaults.blockStreamingDefault(on/off,默认 off)
  • agents.defaults.blockStreamingBreak(text_end/message_end)
  • agents.defaults.humanDelay(模拟人类停顿)

相关页面

  • streaming - 流式传输与 chunking 详细机制
  • queue - 命令队列与 steering 模式
  • queue-steering - 队列 steering 详细行为
  • session - 会话管理与 transcript 存储