1. 这个项目是做什么的
OpenClaw 是一个运行在你自己设备上的个人 AI 助手平台。
它不是只提供一个网页聊天框,而是把以下几层组合到一起:
- 多消息渠道接入:WhatsApp、Telegram、Slack、Discord、Signal、iMessage、Matrix、Feishu、LINE、Mattermost、Nostr、Twitch、Zalo 等。
- 多模型供应商接入:OpenAI、Anthropic、Google、OpenRouter、Ollama、vLLM、Bedrock、Mistral、Moonshot、Qwen 等。
- 多终端节点:macOS、iOS、Android、WebChat、Control UI、CLI。
- 多工具能力:浏览器控制、Canvas、Cron、Memory、语音、设备能力、消息动作、Web 搜索、媒体理解等。
- 插件式扩展:绝大部分渠道、供应商和工具都被做成了 bundled plugin。
一句话说,它是在做一个"以 Gateway 为控制平面、可以跨渠道收发、可调用工具、可接多模型、可连接设备节点"的个人 AI 操作系统。
2. 它起什么作用
2.1 对终端用户的作用
- 让一个 AI 助手出现在你已经在用的消息渠道里,而不是强迫你切换到新的聊天入口。
- 让 AI 具有"长期在线"的存在感,可以在后台作为服务运行。
- 让 AI 的能力不止是回答文本,还能调浏览器、读写会话、调用节点设备能力、执行自动化任务。
- 让 AI 能在不同模型供应商间切换、回退、做鉴权管理。
2.2 对系统架构的作用
- Gateway 统一控制连接、状态、事件、配置、设备、Web UI。
- Session 统一管理会话隔离、上下文复用、转录与压缩。
- Plugin 系统统一抽象"渠道插件""供应商插件""能力插件""工具/服务插件"。
- Protocol 统一控制 CLI、Web UI、移动节点、macOS app 和 Gateway 之间的通讯格式。
2.3 对开发者的作用
- 允许用插件方式新增渠道或模型供应商,而不是把逻辑硬编码在 core。
- 提供
openclaw/plugin-sdk/*作为公共扩展契约。 - 允许 bundled plugin 和第三方插件共享同一套加载与注册机制。
3. 核心产品定位
从 README.md、docs/concepts/architecture.md 和代码结构来看,OpenClaw 的定位非常明确:
- 它是 personal AI assistant,不是团队协作 SaaS。
- 它强调 local-first / self-hosted / run on your own devices。
- Gateway 是 control plane,不是最终产品本身。
- 真正的"产品"是 Agent + Session + Channel + Tool + Device 的整套运行时。
这决定了它和普通 AI Web 应用的差异:
| 维度 | 普通 AI Web 应用 | OpenClaw |
|---|---|---|
| 入口 | 单一网页 | CLI、Web UI、WebChat、移动端、消息渠道 |
| 会话边界 | 浏览器 tab | session / agent / channel / account / peer |
| 模型接入 | 少量供应商 | 大量 provider plugin |
| 外部能力 | 少 | 浏览器、节点、Cron、语音、Canvas、Memory |
| 部署方式 | 云端优先 | 本地优先、守护进程优先 |
| 扩展方式 | 内置功能 | plugin-first |
4. 架构怎么理解
可以把它看成五层:
-
接入层
渠道插件和客户端入口,例如 Telegram、Discord、WebChat、CLI、Control UI、移动节点。
-
控制平面
Gateway 通过 WebSocket/HTTP 暴露统一接口,负责状态、事件、连接、配置、鉴权、节点与会话管理。
-
执行层
Agent 运行时负责上下文装配、模型调用、工具执行、流式输出、失败回退、持久化。
-
能力层
插件、工具、Memory、浏览器控制、媒体理解、语音、任务调度、消息动作。
-
数据与策略层
Config、Secrets、Session、Security、Routing、Pairing、Allowlist、Protocol Schema。
一个典型消息路径大致是:
某消息渠道 -> channel plugin -> Gateway -> session 路由 -> agent loop -> model/tool -> reply dispatch -> channel plugin -> 用户
5. 它是怎么用的
5.1 作为最终用户
最推荐的入口是:
bash
npm install -g openclaw@latest
openclaw onboard --install-daemon
然后常用命令包括:
bash
openclaw gateway run
openclaw agent --message "Ship checklist"
openclaw message send --to +1234567890 --message "Hello"
openclaw doctor
openclaw status
其中:
onboard负责引导配置 Gateway、workspace、skills、provider auth、channels。gateway run负责启动控制平面服务。agent负责直接触发一次 Agent 执行。message send负责把消息投递到某个渠道对象。doctor负责巡检、迁移、修复配置和运行时问题。
5.2 作为开发者
从源码运行的基本路径是:
bash
pnpm install
pnpm ui:build
pnpm build
pnpm openclaw onboard --install-daemon
pnpm gateway:watch
常见开发命令:
pnpm checkpnpm testpnpm buildpnpm ui:buildpnpm openclaw ...
5.3 运行时要求
- README 推荐:Node 24,或 Node 22.16+
openclaw.mjs实际启动保护:Node 22.12+- 工具链:
pnpm为主,Bun 用于很多 TS 脚本执行
说明:
- 官方推荐版本和代码最低保护版本略有差异。
- 实际生产使用时应遵循 README 的较高建议值,而不是仅满足 wrapper 的最低门槛。
6. 这个项目的强项
6.1 边界感非常强
这是 OpenClaw 最明显的工程优点。
src/plugin-sdk明确是公共扩展契约。src/plugins明确负责发现、清单、加载、注册。src/channels明确是 core 频道实现而不是插件公开 API。src/gateway/protocol明确是协议边界。
这种分层使得项目虽然大,但不是彻底失控的"大仓库"。
6.2 插件化程度高
extensions/ 里当前有 97 个 bundled plugins:
- 43 个 provider 插件
- 23 个 channel 插件
- 13 个 capability-only 插件
- 18 个 tooling/service 插件
这说明"能力扩展"不是口号,而是这个项目的真实核心设计。
6.3 不是只做文本聊天
项目里明显存在多模态和设备控制特征:
- 语音与实时语音
- 图像/视频/音乐生成
- 媒体理解
- 浏览器控制
- 移动节点能力
- Canvas / A2UI
- Memory
- Background tasks / cron
这让它更像 AI runtime platform,而不是普通 chat wrapper。
6.4 运维意识强
从目录和脚本可以看出:
- 有完整的
doctor与迁移逻辑 - 有大量 e2e / docker / live / smoke 测试
- 有 release、plugin release、docs publish、macOS/iOS/Android 构建流程
- 有 pairing、安全审计、secret surface 约束
7. 复杂度主要来自哪里
OpenClaw 的难点不在单个算法,而在"异构系统整合":
- 渠道非常多
- provider 非常多
- UI 入口非常多
- 平台目标非常多
- 配置面非常宽
- 兼容与迁移要求很高
这导致仓库自然会呈现出:
- 大量边界文件
- 大量测试矩阵
- 大量配置 schema 与 metadata
- 大量启动时的懒加载 / 热路径优化逻辑
也就是说,它复杂是"产品域复杂",不只是"代码写复杂了"。
8. 当前看到的主要风险
8.1 维护成本高
仓库规模很大:
src/约 6231 个文件extensions/约 4162 个文件docs/约 505 个文件scripts/约 335 个文件- 根目录下
vitest*.ts|mjs达 105 个
这对新贡献者的理解成本非常高。
8.2 核心热点文件偏大
非测试、非生成文件里的几个热点:
src/plugins/types.ts2940 行src/agents/pi-embedded-runner/run/attempt.ts2296 行src/acp/control-plane/manager.core.ts2129 行src/plugins/loader.ts2054 行src/gateway/server-methods/chat.ts1931 行src/tasks/task-registry.ts1865 行src/gateway/server.impl.ts1680 行
这类文件通常不是 bug 的直接来源,但会逐步拖慢重构速度和问题定位速度。
8.3 配置与测试矩阵很重
- 配置 schema 和 channel metadata 有超大 generated 文件。
- 测试配置按域切得很细,灵活但也增加了维护和认知成本。
9. 适合什么人使用
这个项目最适合:
- 想把 AI 助手接到真实消息渠道的人
- 想在自己机器或家庭/个人服务器上跑 AI runtime 的人
- 需要多模型、多设备、多工具协同的人
- 想在 AI 助手里加入插件、设备、自动化能力的开发者
不太适合:
- 只想快速做一个简单 Web 聊天页的人
- 不愿意维护本地服务、密钥、守护进程、渠道配置的人
10. 总结判断
OpenClaw 是一个"高野心、高复杂度、但边界设计很成熟"的工程。
如果把它看成:
- 单纯机器人项目:会觉得它过于庞大
- 个人 AI 操作平台:就会发现它的大部分复杂度都是有来源的
我的判断是:
- 方向成立
- 架构主干成立
- 插件化和控制平面思路成立
- 优化重点应放在维护性、可发现性、配置/测试治理、热点模块拆分
而不是去推翻现有的 plugin-first 和 gateway-first 设计。