OpenClaw 的底层实现深度解析(一):它为什么不像“聊天机器人”,更像一个本地 AI 操作系统
OpenClaw 的底层实现深度解析:它为什么不像“聊天机器人”,更像一个本地 AI 操作系统
如果只看表面,OpenClaw 像是一个“能在 WhatsApp、Telegram、Slack 里和你聊天的 AI 助手”。
但从底层实现看,它更接近一个 本地优先(local-first)的 Agent 控制平面:把大模型、消息通道、设备能力、工具系统、会话状态和自动化任务,统一挂到一个长期运行的 Gateway 上,再通过 Agent Loop 驱动每次推理和执行。
我把它的实现原理拆成 5 层来看。
1. 整体架构:一个 Gateway,统一控制所有入口和能力
OpenClaw 的核心不是 UI,也不是某个聊天客户端,而是一个 长期运行的 Gateway 进程。
它负责几件最关键的事:
- 持有所有消息通道连接,比如 WhatsApp、Telegram、Slack、Discord、Signal、iMessage、WebChat
- 对外暴露统一的 WebSocket 控制接口
- 管理 Agent 会话、工具调用、事件流、配置、节点设备和自动化任务
- 把不同前端入口都收敛到同一条运行链路里
也就是说,OpenClaw 的设计不是“每个渠道各跑一个 Bot”,而是:
所有消息入口 -> Gateway -> Agent Runtime -> Tools / Nodes / Memory -> 再回到对应渠道
这也是它和很多“脚本式聊天机器人”最大的区别:
它先统一控制面,再统一智能执行面。
2. 请求是怎么跑起来的:从消息到执行的 Agent Loop
OpenClaw 真正的核心,是它的 Agent Loop。
一次完整调用,大致会经历下面这个流程:
- 某个渠道收到用户消息
- Gateway 把消息路由到对应 session / agent
- 组装本轮上下文和 system prompt
- 调用嵌入式 agent runtime 做模型推理
- 如果模型决定调用工具,就执行工具
- 持续把中间状态通过事件流往外推
- 最终把回复和工具结果写回会话,并发送到原渠道
官方文档把这条链路描述为:
intake → context assembly → model inference → tool execution → streaming replies → persistence
这里有两个很关键的实现点。
2.1 每个 session 串行执行,避免状态打架
OpenClaw 不允许同一个会话里同时跑多个 agent run。
它会按 session key 做串行化,把每次执行放进 lane-aware queue 里。
这样做的好处很直接:
- 避免多个工具同时修改同一份会话状态
- 避免 session 文件、日志、CLI stdin 等共享资源冲突
- 避免用户连续发消息时,模型输出互相覆盖
所以它不是“高并发胡乱跑”,而是 有序并发:
不同 session 可以并行,同一 session 必须串行。
2.2 它不是一次性返回,而是事件流式运行
OpenClaw 的运行过程不是黑盒。
在 agent loop 中,它会持续发出不同类型的流事件:
assistant:模型文本增量tool:工具开始、更新、结束lifecycle:运行开始、结束、报错
这意味着前端、CLI、WebChat、macOS app 都不需要自己理解模型内部状态,
只要订阅 Gateway 的事件流,就能实时显示:
- AI 正在思考
- AI 正在调用哪个工具
- 工具有没有完成
- 回复文本是否已增量产生
所以从工程角度看,OpenClaw 本质上是在做一件事:
把 LLM 推理过程“协议化”和“可观察化”。
3. Prompt 不是固定模板,而是运行时动态拼装
OpenClaw 每次运行都会动态构建 system prompt,而不是简单塞一个固定人格设定。
它的 prompt 主要由几部分组成:
- 工具列表和工具说明
- 安全提醒
- Skills 列表
- 当前工作目录 / workspace
- 文档位置
- 注入的工作区文件
- 沙箱状态
- 当前日期时区
- 当前运行时信息(OS、Node、模型等)
这里最有意思的是 workspace bootstrap 注入机制。
OpenClaw 会把这些工作区文件直接注入模型上下文:
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdBOOTSTRAP.mdMEMORY.md(若存在)
这套设计说明它的核心思路不是“把智能都写死在程序里”,而是:
程序负责运行框架,行为通过工作区文件和技能系统动态塑形。
所以 OpenClaw 的“人格”“操作习惯”“项目约束”本质上都不是硬编码,而是 prompt-time configuration。
4. 上下文与记忆:把“短期上下文”和“长期记忆”分开
很多 Agent 框架容易把 context 和 memory 混在一起,但 OpenClaw 分得很清楚。
4.1 Context 是当前模型窗口里的内容
每次模型真正看到的上下文,主要包含:
- system prompt
- 当前会话历史
- 工具调用和工具结果
- 附件内容(文件、图片、音频等)
这部分受模型 token window 限制。
4.2 Memory 是磁盘上的 Markdown 文件
OpenClaw 的长期记忆并不神秘,默认就是工作区里的 Markdown:
memory/YYYY-MM-DD.md:日记式追加记录MEMORY.md:长期稳定记忆
也就是说,它不是把“记忆”完全托管给向量数据库,而是先把 文件作为真实记忆源。
向量检索只是辅助读取这些文件内容。
这套做法很务实:
- 可读
- 可编辑
- 可备份
- 可审计
- 不依赖黑盒 memory service
更重要的是,它还会在会话接近 compaction 时,触发一次“memory flush”提示,提醒模型把值得长期保留的信息写入 memory 文件,避免随着上下文压缩而遗失。
所以 OpenClaw 的记忆机制可以概括成一句话:
短期靠 context window,长期靠文件落盘,检索靠 memory tools。
5. 多 Agent、本地设备、沙箱执行:它为什么像“操作系统”
OpenClaw 真正拉开差距的地方,是它不只会“回答”,而是能统一调度本地和远端能力。
5.1 Multi-Agent 不是多 prompt,而是多隔离运行单元
在 OpenClaw 里,一个 agent 不是简单的“角色切换”,而是完整隔离的执行单元,拥有自己的:
- workspace
- agentDir
- auth profiles
- session store
- skills
也就是说,多 agent 的本质是 多脑并存、状态隔离、路由绑定。
不同渠道、不同联系人、不同群组,都可以绑定到不同 agent。
这比传统“单 Bot 多人格”更接近真正的多租户执行架构。
5.2 Tools 是一等公民,不靠 shell hack
OpenClaw 把工具系统做成了 typed tools,而不是主要依赖 prompt 里教模型如何拼 shell 命令。
内建工具包括:
- 文件读写和补丁
- exec / process
- browser
- canvas
- nodes
- image / pdf
- message
- cron
- sessions 系列工具
- memory 系列工具
这意味着模型看到的是结构化能力集合,而不是零散脚本说明。
这样做的收益是:
- 更容易做权限控制
- 更容易做参数校验
- 更容易做 provider 兼容
- 更容易做工具事件流和审计
5.3 节点(nodes)把手机和电脑也纳入执行平面
除了 Gateway 主机本身,OpenClaw 还支持 macOS / iOS / Android / headless node 作为节点接入。
节点通过 WebSocket 声明自己的能力,比如:
canvas.*camera.*screen.recordlocation.getsystem.runsystem.notify
所以从架构视角看,OpenClaw 并不是“一个 Bot 控制一台机器”,而是:
一个 Gateway 统一调度多个消息入口、多个执行环境和多个设备能力。
5.4 安全模型是“主会话放开,其他会话沙箱化”
OpenClaw 的默认安全策略也很有代表性:
- 主会话可以直接跑宿主机工具
- 非主会话建议进入 Docker sandbox
- 工具支持 allow / deny / profile / provider-specific policy
- 消息入口默认有 pairing / allowlist 等控制策略
这说明它的设计目标并不是绝对封闭,而是:
在“个人本地助手”的可用性和“多渠道输入”的安全性之间做工程化平衡。
一句话总结它的底层原理
如果要我用一句话概括 OpenClaw 的底层实现:
OpenClaw 本质上是一个以 Gateway 为核心、以 Agent Loop 为执行主线、以 Workspace/Skills/Memory 为上下文塑形机制、以 Typed Tools 和 Device Nodes 为行动能力边界的本地优先 AI Agent 平台。
它不是把大模型“接到聊天软件上”这么简单。
它真正做的是把下面这些东西统一起来:
- 多渠道消息接入
- 会话与状态管理
- Prompt 动态装配
- 工具执行与权限控制
- 设备节点协同
- 记忆持久化
- 多 Agent 路由隔离
- 流式事件回传
所以你可以把它理解为:
“LLM + 消息总线 + 本地工具系统 + 设备控制层 + 会话状态机”的组合体。
结论
OpenClaw 的底层设计思路很清晰:
不是把 AI 做成一个网页聊天框,而是把 AI 做成一个长期在线、可连接渠道、可调度设备、可持久记忆、可安全执行的本地 Agent Runtime。
这也是为什么它看起来像聊天助手,但骨子里更像一个轻量级 AI 操作系统。
参考资料
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)