这是「OpenClaw 教程课程」第 7 课。 前一课我们讲清楚了 Session,这一课继续往前走一步:一条消息在 OpenClaw 里到底是怎么被处理的?

图:Agent Loop 是 OpenClaw 里“消息变成动作和回复”的完整运行路径。
很多人第一次接触 OpenClaw 时,天然会用一种聊天产品的直觉去理解它:
我发一句话 模型想一下 它回一句话
这套理解在普通聊天产品里勉强够用,但放到 OpenClaw 里就太浅了。
因为在 OpenClaw 里,一条消息真正经历的过程通常是:
进入 Gateway 找到对应 Session 组装上下文 解析系统提示词 调模型 模型决定是否调用工具 工具执行 结果回流 流式输出 持久化状态
这一整条链,OpenClaw 里有一个专门的名字:
Agent Loop
今天这课,我们就把它拆开讲清楚。
一、什么是 Agent Loop?
先给一个最简定义:
Agent Loop 是一次完整的 Agent 运行过程。
文档里的核心意思非常明确:
它不是“模型回了一句话”这么简单,而是一次真实的、完整的运行周期:
intake → context assembly → model inference → tool execution → streaming replies → persistence
翻成更好懂的话,就是:
接收输入 组装上下文 模型推理 工具执行 流式输出 结果和状态更新
所以以后你不要再把一次交互只理解成“发消息 → 得回答”。
更准确的理解应该是:
你发出去的是一条消息,但系统内部跑起来的是一轮 Agent Loop。
二、为什么 OpenClaw 必须有 Agent Loop?
因为 OpenClaw 不是纯聊天模型,而是一个真正能处理工具、状态和上下文的运行系统。
如果没有 Agent Loop,这些能力几乎不可能稳定协同:
Session 怎么接住这条消息? 模型看见的上下文从哪来? 工具调用什么时候触发? 流式输出怎么组织? 最终状态写回哪里?
也就是说,Agent Loop 的作用并不是“让流程更复杂”,而是:
把一次真实交互所需要的全部阶段组织成一条可运行、可观察、可持续化的链路。
三、一条消息进入 OpenClaw 后,第一步发生了什么?
你可以先把入口理解成两种常见来源:
Gateway RPC 里的 agent/agent.waitCLI 发起的 agent 命令
对大多数普通用户来说,虽然你表面上是在 Telegram、Discord、Dashboard 里发消息,但在更底层,它最终都会进入这类统一的 Agent 处理入口。
这意味着:
不同聊天入口,最终会汇入同一套 Agent Loop。
这就是为什么 OpenClaw 能保持一致行为。
四、Agent Loop 的高层流程,到底长什么样?
先给你一个最值得记住的简化版:
用户消息进入系统 ↓定位 Session ↓组装上下文和系统提示 ↓进入模型推理 ↓如有需要,调用工具 ↓工具结果回流给模型 ↓生成最终回复 ↓流式输出 / 最终输出 ↓写入状态与记录
图:从用户消息进入,到最终回复发出,OpenClaw 跑的是一整轮 Agent Loop,而不是一次单点“模型回答”。
如果你想更专业一点地看,它其实包含几个关键层次:
接入层:消息进系统 准备层:Session、上下文、提示词 推理层:模型思考 执行层:工具调用 输出层:流式回复和最终回复 持久化层:记录和状态保存
五、为什么 Session 会在 Agent Loop 里这么重要?
因为 Agent Loop 并不是对“裸消息”直接处理。
它处理的是:
某个 Session 中的一次新输入。
这意味着在真正开始模型推理之前,系统要先知道:
这条消息属于哪个 Session 当前 Session 里已经有什么历史 这次应该继承哪些上下文 会不会触发新的会话边界
所以 Session 不是独立存在的概念,它和 Agent Loop 是强绑定的。
换句话说:
Session 负责决定“这次对话站在哪个上下文里”,Agent Loop 负责决定“在这个上下文里怎么跑完整个过程”。
六、上下文组装到底是在干什么?
这是很多新手最容易忽略的一段。
你以为模型只是“看你刚发的那句话”,其实不是。
在进入推理前,OpenClaw 会做大量准备工作,比如:
读取 Session 里的历史对话 装配系统提示词 加载技能(skills)相关上下文 引入 bootstrap / 工作区上下文 应用模型和运行时设置
也就是说,模型真正“看见”的,不是你眼前输入框里的那一句,而是:
一整份经过系统拼装过的上下文包。
这也是为什么你经常会觉得:
它好像知道前面发生了什么 它好像带着某种风格或角色设定在说话 它有时候能直接接着前面工具执行的结果往下说
这些都不是巧合,而是上下文组装的结果。
七、模型推理只是 Agent Loop 的中段,不是全部
很多人天然会把“模型推理”当成整件事的主体。
其实在 OpenClaw 里,模型推理只是 Agent Loop 的一个阶段。
它负责的是:
理解当前输入 结合上下文做判断 生成文本 决定是否调用工具
但它并不负责:
直接执行工具 管理会话状态 保存结果 控制整个生命周期
所以你以后看到 Agent Loop,不要只把注意力放在模型上。
更完整的理解应该是:
模型是 Agent Loop 里的“大脑阶段”,但不是整个系统本身。
八、工具调用在 Agent Loop 里是怎么发生的?
这是 OpenClaw 和普通聊天 AI 差异最大的地方之一。
在 Agent Loop 里,模型不会自己直接去执行命令、读文件、开浏览器。
模型做的是:
判断现在要不要调工具 说明该调哪个工具 提供参数或意图
然后真正执行这些事情的,是 OpenClaw 的工具层。
也就是说,流程是:
第一步:模型判断需要工具
第二步:发出工具调用请求
第三步:OpenClaw 执行工具
第四步:工具结果回流到当前这轮 Agent Loop
第五步:模型继续基于工具结果生成输出
所以你看到的是“AI 会用工具”,本质上其实是:
Agent Loop 把模型推理和工具执行组织成了一个可往返的过程。

