










最近打算系统性地啃一下OpenClaw源码,顺手也开个系列记录一下自己的理解过程。
这一篇是第1篇,目标很简单:先把地图摊开,搞清楚这个项目大致由哪些模块组成,消息是怎么流动的,后面再按模块逐个击破。
先说明一下,本文基于openclaw当前最新源码(我本地拉取时间是写文当天),重点放在工程结构和运行链路,不会一上来就抠每一行实现。
如果只用一句话来概括,我觉得是:
一个自托管的AI助手网关(Gateway),把多种聊天渠道、Agent运行时、工具能力统一在一个控制平面里。
从官方README也能看出来,它不是单纯的聊天机器人,而是一个“中枢”:
所以你可以把它想象成:聊天渠道适配层 + Agent运行编排层 + 控制平面。
很多同学读大项目容易卡住,不是因为代码难,而是因为没先抓住主链路。
我自己总结了一个“先粗后细”的阅读顺序:
只要这4个问题通了,后面看队列、插件、安全就顺很多。
先画个非常简化的示意图(不是源码中的官方图,方便理解):
聊天渠道(Discord/Slack/Telegram/...)
|
v
Gateway(控制平面)
|
+--------+--------+
| |
v v
会话/路由/队列 Agent运行时(模型+工具)
| |
+--------+--------+
|
v
响应回渠道
你会发现,Gateway是中间那层“总调度”,这也是后续系列里会反复出现的核心词。
这个仓库很大,但第一阶段你只要盯住这几个目录就够了:
src/entry.ts:CLI入口之一,处理启动前置逻辑src/index.ts:兼容入口与库导出相关逻辑src/gateway/:网关核心实现(控制平面)src/agents/:Agent相关运行逻辑(上下文、模型、行为)src/channels/:渠道相关实现src/plugins/与extensions/:插件化能力和扩展实现docs/concepts/:架构和机制文档(读源码前后都很有帮助)一句话:先读entry/index/gateway/agents,再扩展到channels/plugins。
src/entry.ts里能看到启动前做了不少事情,比如:
这种入口文件很典型:它并不承载业务本身,而是承载“把系统安全且可控地拉起来”的职责。
如果你之前读过一些CLI项目(例如kubectl、docker这类工具),会发现套路很像:
先保证启动姿势正确,再把活交给真正的命令执行层。
docs/concepts/architecture.md里明确了一个核心点:Gateway是长期运行的中枢,客户端、节点、Web控制端都围绕它通信。
从工程角度看,这种设计有几个明显好处:
你可以理解为:消息面和控制面被清晰地收口到Gateway,后续无论接新渠道还是换模型,都更容易演进。
前面规划的系列我这里正式落成目录,方便后续连载时对齐:
AGENTS.md等文件如何影响行为第13篇会刻意保持“极简可运行”,只提供命令行交互接口,不做Web界面,目的是帮助大家从“读懂架构”走到“自己动手实现”。
这一篇我们先完成了三件事:
下一篇我们就正式进CLI启动链路,看看一条openclaw ...命令是如何一步步进入主执行逻辑的。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。