不知不觉,快一个月的时间过去了,《OpenClaw源码解读》这个系列也写了20篇,该做一个阶段性的归纳和总结, 建立这20篇博客的阅读路线图,把散落的“珍珠”串联在一起。

OpenClaw 源码解读 · 导读(开篇路线图)

一句话:跟着一条消息,走完 OpenClaw 从「进程启动」到「回复返回」的完整旅程。

源码解读最大的痛点是「局部清楚、全局糊涂」——单看 run-loop.ts 知道是 LLM↔Tool 循环,单看 resolve-route.ts 知道是路由,但串不起来。这篇导读做三件事:

  1. 给一条主线(消息的完整生命周期);

  2. 把散在各篇的源码模块挂到主线的对应节点上;

  3. 给出阅读顺序建议,让你按图索骥、不迷路。


一、全景图:一条消息的完整旅程

               ┌──────────────────────────────────────────────────┐
               │  前置 · 进程启动(没有它就没有消息可处理)          │
               │  (1) entry.ts 命令行 → Gateway 跑起来             │
               │  (3)(4)(5)(6)(7) server.impl.ts 启动四大阶段      │
               └────────────────────────┬─────────────────────────┘
                                        ▼
┌─────────────────────────────────────────────────────────────────────┐
│ 主线一 · 消息入站:Matrix 消息 → 变成一次 Agent 调用                   │
│                                                                     │
│   ① 路由解析   resolve-route        ── (2)(15)                       │
│   ② 诊断记录   diagnostic           ── (15)                          │
│   ③ Hook 拦截  reply_dispatch       ── (16)                          │
│   ④ 消息分发   dispatch             ── (15)                          │
│   ⑤ 记忆检查   memoryFlush/compaction ── (15)                        │
│   ⑥ Session Turn 创建               ── (15)                          │
│   ⑦ Lane 并发控制                   ── (15)(11)                      │
│   ⑧ Harness 选中 → Embedded Run 启动 ── (15)                         │
└────────────────────────────────────┬────────────────────────────────┘
                                     ▼
┌─────────────────────────────────────────────────────────────────────┐
│ 主线二 · 单 Agent 执行:OpenClaw 的心脏                               │
│                                                                     │
│   ① agent-run-dispatch.ts    调度分发      ── (8)                    │
│   ② agent-run-handler.ts     9 阶段 Pipeline ── (9)                  │
│   ③ run-orchestrator.ts      执行前编排    ── (11)                   │
│   ④ agent-run-execution-phase.ts 发射      ── (10)                   │
│   ⑤ run-loop.ts  🔁 LLM↔Tool 闭循环        ── (12)                   │
│   ⑥ openai-provider.ts  LLM 交互/流式处理   ── (13)                  │
└────────────────────────────────────┬────────────────────────────────┘
                                     ▼
┌─────────────────────────────────────────────────────────────────────┐
│ 主线三 · 多 Agent 协同:从一到多                                      │
│                                                                     │
│   ① sessions_spawn 子 Agent 调度          ── (14)                    │
│   ② 实战落地:多 Agent 协同自愈系统        ── 高阶与淬炼(1)            │
└─────────────────────────────────────────────────────────────────────┘

读这张图的方法:横着看是「一条消息的生命周期」,竖着看是「每个阶段对应的源码模块」。括号里的编号,就是系列里讲这个模块的篇目。


二、副线:工程全景(俯瞰地图)

在走进主线之前,先有三篇「登高望远」的文章,帮你建立整体认知:

篇目内容链接
入门与破局(1)100 篇死磕源码的路线图与专家养成指南阅读
入门与破局(2)OpenClaw 项目定位与设计哲学:为什么值得读阅读
入门与破局(3)仓库目录结构全景:src / packages / skills / extensions阅读

这三篇是「地图的图例」——先看懂它,再走进具体源码,就不会迷路。


三、主线一:消息入站(消息怎么变成 Agent 调用)

一条 Matrix 消息到达后,OpenClaw 不是直接丢给 LLM,而是经过一串「安检 + 准备」流程,最后才真正启动一次 Agent 运行。

