5.18 消息处理

OpenClaw 通过结构化管道处理入站消息,本文档详细介绍消息处理的完整流程。

核心消息处理流程

消息按以下流程处理:

入站消息 -> 路由/绑定 -> 会话密钥 -> 队列(如果运行中) -> Agent 运行(流式 + 工具) -> 出站回复

去重和防抖

系统维护缓存以防止因频道重连导致的重复消息处理。同一发送者的快速连续消息可以批量处理,时间可配置:

  • 全局默认:2000ms
  • 按频道调整:可为每个频道单独配置

会话管理

会话由网关拥有,而非客户端拥有:

  • 直接聊天:使用主会话密钥
  • 群组/频道:接收单独的密钥

Control UI 和 TUI 显示权威的网关支持的记录。

消息体处理

平台区分:

  • 提示词体:发送给 Agent 的内容
  • 命令体:用于解析指令的内容

群聊消息包含发送者标签,以保持实时消息和排队消息之间的一致性。

排队模式

活动运行可以通过以下模式处理新消息:

  • interrupt:中断当前执行
  • steer:将消息引导到当前执行中
  • followup:为后续轮次收集消息
  • collect:收集所有消息

流式和输出

块流式允许在文本生成时发送部分回复,分块遵守频道字符限制。推理可见性可通过以下指令控制:

# 开启/关闭/流式推理显示
/reasoning on|off|stream

配置

这些行为通过以下配置集中管理:

  • messages.*
  • agents.defaults.*
  • 频道特定覆盖
提示
更多消息处理的详细信息请参考 官方英文文档