12-消息全链路流转

12 阅读3分钟

发问

当你在 飞书 向机器人发送一条消息,到收到 AI 的回复,中间究竟经历了什么?

理解这条链路至关重要。

它不仅帮助你定位问题发生的位置,更重要的是,当你需要为 OpenClaw 扩展新功能或接入新平台时,你会清楚地知道应该在哪里下手

消息流转全景图

一条消息从进入系统到生成回复,需要经过精确的八个步骤

image.png

第一步:渠道插件启动(Channel Plugin startAccount)

消息的入口是Channel Plugin 渠道插件, 当 飞书 或微信消息到达时, 对应的 Channel Plugin 负责接收并启动账户处理流程:

  • 它完成 WebSocket 连接建立
  • Webhook 监听启动
  • 身份验证等通道特定的初始化工作

关键职责: 协议转换

不同平台有不同的消息格式, Channel Plugin 将这些异构格式转换为 OpenClaw 内部统一的消息结构

第二步:路由匹配(resolveAgentRoute)

职责

根据消息的来源通道、发送者身份、消息内容等条件,在 Binding 配置中查找匹配的 Agent。

消息匹配原则

路由解析遵循七层优先级规则, 它确保消息能够精准地找到目标 Agent。

如果没有找到匹配的路由,消息会被静默丢弃 ——这是设计使然,避免机器人响应不该响应的消息

第三步:配置聚合和预处理 (getReplyFromConfig)

职责

准备回复所需的所有配置和上下文, 聚合成一个完整的回复准备包

它要解决的问题包括

  • 使用哪个 AI 模型?
  • 上下文窗口如何组装?
  • 媒体附件如何处理?
  • 用户有哪些权限?

第四步:准备阶段(runPreparedReply)

职责

将准备好的配置包交给 Agent Engine 进入执行阶段

第五步:AI编排和调用(Agent Engine runReplyAgent)

职责

编排 AI 调用

处理逻辑

Agent Engine 接收准备好的配置,组装完整的 Prompt,调用 AI 模型 API,并管理整个生成过程。

它处理系统提示词的组装、上下文消息的排列、工具调用的管理,以及流式响应的处理。

这是计算最密集的一步,也是用户等待时间的主要来源

第六步: 流式响应处理(Agent Event Stream)

职责

AI 模型的响应以流式方式返回,Agent Engine 将其转换为一系列事件流。这些事件包括:

  • 文本块到达
  • 工具调用请求
  • 工具调用结果
  • 生成完成等

事件流的设计支持实时反馈。用户不需要等待完整回复生成,可以看到 AI “正在输入”的效果,这大大改善了交互体验。

第七步:回复决策(Reply Dispatch)

职责

决策中心

处理逻辑

事件流 需要被转换为具体的 回复动作。

Reply Dispatch 负责解析事件类型,决定如何处理:

  • 是发送文本消息?
  • 是执行工具调用?
  • 还是触发内联操作?

它根据 Agent 配置决定

  • 是否发送 Typing 指示器?
  • 是否分块发送长消息?
  • 是否需要等待工具执行结果后继续生成?

第八步:协议逆转换(Channel Outbound)

指责

将回复 通过对应的 Channel 发送出去。

协议的逆向转换: Channel Outbound 将 OpenClaw 内部的消息格式转换回平台特定格式,调用平台 API 完成发送。

总结

image.png