图:模型并不直接执行工具,而是在 Agent Loop 中由系统接管工具调用,再把结果回流给模型继续处理。
九、为什么 OpenClaw 会流式输出?
文档里明确提到,Agent Loop 会处理 streaming replies。
这意味着很多时候你看到的不是“憋半天,一次性吐一大段”,而是:
它可以一边生成一边输出 工具事件也可以被流式呈现 整个生命周期中会有不同 stream
这就解释了为什么有时候你在 UI 里会看到:
文本一点点出现 工具过程被展示出来 生命周期状态有开始、结束、错误这些阶段
这不是额外 UI 花样,而是因为 Agent Loop 本身就是按流处理的。
十、为什么 Agent Loop 强调“单 Session 串行”?
当前文档里有一个非常关键的点:
同一个 Session 内的运行是串行化的。
这意味着:
同一个 Session 不会同时乱跑多轮互相抢状态 可以避免工具调用和会话写入打架 能保持历史一致性
这点特别重要。
因为如果一个 Session 里允许多轮完全并发乱跑,结果很容易出现:
工具结果串台 状态写入覆盖 回复顺序混乱 Session 历史失真
所以你可以把这个机制理解成:
Agent Loop 在每个 Session 里都像一条排队运行的单车道。

十一、Agent Loop 结束后,为什么还要“持久化”?
因为如果一轮运行结束后什么都不保存,那下一轮就无法正确延续。
所以在 Agent Loop 最后,系统通常还会做:
写入消息记录 保存工具结果摘要或相关信息 更新 Session 状态 为下一轮继续运行做准备
这一步非常关键,因为它决定了:
下次还能不能接上 /new前后的边界如何体现日后回看记录时有没有依据
所以你要把“持久化”理解成:
Agent Loop 不是回答完就结束,而是还要把这一轮运行的后果写回系统。
十二、为什么理解 Agent Loop 后,很多现象 suddenly 就解释通了?
因为很多你之前觉得“它怎么这样”的地方,其实都是 Agent Loop 的自然结果。
比如:
现象 1:为什么它不是立刻回复,而是像经历了一串步骤?
因为它真的经历了一串步骤。
现象 2:为什么有时能看到工具过程?
因为工具事件本来就在 Agent Loop 的流里。
现象 3:为什么同一个 Session 里不会无限乱并发?
因为它按 Session 串行化。
现象 4:为什么上下文和系统提示会明显影响回答?
因为模型看到的是“组装后的上下文”,不是你眼前那一句裸消息。
所以理解 Agent Loop 的价值在于:
你开始真正从系统视角理解 OpenClaw,而不是只从聊天窗口视角理解它。
十三、这节课最重要的一句话
如果你今天只记一句话,那我建议你记这句:
Agent Loop 是 OpenClaw 把“一条消息”变成“一次完整可执行运行”的全过程。
它不是聊天的装饰层,而是消息处理的真实主干。
十四、总结
这节课你只要真正记住下面 5 句话,就已经够用了:
Agent Loop 不是单纯模型回复,而是一整轮完整运行。 它包含消息进入、上下文组装、模型推理、工具执行、流式输出和状态持久化。 Session 决定上下文归属,Agent Loop 决定这轮处理怎么跑。 模型会决定是否调用工具,但真正执行工具的是系统工具层。 理解 Agent Loop,才能真正理解 OpenClaw 为什么不像普通聊天 AI。
下一课预告
下一课我们会学:
第 8 课:Context Engine——模型“看到了什么”
也就是继续往 Agent Loop 的内部再走一步:
模型到底看到了哪些信息 系统提示词怎么拼出来 bootstrap、skills、session 历史是怎么共同作用的
🦞 本文由八条撰写,持续更新中。
夜雨聆风