阶段源码模块篇目一句话导读
路由解析resolve-route.ts(2) (15)决定「这条消息该给谁」——匹配 8 层绑定规则,解析出目标 agent 与 session
Hook 拦截hooks.ts(16)reply_dispatch 钩子的注册与调用:registerHook() → 41 种合法钩子 → first-claim wins 执行
诊断 + 分发 + 记忆检查 + Lane + 启动全链路日志追踪(15)从日志逐行还原「消息接收到开始执行」的全流程,含双层 Lane 并发控制

阅读顺序建议:先 阅读《源码(2)》 建立「消息 → Agent 调用」的粗框架,再阅读《源码(15)》 用日志把每一环钉死,最后《源码(16)》 深挖 Hook 机制的实现细节。


四、主线二:单 Agent 执行(OpenClaw 的心脏)

这是整个系列的核心。一次 Agent 运行,从「调度」到「发射」再到「LLM↔Tool 闭循环」,层层递进:

阶段源码模块篇目一句话导读
调度分发agent-run-dispatch.ts(8)执行链路的入口,任务分发与路由
核心 Pipelineagent-run-handler.ts(9)9 阶段流水线(Preflight → Routing → … → Execute),每个 Agent 的执行生命周期
执行前编排run-orchestrator.ts(11)「总指挥」:会话管理、Lane 并发、模型路由(含回退)、before_agent_reply 钩子
发射agent-run-execution-phase.ts(10)第 9 阶段实现,双重准入锁 + 13 步,从「准备」到「发射」
LLM↔Tool 闭循环run-loop.ts(12)心脏while(true) 里「调 LLM → 解析 tool_calls → 执行工具 → 回填 → 再来一轮」
LLM 交互/流式openai-provider.ts(13)模型路由决策、传输协议选择、双通道认证、流式返回

这条主线的阅读顺序就是执行顺序:《源码(8)》 → 《源码(9)》 → 《源码(11)》 → 《源码(10)》 → 《源码(12)》 → 《源码(13)》 。

💡 关键认知:这六篇串起来,就是 OpenClaw「单 Agent 执行引擎」的完整流水线。多 Agent 的本质,是在这条流水线的 Dispatch 阶段插入「任务分解 + 分发」——这也是《源码(9)》 里反复强调的「多 Agent 协同需在 Dispatch 阶段插入任务分解逻辑」。


五、主线三:多 Agent 协同(从一到多)

阶段源码模块篇目一句话导读
子 Agent 调度subagent-spawn.ts(14)9 步流水线,isolated/fork 两种上下文,附件物化,多 Agent 调度中枢
实战落地多 Agent 自愈系统高阶与淬炼(1)面向软件研发全流程的 4 Agent 协同代码审查与自愈系统(设计初稿)

六、阅读顺序建议(三档)

① 快速入门(想先看懂 OpenClaw 是什么)

入门与破局(1) → (2) → (3)
    → (1) 启动流程
    → (3)(4)(5)(6)(7) server.impl.ts 四大阶段
    → (2)(15)(16) 消息入站

② 吃透执行引擎(想真正理解 Agent 怎么跑)

(12) run-loop.ts(先看心脏,建立「LLM↔Tool 循环」直觉)
    → (8)(9)(11)(10) 调度 → Pipeline → 编排 → 发射
    → (13) LLM 交互层
    → (15)(16) 回到入站,把「消息怎么进到循环」补齐

③ 落地多 Agent(想用它做项目)

(14) sessions_spawn
    → 高阶与淬炼(1) 多 Agent 自愈系统
    → 回头重读 (9) 的 Dispatch 阶段(任务分解的落点)

七、一句话收尾

这 20 篇文章,本质是在回答同一个问题一条消息,从进来到回复返回,OpenClaw 到底做了什么?

答案是四段旅程:进程启动(跑起来)→ 消息入站(安检准备)→ 单 Agent 执行(心脏跳动)→ 多 Agent 协同(从一到多)。

拿住这条线,再回去读任何一篇,你都知道它站在整张地图的哪个位置。


本文是《OpenClaw 源码解读》系列的开篇导读,作为全书路线图。

正在规划《OpenClaw源码解读》书籍,欢迎出版社编辑交流

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