OpenClaw 是什么
一句话:OpenClaw 是一个运行在自己设备上的个人 AI 助手网关,把同一个 agent runtime 接上你已经在使用的所有通讯渠道,让模型不只是聊天,而是能持续完成真实任务。
它不是一个 SaaS 产品,而是一个自托管的 gateway + agent runtime + 插件生态。Gateway 是控制面,Agent 是执行面,Channel 是入口面。三者共享同一个核心,但通过清晰的边界解耦。
Note
如果说 Harness Engineering 是”把模型放进工程外壳”的范式,OpenClaw 就是当前开源世界里最完整的 Harness Engineering 实践之一。
一句话定位
OpenClaw 的前身是 Warelay -> Clawdbot -> Moltbot -> OpenClaw,从”个人实验场”演化为”多通道 AI 网关”,最终收敛为”个人 AI 助手”。
它解决的问题不是”哪个模型更强”,而是**“模型接在什么系统上、通过什么渠道、以什么权限、在什么环境里做事”**。
总体架构
flowchart TD A["入口渠道\nWhatsApp/Telegram/Slack/Discord/Signal/..."] --> B["Gateway Daemon\nws://127.0.0.1:18789"] B --> C["Agent Harness\nrunAttempt / compact / reset"] C --> D["PI Embedded Runner\nagent loop + tools"] D --> E["Provider Layer\nOpenAI/Anthropic/Google/..."] D --> F["Tool Runtime\nbash/mcp/skills/browser/..."] C --> G["Plugin Registry\nchannel/provider/tool"] B --> H["Control Clients\nCLI/macOS App/Web UI"] B --> I["Nodes\nmacOS/iOS/Android/headless"] B --> J["Canvas Host\nHTML/CSS/JS/A2UI"]
核心组件拆解
1. Gateway Daemon
Gateway 是一个长期运行的守护进程,是整个系统的控制面。
- 统一入口:所有通讯渠道的消息都先到达 Gateway,由 Gateway 归一化后交给 agent。
- WebSocket API:客户端(CLI、macOS App、Web UI、自动化脚本)通过 WS 连接到 Gateway,发送请求、订阅事件。
- Node 连接:macOS/iOS/Android/headless 节点也通过 WS 连接,声明
role: node并提供设备能力(camera、canvas、screen、location)。 - Typed Protocol:请求/响应/事件都有 JSON Schema 验证,
connect帧是第一个必需帧,支持幂等键重试。 - Canvas 服务:Gateway 同时提供 HTTP 服务,托管可编辑的 HTML/CSS/JS Canvas 和 A2UI。
- 一对一映射:一台主机一个 Gateway,WhatsApp session 只在这里打开。
2. Agent Harness
OpenClaw 的 agent harness 是插件化注册的,通过 AgentHarness 接口定义:
type AgentHarness = {
id: string;
label: string;
pluginId?: string;
supports(ctx: AgentHarnessSupportContext): AgentHarnessSupport;
runAttempt(params: AgentHarnessAttemptParams): Promise<AgentHarnessAttemptResult>;
compact?(params: AgentHarnessCompactParams): Promise<AgentHarnessCompactResult>;
reset?(params: AgentHarnessResetParams): Promise<void>;
dispose?(): Promise<void>;
};关键设计:
- Registry 模式:harness 通过
registerAgentHarness()注册到全局 registry,运行时通过selectAgentHarness()选择最合适的 harness。 - Plugin 可扩展:第三方插件可以注册自己的 harness,通过
supports()声明对 provider/model 的支持度。 - PI 内置 fallback:内置的 “PI embedded agent” 是默认 fallback harness,执行完整的 agent loop。
- 运行时策略:支持
runtime: "auto" | "pi" | "<plugin-id>",以及 fallback 策略。
3. PI Embedded Runner(内置 Agent Loop)
这是 OpenClaw 的核心 agent loop,承担:
- 构造上下文:系统提示、项目上下文、会话历史、工具 schema。
- 调用模型:通过 provider transport 调用 LLM。
- 执行工具调用:解析 tool call,执行工具,返回结果。
- 循环直到完成:直到得到最终回答或达到预算。
- 上下文压缩:当上下文超限时触发 compaction,保留关键信息。
- 会话持久化:消息历史写入磁盘,支持跨会话恢复。
- 中断与恢复:支持
/stop、后台任务、子 agent 生命周期管理。
4. Plugin System(插件系统)
OpenClaw 的插件系统是架构的核心,定义了三种插件类型:
- Channel Plugin:通讯渠道适配器(WhatsApp、Telegram、Discord、Slack、Signal、iMessage、IRC、Matrix、Feishu、LINE、WeChat、QQ 等 20+ 渠道)。
- Provider Plugin:模型供应商适配器(OpenAI、Anthropic、Google、xAI、Mistral、Groq、Ollama、vLLM、OpenRouter 等 30+ 供应商)。
- Tool Plugin:工具能力扩展(browser、coding-agent、memory、image-generation、music-generation、video-generation、speech 等)。
边界规则(从 AGENTS.md 提炼):
- Core 不感知 Extension:核心代码不能硬编码特定扩展的 ID 或行为。
- Plugin SDK 是唯一公共合约:扩展只能 import
openclaw/plugin-sdk/*,不能 import 核心内部。 - Manifest-first:插件的发现、验证、配置、激活都由 manifest 元数据驱动。
- 延迟加载:冷启动路径不加载插件运行时,只在需要时才激活。
5. Tool Runtime(工具运行时)
OpenClaw 给模型暴露的工具包括:
- Bash/Shell:执行命令,支持前台/后台/PTY 模式,有审批流。
- 文件读写:读取、写入、编辑文件。
- MCP 工具:接入 Model Context Protocol 服务器。
- Skills:可复用的工作流注入(60+ 内置 skills)。
- 浏览器:自动化网页交互。
- 子 Agent:
sessions/spawn可以创建子 agent 执行独立任务。 - Canvas 操作:生成和编辑 HTML/CSS/JS。
- 媒体理解:图像、视频、音频分析。
工具系统的关键设计:
- 每个工具有 schema、description、policy。
- 工具按 toolset 分组,按场景动态启用。
- 危险命令需要审批(CLI 和 Gateway 都能处理)。
- 工具结果结构化,模型能理解。
6. Session & Memory
- Session 持久化:每个会话有独立的 transcript 文件,包含完整消息历史。
- 上下文压缩:支持 summarization 和 token 级别的清理。
- Memory 插件:内置 memory-core、memory-lancedb、memory-wiki 等插件,支持长期记忆。
- Profile 隔离:每个 profile 有独立的 config、API keys、sessions。
- Auth Profile 轮换:支持多 API key 轮换和 last-good 策略。
7. Multi-Platform Adapter(平台适配)
OpenClaw 支持 20+ 通讯渠道:
- 核心渠道:WhatsApp、Telegram、Slack、Discord、Signal、iMessage
- 企业渠道:Microsoft Teams、Matrix、Google Chat、Feishu、LINE、Mattermost
- 社区渠道:IRC、Nostr、Nextcloud Talk、Synology Chat、Tlon、Twitch
- 中文渠道:WeChat、QQ、Feishu
- 自有渠道:WebChat(Web UI)
所有渠道的消息都归一化为内部 MessageEvent,然后交给同一个 agent runtime 处理。
关键技术选择
- TypeScript (ESM):整个项目用 TypeScript 编写,严格类型。
- Node.js 22+:运行时要求 Node 22+(推荐 Node 24)。
- WebSocket 协议:Gateway 和客户端之间使用自定义的 typed WS 协议。
- Bun for Dev:开发时用 Bun 执行 TypeScript,生产用 Node。
- Vitest:测试框架。
- Oxlint + Oxfmt:代码检查与格式化。
- Zod:外部边界的数据验证(config、API 响应、CLI 输出)。
- Monorepo:
src/核心 +extensions/插件 +apps/客户端 +ui/前端。
开源治理
OpenClaw 的 AGENTS.md 是仓库的工程宪法,定义了:
- 架构边界:core、plugin、channel、provider 的清晰划分。
- 代码规范:不使用
any,使用Result<T, E>,使用 discriminated unions。 - 测试策略:测试与代码 colocate,测试不能 deep-import 插件内部。
- Prompt Cache 稳定性:请求组装必须确定性排序,缓存前缀不能每次变化。
- CI Gate:
pnpm check是本地开发 gate,pnpm test是 landing gate。 - PR 规则:一个 PR = 一个 issue,超过 5000 行只在大例外情况下审查。
和 Hermes Agent 的对比
| 维度 | Hermes Agent | OpenClaw |
|---|---|---|
| 定位 | CLI AI Agent | 个人 AI 助手(多通道网关) |
| 入口 | CLI + Gateway + Cron | CLI + Gateway + 20+ 渠道 + macOS/iOS/Android |
| 运行时 | Python | TypeScript/Node.js |
| Agent Loop | run_agent.py AIAgent | PI Embedded Runner |
| Harness | 内置固定 | 插件化注册(AgentHarness 接口) |
| 渠道 | Telegram/Discord/Slack/… | WhatsApp/Telegram/Slack/Discord/… (20+) |
| 插件系统 | General/Memory/Context/Gateway hooks | Channel/Provider/Tool 三类 |
| Provider | OpenAI-compatible/Anthropic/Codex | 30+ 供应商 |
| 记忆 | SQLite + 自定义 memory | Memory plugins (core/lancedb/wiki) |
| 子 Agent | delegate_task | sessions/spawn |
| 前端 | TUI + Web | TUI + Web UI + macOS/iOS/Android App |
| 开源协议 | — | MIT |
| Sponsors | — | OpenAI, GitHub, NVIDIA, Vercel |
关键工程洞察
1. Gateway 是控制面,Agent 是执行面
OpenClaw 把”消息路由”和”任务执行”解耦。Gateway 负责接收消息、归一化、授权、路由;Agent 负责理解、规划、执行工具、返回结果。这意味着同一个 agent 可以被任何渠道触发。
2. Plugin SDK 是核心扩展面
OpenClaw 的 openclaw/plugin-sdk/* 是唯一的公共合约。第三方插件通过 SDK 接入,而不是直接 import 核心代码。这是 Harness Engineering 中 “extensibility” 的教科书级实现。
3. Prompt Cache 被当作工程问题
OpenClaw 明确要求:请求组装必须确定性排序;缓存前缀不能每次变化;截断优先修改最新的消息。这是因为 prompt caching 直接影响成本和延迟。
4. 多 Profile 隔离
每个 profile 有独立的配置、API keys、sessions、skills、gateway 状态。这允许同一台机器上跑多个独立实例,互不干扰。
5. 安全默认值
危险命令需要审批;token 锁定防止多个 profile 使用同一个 bot token;私有入口禁用认证时必须在受信网络内。
一句话总结
OpenClaw 不是在”哪个模型更好”上竞争,而是在**“模型能接在什么系统上、通过什么渠道做事”**上构建护城河。它是一个完整的 Harness Engineering 实现,把模型、工具、渠道、权限、状态、恢复都封装在一个可自托管的系统中。