OpenClaw架构解析:一个本地AI Agent系统是怎么工作的

摘要:用OpenClaw这个项目,你不需要记住每个配置项。你需要知道的是三件事:系统怎么转起来的,哪里会出问题,以及你能在哪里插手。OpenClaw本质上是一个在你电脑上运行的AI Agent操作系统。

用OpenClaw这个项目,你不需要记住每个配置项。你需要知道的是三件事:系统怎么转起来的,哪里会出问题,以及你能在哪里插手。


先说结论

OpenClaw本质上是一个在你电脑上运行的AI Agent操作系统。它做的事情不复杂:把消息平台(飞书、Telegram、Discord)发来的消息,交给大模型,大模型决定调用哪些工具,工具执行完把结果返回,最后把答案发回消息平台。

复杂的是:它把这个流程做成了持久运行的后台服务,还加上了记忆、技能、定时任务、多Agent路由。这个循环能24小时不停自动运转。


六个子系统

1. Gateway(网关)

Gateway是整个系统的神经中枢。它是一个单进程的Node.js应用,以macOS LaunchAgent形式常驻后台。

关键信息:

  • 监听WebSocket:ws://127.0.0.1:18789

  • 所有消息平台的连接都挂在Gateway上

  • 网页控制台也由Gateway直接提供:http://127.0.0.1:18789/

  • 配置文件在~/.openclaw/openclaw.json

  • 日志在~/.openclaw/logs/gateway.log

为什么做成单进程?这是刻意的选择。单进程意味着状态集中、调试简单、没有服务之间通信的麻烦。代价是:Gateway崩了,整个系统就崩了。

2. Router(路由器)

Router负责决定这条消息该交给哪个Agent处理。

路由规则的优先级从高到低是这样:

  • 精确匹配(特定用户ID)

  • 父子匹配(线程继承)

  • 服务器ID加角色(Discord)

  • 服务器ID

  • 团队ID(Slack)

  • 账号ID

  • 频道通配

  • 默认Agent

同一个优先级里,配置顺序靠前的获胜。

3. Agent Loop(核心循环)

这是OpenClaw实际思考的地方。每次收到消息后的执行流程:

  1. 加载人格:读SOUL.md文件

  2. 加载长期记忆:读MEMORY.md文件

  3. 加载当天日志:读memory文件夹里当天日期的md文件

  4. 技能注入:只选跟当前任务相关的技能,不是全量塞进去

  5. 调用大模型:把上下文、消息、技能一起发给模型

  6. 执行工具:模型说要调哪个工具,Gateway就去执行

  7. 循环:工具结果返回给模型,继续直到得到最终回答

  8. 更新记忆:把当天对话写进memory文件

关键细节:技能是按需注入的。一个配了50个技能的Agent,不会每次对话都把50个技能描述塞进prompt。这是为了省token。

4. Brain(大模型层)

Brain跟模型无关,可以随便换。可以换成任何支持Anthropic API格式的模型。

Brain的职责:

  • 理解用户想干什么

  • 决定调哪些工具

  • 安排多步执行的顺序

  • 生成最终回答

5. Memory(记忆系统)

记忆分三层:

  • 人格层:SOUL.md文件,定义Agent的性格、语气、工作方式。每次会话都加载。

  • 长期记忆:MEMORY.md文件,存稳定的长期事实,比如用户偏好、重要信息。私聊会话时加载。

  • 日志层:memory文件夹里按日期存的md文件,是当天的原始活动记录。当天会话时加载。

底层存储用SQLite加向量嵌入,支持混合搜索(语义相似加关键词匹配)。

还有自动压缩功能。当对话太长快超限时,系统会自动总结旧对话,把重要信息提出来存到MEMORY.md,然后压缩历史。这样防止对话太长撑爆。

6. Scheduler(调度器)

两种主动执行模式:

心跳模式:默认每30分钟唤醒一次Agent。Agent读HEARTBEAT.md文件,看看要检查什么。如果没什么要做的,就回复HEARTBEAT_OK,不产生噪音。

定时任务模式:精确到分钟的时间调度。任务存在~/.openclaw/cron/文件夹里,重启电脑也不会丢。


设计上的几个想法

文件优先,不用数据库

SOUL.md、MEMORY.md、HEARTBEAT.md都是普通的Markdown文件。好处是:可以直接打开看,可以用git管理版本,可以直接用编辑器改,Obsidian也能打开浏览。

这是故意对抗复杂性的选择:没有数据库,没有微服务,不会被某个厂商绑死。

本地运行,数据自己管

所有执行都在本机,调用大模型API时直接从你的机器发出,不经过OpenClaw任何服务器中转。你的对话记录、文件、执行历史,全在~/.openclaw/文件夹下,你完全掌控。

单一Gateway,简单优先

单进程设计就是一句话:能简单就不搞复杂。Anthropic官方也说过类似的话:能用简单循环搞定的,别过度引入编排框架。OpenClaw照着这个理念做的。


消息完整流转路径

消息从平台进来,到Gateway,Router决定给哪个Agent,Agent循环处理,调工具,拿结果,最后原路返回。


需要记住的三件事

Gateway是核心:所有东西都跑在这个单进程里。它挂了,系统就停了。用openclaw gateway status随时检查。

文件就是配置:SOUL.md定义人格,HEARTBEAT.md定义心跳任务,MEMORY.md定义长期记忆。改文件就是改Agent行为。

技能是按需注入的:不用担心技能太多拖慢系统,运行时只注入相关的。但SOUL.md和MEMORY.md是每次都加载的,所以这两文件要保持精简。

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_13710