惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
雷峰网
雷峰网
Google DeepMind News
Google DeepMind News
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
MongoDB | Blog
MongoDB | Blog
V
V2EX
博客园 - 【当耐特】
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
I
InfoQ
Martin Fowler
Martin Fowler
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog
B
Blog
V
Visual Studio Blog
D
DataBreaches.Net
C
Check Point Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
F
Fortinet All Blogs

又耳笔记

用AI挣钱之AI建站:二维码生成器工具 用AI挣钱之AI建站:https://markdowntopdf.top Cloudflare Workers实战番外一:用Static Assets托管网站,告别传统方案 Cloudflare Workers实战(五):不止JavaScript,拥抱Python与Rust Cloudflare Workers实战(四):托管和分发静态文件 Cloudflare Workers实战(三):实现认证、重定向与缓存 Cloudflare Workers实战(二):动态修改后端响应 Cloudflare Workers实战(一):随心所欲操作客户端请求 Cloudflare workers不完全指南 使用n8n创作短篇小说 水果风波:信任的代价 用Python将PDF文件转换成图片 rust网络框架Pingora源码阅读3 rust网络框架Pingora源码阅读2 rust网络框架Pingora源码阅读1 Pingora快速入门教程1之总览 Rust模板引擎askama快速入门引擎 使用Loco快速搭建自己的后台系统 用Rust发一封图文并茂的邮件 Rust小项目: 写一个简单的恶意流量阻断器 Rust小项目: 写一个简单的网页爬虫 Rust命令行库Clap快速入门教程 Rust小项目:用Rust写一个端口扫描器 Rust真全栈开发快速入门 rust声明宏快速入门教程 Rust文本处理快速入门教程 RUST web框架axum快速入门教程6之测试 白嫖免费的Rust在线运行时shuttle RUST web框架axum快速入门教程5之中间件 用Rust来做以太坊开发5之事件日志及签名
小龙虾(OpenClaw)源码分析4:一条消息的完整路径(入站到回复)
About 又耳宁 关于技术与股票的一些零碎想法 · 2026-04-03 · via 又耳笔记

前面两篇把“怎么启动”讲了,这一篇正式回答最关键的问题:
用户发来一条消息,OpenClaw内部到底怎么跑起来的?

先看抽象链路

先别管具体渠道,我们抽象成统一流程:

渠道消息 -> Gateway接入 -> 路由/会话判定 -> Agent执行 -> 产出结果 -> 渠道发送

这个流程看起来很常规,但OpenClaw的价值就在于:
把多渠道差异尽量收敛到统一入口和统一出站模型。

入站:先“标准化”再处理

不同渠道(Telegram、Slack、Discord等)原始消息结构差异很大。
典型工程做法是先转成内部统一结构,再走后续流程,OpenClaw也是这个思路。

好处很直接:

  • 下游会话和Agent逻辑不需要懂每个平台字段细节
  • 新接渠道时,不必重写整套主流程

中间层:路由 + 会话

消息进入主流程后,核心是两件事:

  1. 路由到哪个Agent上下文
  2. 落到哪个Session

这个阶段会决定“它记忆的是哪段上下文”“回复发回哪里”。
如果这层没设计好,就会出现经典事故:串会话、串用户、串群聊。

执行层:Agent回合

进入Agent回合后,典型动作包括:

  • 装配本轮上下文(系统提示 + 会话历史 + 当前消息)
  • 调用模型
  • 按需触发工具调用
  • 组织最终回复

这一层在OpenClaw里是“可配置 + 可扩展”的,不是写死逻辑,这也是后面插件与工具体系的基础。

出站:按渠道能力分发

Agent产出的结果,最终还要回到具体渠道。
这个环节的难点在于“渠道能力差异”:

  • 有的支持富文本,有的不支持
  • 有的支持流式编辑,有的只能一次性发送
  • 媒体、附件、按钮等能力各不相同

所以出站层通常会做能力适配和降级策略。

你在代码里可以重点看的点

建议重点观察这些“边界处”:

  • 入站标准化位置(渠道适配层)
  • session key如何决策
  • queue mode如何影响消息时序
  • 出站发送失败时的重试与降级

这些点比单纯看函数细节更容易形成全局理解。

一条实战阅读建议

你可以自己做个实验:
开启一个渠道,发两条连续消息(第二条紧跟第一条),再对照日志看是否进入队列/合并策略。
这样第6篇讲队列并发时,你会立刻有体感。

小结

这篇的核心不是记函数名,而是记住“消息生命周期”:

  • 入站先标准化
  • 中间靠路由和会话维持上下文正确性
  • Agent回合负责推理和工具执行
  • 出站做渠道能力适配

下一篇我们单独展开Session,看看上下文连续性到底是如何落地的。

参考链接