发问
当你在 飞书 向机器人发送一条消息,到收到 AI 的回复,中间究竟经历了什么?
理解这条链路至关重要。
它不仅帮助你定位问题发生的位置,更重要的是,当你需要为 OpenClaw 扩展新功能或接入新平台时,你会清楚地知道应该在哪里下手
消息流转全景图
一条消息从进入系统到生成回复,需要经过精确的八个步骤
第一步:渠道插件启动(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 完成发送。