OpenClaw 架构总览
源码版本v2026.6.11
一句话
OpenClaw 是一个常驻 gateway + 多渠道接入 + agent 主循环的个人 AI 助手:gateway 收消息 → 喂给 agent → agent 反复调模型和工具 → 结果经 gateway 投递回各渠道。所有能力(工具/技能/插件/provider/MCP/渠道)都是可插拔的注册表。
分层
每层一句话
- 启动与入口:
openclaw.mjs做 Node 版本检查,转发到src/entry.ts,再由src/cli/run-main.ts分发子命令。 - 网关层:
startGatewayServer是常驻进程,通过 RPC 方法表接收请求,把 agent 事件广播到 WebSocket 客户端。 - Agent 主循环:
embedded-agent-runner的while(true)驱动每轮对话,单轮 attempt 完成 LLM 调用和 tool_use/tool_result 配对。 - 能力层:工具是 Map 注册,技能是指引模型读 SKILL.md,插件按目录约定发现,provider 按厂商分流,MCP 双向桥接。
- 渠道层:22 个渠道(WhatsApp/Telegram/Slack...)通过 registry + loader + plugin 注册接入,网关统一调度。
- 配置系统:
openclaw.json是唯一配置入口,Zod schema 做运行时校验。 - 记忆与上下文:Context Engine 抽象压缩契约,记忆文件存 workspace 根。
- 调度与扩展:Cron 在隔离 agent session 跑 job,Tasks 用 SQLite 持久化,ACP 桥接 IDE。
- 部署:gateway 是常驻进程,daemon 把它装成系统服务,或用 Docker/Fly 跑。
分层动机
为什么这么分?OpenClaw 把「消息从哪来」(渠道)、「怎么处理」(agent 循环)、「用什么能力」(工具/技能/插件/provider)、「怎么持久」(配置/记忆/调度)、「怎么跑起来」(部署)完全解耦。这样换渠道不影响 agent 逻辑,换模型不影响工具,加插件不用改核心。gateway 是唯一的中枢,所有跨层协调都过它。
常见误读
- 「OpenClaw 是个聊天 bot」——不全是。bot 只是渠道层的一个面,gateway 才是产品核心,agent 循环是大脑。
- 「工具和技能是一回事」——不是。工具是可调用的函数,技能是 Markdown 指引让模型自己决定何时读、读了做什么。
- 「MCP 只是 client」——OpenClaw 同时是 MCP server(把自身能力暴露给外部)和 client(消费外部 MCP server)。
推荐阅读顺序
先看 启动与入口,再看 网关核心 和 Agent 主循环,然后按 能力层 → 渠道层 → 配置系统 → 记忆 → 调度 → 部署 的顺序往下。
对照官方资料:OpenClaw 官网 · 官方文档 · DeepWiki。