OpenClaw 深度解析:重塑个人 AI 助手范式的开源架构革命
从"会聊天"到"能做事"——OpenClaw 如何用本地优先 + 模型无关 + 全通道覆盖三位一体,重新定义 AI 助手的技术边界。
一、背景:AI 助手的"最后一公里"困局
2026 年的 AI 助手版图,表面上已经足够繁荣。
ChatGPT、Claude、Gemini 可以和你聊任何话题;Cursor、Claude Code、GitHub Copilot 可以帮你写代码;Dify、Coze 可以搭建工作流。但当你真正想让 AI 持续地、 autonomously 地 帮你做事——而非每次都手动打开一个网页或 IDE——你会发现一个巨大的断层:
这些 AI 都活在它们自己的界面里。
它们无法直接访问你的 WhatsApp、你的 Telegram 群组、你的 Discord 服务器、你的本地文件系统、你的日历、你的邮件。每次交互都要你主动触发,每次上下文都从零开始。它们本质上是"被调用的函数",而不是"驻留的助手"。
OpenClaw 的出现,正是为了填平这个断层。
二、OpenClaw 是什么:架构全景与核心设计哲学
2.1 一句话定义
OpenClaw 是一个运行在你自己设备上的个人 AI 助手框架,通过 Gateway 控制面统一接入任意消息通道,驱动一个具备 Skill 扩展能力、长期记忆、自主执行能力的 AI Agent。
┌─────────────────────────────────────────────────────────┐
│ OpenClaw Gateway │
│ (控制面:消息路由 | 会话管理 | 模型调度 | 工具编排) │
├──────────┬──────────┬──────────┬──────────┬─────────────┤
│ WhatsApp │ Telegram │ Discord │ Slack │ ... 20+ │
└──────────┴──────────┴──────────┴──────────┴─────────────┘
│ │
▼ ▼
┌──────────────────────────┐
│ AI Agent 实例 │
│ ┌─────────────────────┐ │
│ │ Skill 生态 │ │
│ │ (pdf/docx/xlsx/ │ │
│ │ browser/email/ │ │
│ │ github/...) │ │
│ └─────────────────────┘ │
│ ┌─────────────────────┐ │
│ │ 记忆系统 │ │
│ │ (短期/长期/语义) │ │
│ └─────────────────────┘ │
└──────────────────────────┘
2.2 四大设计原则
| 原则 | 具体体现 | 与竞品差异 |
|---|---|---|
| 本地优先 | Gateway 运行在本地,数据不经过第三方云服务 | Claude Code 依赖 Anthropic 云端;OpenClaw 模型无关 |
| 模型无关 | 支持 OpenAI / Anthropic / Gemini / 本地 OAI模型 等任意 provider | Cursor 绑定特定模型;OpenClaw 可热切换 |
| 通道无关 | 统一抽象层,20+ 消息通道即插即用 | 每个通道单独开发成本高;OpenClaw 一次开发全通道覆盖 |
| 工具可扩展 | Skill 系统 = AI 的"App Store",Markdown 定义,零代码扩展 | LangChain Tools 需要写代码;OpenClaw Skill 是提示词 + 脚本 |
三、Gateway 架构深度拆解
3.1 Gateway 是什么
Gateway 是 OpenClaw 的控制面(Control Plane),承担以下核心职责:
- 消息路由:接收来自各通道的消息,路由到对应的 Agent 会话
- 会话管理:维护 per-peer / per-channel / per-agent 的会话隔离
- 模型调度:primary + fallbacks 模型路由,auth profile 轮询
- 工具编排:加载 Skill,构建 system prompt,注入工具描述
- 事件分发:heartbeat、cron、webhook、节点事件统一调度
- 安全管控:DM 策略、配对机制、工具沙箱
Gateway 以 Node.js (TypeScript) 常驻进程 运行,通过 openclaw onboard --install-daemon 安装为 launchd (macOS) / systemd (Linux) 用户服务,实现开机自启。
3.2 WebSocket 协议:实时双向通信的核心
Gateway 与所有通道适配器、节点应用、控制 UI 之间,均通过 WebSocket 长连接 通信。协议设计要点:
// Gateway WebSocket 握手时序
// 1. 客户端发起 WebSocket 升级请求
// GET /ws HTTP/1.1
// Upgrade: websocket
// Sec-WebSocket-Key: ...
// 2. Gateway 验证 auth token (Authorization header 或 query param)
// 握手超时默认 15s,可通过 gateway.handshakeTimeoutMs 调整
// 3. 连接建立后,双向异步消息传递
// 消息格式:JSON-RPC 2.0 风格
interface GatewayMessage {
id: string; // 消息唯一 ID
method: string; // 如 "message.send", "agent.turn"
params: unknown; // 方法参数
auth?: { // 认证信息
token?: string;
sessionKey?: string;
};
}
为什么用 WebSocket 而不是 HTTP Polling?
- 即时性:heartbeat、cron 触发、节点事件需要服务端主动推送
- 效率:避免频繁建立 TCP 连接的开销
- 状态性:会话上下文在连接期间可保持热状态
3.3 配置系统:JSON5 + Schema 严格校验
OpenClaw 的配置文件 ~/.openclaw/openclaw.json 使用 JSON5 格式(支持注释、尾逗号),并通过 JSON Schema 严格校验——未知字段、类型错误会导致 Gateway 拒绝启动。
// ~/.openclaw/openclaw.json
{
// Gateway 监听配置
gateway: {
port: 18789, // 控制面端口
host: "127.0.0.1", // 绑定地址(生产环境勿暴露 0.0.0.0)
handshakeTimeoutMs: 15000, // WebSocket 握手超时
channelHealthCheckMinutes: 5, // 通道健康检查周期
channelStaleEventThresholdMinutes: 30,
channelMaxRestartsPerHour: 10,
},
// Agent 默认配置
agents: {
defaults: {
model: {
primary: "anthropic/claude-sonnet-4-20250514",
fallbacks: ["openai/gpt-4o", "google/gemini-2.0-flash"],
},
workspace: "~/.openclaw/workspace",
thinking: "adaptive", // off | low | medium | high | adaptive
heartbeat: {
every: "30m", // 心跳周期,0m 禁用
target: "last", // 发送到最后一个活跃通道
},
sandbox: {
mode: "non-main", // off | non-main | all
scope: "agent",
},
},
list: [
{
id: "main",
workspace: "~/.openclaw/workspace-agent-main",
groupChat: {
mentionPatterns: ["@claw", "claw"],
},
},
],
},
// 通道配置(以 Telegram 为例)
channels: {
telegram: {
enabled: true,
botToken: "123456:ABC-DEF...",
dmPolicy: "pairing", // pairing | allowlist | open | disabled
allowFrom: ["tg:123456789"],
groups: {
"*": { requireMention: true },
},
},
whatsapp: {
enabled: true,
dmPolicy: "pairing",
},
discord: {
enabled: true,
botToken: "...",
dmPolicy: "pairing",
channels: {
"*": { requireMention: true },
},
},
},
// Cron 任务
cron: {
enabled: true,
maxConcurrentRuns: 8,
sessionRetention: "24h",
},
// Webhook 接入
hooks: {
enabled: true,
token: "your-webhook-secret",
path: "/hooks",
mappings: [
{
match: { path: "github" },
action: "agent",
agentId: "main",
deliver: true,
},
],
},
}
严格校验的意义:防止配置错误导致运行时异常。生产环境中,配置错误是最常见的故障源之一。OpenClaw 的 fail-fast 策略(无法启动好过启动后行为异常)是值得借鉴的工程实践。
四、多通道架构:一次开发,全平台覆盖
4.1 通道适配器的统一抽象
OpenClaw 定义了统一的 Channel Adapter 接口,每个消息平台实现这个接口,Gateway 通过依赖注入加载启用的通道。
// 通道适配器核心接口(概念性)
interface ChannelAdapter {
// 通道唯一标识
readonly provider: string; // "telegram" | "discord" | "whatsapp" | ...
// 初始化:建立连接,启动消息监听
init(config: ChannelConfig): Promise<void>;
// 发送消息
send(target: string, message: OutboundMessage): Promise<SendResult>;
// 下载媒体文件(图片/视频/文档)
fetchMedia(mediaId: string): Promise<Buffer>;
// 健康状态检查
healthCheck(): Promise<HealthStatus>;
// 关闭连接
close(): Promise<void>;
}
// 入站消息的统一格式
interface InboundMessage {
channel: string; // 来源通道
peer: string; // 发送者唯一标识(如 "tg:123456")
content: string; // 消息文本
media?: MediaAttachment[]; // 媒体附件
replyTo?: string; // 回复消息 ID
group?: string; // 群组 ID(如适用)
timestamp: number; // 时间戳
}
4.2 DM 策略:安全的第一道防线
所有通道共享同一套 DM(Direct Message)访问控制策略,这是 OpenClaw 安全模型的核心:
type DMPolicy = "pairing" | "allowlist" | "open" | "disabled";
// pairing(默认,推荐)
// - 未知发送者的消息触发配对码流程
// - 所有者通过 `openclaw pairing approve <code>` 批准
// - 批准后,发送者加入本地 allowlist
// - 适合个人助手场景
// allowlist
// - 只有 allowFrom 列表中的发送者被接受
// - 适合团队内部使用
// open
// - 接受所有入站 DM(需要显式设置 allowFrom: ["*"])
// - 仅适合公开机器人场景
// disabled
// - 忽略所有 DM
// - 适合只响应群组的场景
配对流程的时序:
陌生人 Gateway 所有者
│ │ │
│ "Hi Claw!" │ │
│───────────────────▶│ │
│ │ 生成配对码: X7K9M │
│ "配对码: X7K9M │ │
│ 请等待批准" │ │
│◀────────────────────│ │
│ │ │
│ │ openclaw │
│ │ pairing approve │
│ │ X7K9M │
│ │────────────────────▶│
│ │ │
│ "已批准,可以 │ │
│ 开始对话" │ │
│◀────────────────────│ │
│ │ │
4.3 已支持通道全景(2026 年 6 月)
| 通道 | 状态 | 特殊能力 |
|---|---|---|
| ✅ 稳定 | 端到端加密(部分),语音消息 | |
| Telegram | ✅ 稳定 | Bot API,Inline 按钮,支付 |
| Discord | ✅ 稳定 | slash commands,thread 绑定会话 |
| Slack | ✅ 稳定 | Socket Mode,企业工作流 |
| Signal | ✅ 稳定 | 隐私优先,E2E 加密 |
| iMessage | ✅ 稳定 | macOS 专属,神经引擎语音 |
| Google Chat | ✅ 稳定 | 企业版 Google Workspace |
| Microsoft Teams | ✅ 稳定 | 企业场景 |
| IRC | ✅ 稳定 | 经典协议,自托管友好 |
| Feishu (飞书) | ✅ 稳定 | 国内企业协作 |
| WeChat (微信) | ✅ 稳定 | 国内最大 IM(通过特殊协议) |
| ✅ 稳定 | 国内 | |
| Matrix | ✅ 稳定 | 去中心化,E2E 加密 |
| LINE | ✅ 稳定 | 日本 / 东南亚 |
| Mattermost | ✅ 稳定 | 自托管 Slack 替代品 |
| Twitch | ✅ 稳定 | 直播聊天 |
| Nostr | ✅ 稳定 | 去中心化社交协议 |
| 总计 | 20+ |
五、Skill 系统:AI 的"App Store"
如果说 OpenClaw 是操作系统,Skill 就是应用程序。这是 OpenClaw 最具创新性的设计之一。
5.1 Skill 的本质
一个 Skill 是一个目录,核心文件是 SKILL.md——一个带 YAML frontmatter 的 Markdown 文件。
---
name: pdf
description: 读取、合并、拆分、加水印 PDF 文件。当用户需要处理 PDF 时使用此技能。
metadata: {"openclaw": {"requires": {"bins": ["python3"], "env": ["PYTHONPATH"]}, "install": [{"kind": "uv", "package": "pypdf"}]}}
---
# PDF 处理技能
当用户要求处理 PDF 时,使用本技能提供的 Python 脚本。
## 工具清单
### 1. 合并 PDF
\`\`\`bash
python3 {baseDir}/scripts/merge_pdf.py -o output.pdf input1.pdf input2.pdf
\`\`\`
### 2. 拆分 PDF
\`\`\`bash
python3 {baseDir}/scripts/split_pdf.py -p 1,3,5 input.pdf
\`\`\`
## 使用注意
- 中文 PDF 需用 pypdf 而非 PyPDF2(编码问题)
- 加密 PDF 需先调用 qpdf 解密
关键点:
description字段决定 AI 何时自动加载此 Skill(语义匹配){baseDir}是运行时替换的技能目录路径metadata.openclaw.requires定义依赖门控(bin 不存在时自动隐藏)- 技能目录可包含
scripts/(可执行脚本)、assets/(静态资源)、references/(参考文档)
5.2 Skill 加载优先级
优先级(高 → 低)
1. <workspace>/skills/ ← 当前 Agent 工作区技能(最高优先级)
2. <workspace>/.agents/skills/ ← 项目级 Agent 技能
3. ~/.agents/skills/ ← 个人级 Agent 技能(跨项目共享)
4. ~/.openclaw/skills/ ← 管理的技能(ClawHub 安装至此)
5. 内置技能 ← 随 OpenClaw 安装打包
6. skills.load.extraDirs ← 额外目录(插件技能等)
同名覆盖规则:如果 workspace/skills/pdf/SKILL.md 和 ~/.openclaw/skills/pdf/SKILL.md 同时存在,前者胜出。这意味着你可以"覆盖"托管技能的默认行为。
5.3 编写一个自定义 Skill:完整实战
场景:写一个 Skill,让 AI 助手能够查询以太坊钱包余额。
Step 1:创建技能目录
mkdir -p ~/.openclaw/workspace/skills/eth-balance
cd ~/.openclaw/workspace/skills/eth-balance
Step 2:写 SKILL.md
---
name: eth-balance
description: 查询以太坊钱包 ETH 余额。当用户问"钱包余额"、"ETH 多少"、"查一下地址"时使用。
metadata: {"openclaw": {"requires": {"env": ["ETHERSCAN_API_KEY"]}}}
---
# 以太坊余额查询技能
## 使用场景
- 用户问某个地址有多少 ETH
- 用户问自己的钱包余额
- 用户需要监控多个地址
## 工具
### 查询单地址余额
\`\`\`bash
node {baseDir}/scripts/check_balance.js <address>
\`\`\`
示例:
\`\`\`bash
node {baseDir}/scripts/check_balance.js 0x742d35Cc6634C0532925a3b844Bc9e7595f2bD38
\`\`\`
### 查询多地址余额
\`\`\`bash
node {baseDir}/scripts/check_balance.js <addr1> <addr2> <addr3>
\`\`\`
## 输出格式
脚本输出 JSON:
\`\`\`json
{
"address": "0x...",
"eth": 1.2345,
"wei": "1234500000000000000",
"usd": 3086.25
}
\`\`\`
## 注意事项
- API Key 从 ETHERSCAN_API_KEY 环境变量读取
- 免费版 Etherscan API 有 5 req/s 限制
- 主网地址,不包含 checksum 验证(脚本内部处理)
Step 3:写查询脚本 scripts/check_balance.js
#!/usr/bin/env node
import https from 'https';
import fs from 'fs';
const API_KEY = process.env.ETHERSCAN_API_KEY;
if (!API_KEY) {
console.error('Error: ETHERSCAN_API_KEY not set');
process.exit(1);
}
const addresses = process.argv.slice(2);
if (addresses.length === 0) {
console.error('Usage: node check_balance.js <address...>');
process.exit(1);
}
async function fetchBalance(address) {
const url = `https://api.etherscan.io/api?module=account&action=balance&address=${address}&tag=latest&apikey=${API_KEY}`;
return new Promise((resolve, reject) => {
https.get(url, (res) => {
let data = '';
res.on('data', chunk => data += chunk);
res.on('end', () => {
const json = JSON.parse(data);
if (json.status === '1') {
const wei = json.result;
const eth = Number(wei) / 1e18;
resolve({ address, eth, wei, raw: json });
} else {
reject(new Error(json.message));
}
});
}).on('error', reject);
});
}
// 主逻辑
(async () => {
const results = [];
for (const addr of addresses) {
try {
const result = await fetchBalance(addr);
results.push(result);
} catch (err) {
results.push({ address: addr, error: err.message });
}
}
console.log(JSON.stringify(results, null, 2));
})();
Step 4:在 OpenClaw 配置中注入 API Key
// ~/.openclaw/openclaw.json
{
skills: {
entries: {
"eth-balance": {
enabled: true,
env: {
ETHERSCAN_API_KEY: "YOUR_ETHERSCAN_API_KEY",
},
},
},
},
}
Step 5:重启 Gateway 并测试
openclaw gateway restart
openclaw agent --message "查一下 0x742d35Cc6634C0532925a3b844Bc9e7595f2bD38 这个地址有多少 ETH"
5.4 ClawHub:技能生态的"应用商店"
ClawHub 是 OpenClaw 的官方技能注册表,类似 npm、PyPI,但专为 AI Skill 设计。
# 安装官方技能
openclaw skills install @openclaw/pdf
openclaw skills install @openclaw/docx
openclaw skills install @openclaw/xlsx
# 安装社区技能
openclaw skills install @user/weather
# 从 Git 安装
openclaw skills install git:username/my-skill@main
# 本地开发安装
openclaw skills install ./my-local-skill --as my-tool
# 更新所有技能
openclaw skills update --all
# 验证技能完整性(防篡改)
openclaw skills verify @openclaw/pdf
安全机制:
- 所有 ClawHub 技能经过 VirusTotal 扫描
- ClawScan 静态分析(检测恶意提示词注入)
- 信任信封(
clawhub.skill.verify.v1):密码学验证技能发布者身份 security.installPolicy:企业可配置自定义安装审批策略
六、MCP 协议集成:连接外部工具的标准化路径
6.1 MCP(Model Context Protocol)是什么
MCP 是 Anthropic 推出的标准化工具协议,让 AI 模型能够以统一格式调用外部工具,而不需要为每个工具单独写集成代码。
OpenClaw 同时支持两种 MCP 使用方式:
- 作为 MCP 客户端:OpenClaw Agent 调用外部 MCP 服务器提供的工具
- 作为 MCP 服务器:外部 AI 应用通过 MCP 协议调用 OpenClaw 的能力
6.2 配置 MCP 服务器
// ~/.openclaw/openclaw.json
{
tools: {
mcp: {
servers: {
// 文件系统 MCP(官方参考实现)
"filesystem": {
command: "npx",
args: ["-y", "@modelcontextprotocol/server-filesystem", "/allowed/path"],
env: {},
},
// 数据库 MCP
"postgres": {
command: "npx",
args: ["-y", "@modelcontextprotocol/server-postgres", "postgresql://..."],
},
// 自定义 MCP 服务器(Python)
"my-tool": {
command: "python3",
args: ["/path/to/mcp_server.py"],
env: { API_KEY: "..." },
},
},
},
},
}
6.3 MCP 工具在 Skill 中的使用
Skill 可以声明依赖某个 MCP 服务器,OpenClaw 会自动将 MCP 工具注入 Agent 可用工具列表:
---
name: database-query
description: 查询 PostgreSQL 数据库。当用户要求"查数据库"、"SQL查询"时使用。
metadata: {"openclaw": {"requires": {"mcp": ["postgres"]}}}
---
# 数据库查询技能
已配置 postgres MCP 服务器,可用工具:
- `postgres_query`: 执行 SELECT 查询
- `postgres_schema`: 获取表结构
## 示例
用户:"查一下用户表前 10 条"
→ 调用 postgres_query("SELECT * FROM users LIMIT 10")
七、安全模型:本地 AI 的攻击面管理
7.1 威胁模型
运行在本地、有工具调用能力、接入多个消息通道的 AI Agent,攻击面不容小觑:
攻击向量 防御措施
─────────────────────────────────────────────────────────
恶意消息触发危险工具操作 → DM 配对机制 + 工具沙箱
提示词注入(间接) → Skill 隔离 + 输出过滤
Skill 恶意代码 → ClawHub 扫描 + 本地审查
通道凭证泄露 → 配置文件权限 600 + 环境变量
Gateway API 未授权访问 → Token 认证 + 绑定 loopback
SSRF 通过工具调用 → 沙箱网络隔离
7.2 沙箱机制
OpenClaw 支持将 Agent 执行环境隔离到 Docker 容器中:
{
agents: {
defaults: {
sandbox: {
mode: "non-main", // 主会话不沙箱,其他会话沙箱
scope: "agent", // 每个 agent 独立容器
docker: {
image: "openclaw/sandbox:latest",
setupCommand: "apt-get update && apt-get install -y python3 python3-pip",
network: "none", // 禁用网络(如需访问外部 API 则设为 "bridge")
readOnlyRoot: true,
},
},
},
},
}
沙箱构建:
# 从源码构建沙箱镜像
cd ~/.openclaw/openclaw
scripts/sandbox-setup.sh
# 或直接从 Docker Hub 拉取
docker pull openclaw/sandbox:latest
7.3 工具权限控制
{
agents: {
defaults: {
tools: {
// 允许的工具(白名单)
allow: [
"message.send",
"web_search",
"read_file",
"write_file",
],
// 禁止的工具(黑名单,优先于 allow)
deny: [
"exec", // 禁止执行 shell 命令
"filesystem.rm", // 禁止删除文件
],
},
},
},
}
八、会话管理与多 Agent 路由
8.1 会话作用域(dmScope)
OpenClaw 支持多种会话隔离策略:
type DMScope =
| "main" // 所有用户共享一个会话(慎用)
| "per-peer" // 每个用户独立会话
| "per-channel-peer" // 每个通道 × 用户独立会话(推荐)
| "per-account-channel-peer"; // 每个账号 × 通道 × 用户独立会话
推荐配置:per-channel-peer——WhatsApp 上的 Alice 和 Telegram 上的 Alice 是两个独立会话,互不干扰。
8.2 多 Agent 路由
OpenClaw 支持多个 Agent 实例,根据不同规则路由:
{
agents: {
list: [
{
id: "main",
workspace: "~/.openclaw/workspace-agent-main",
// 路由规则:Telegram 的私聊消息路由到 main
route: {
channels: ["telegram"],
peers: ["tg:123456789"],
},
},
{
id: "team",
workspace: "~/.openclaw/workspace-agent-team",
// 路由规则:Discord 服务器消息路由到 team
route: {
channels: ["discord"],
groups: ["discord:1234567890"],
},
skills: ["github", "jira", "slack"], // team agent 有特定技能
},
{
id: "public",
workspace: "~/.openclaw/workspace-agent-public",
// 路由规则:公共 Telegram 群组
route: {
channels: ["telegram"],
groups: ["*"],
},
skills: [], // 公共 agent 无技能(只读)
},
],
},
}
8.3 Thread 绑定会话(Discord 专属)
Discord 的 Thread 可以绑定到一个独立会话,实现"在一个频道内多个并行对话":
用户行为 OpenClaw 行为
──────────────────────────────────────────────
创建 Thread → 自动创建新会话
在 Thread 中 @mention → 消息路由到 Thread 绑定会话
/focus → 将主会话绑定到当前 Thread
/unfocus → 解除绑定
/session idle 60m → 设置会话空闲超时
九、Heartbeat 与 Cron:让 AI 主动工作
9.1 Heartbeat 机制
Heartbeat 是 OpenClaw 的"主动检查"能力——定期唤醒 Agent,让它检查状态、执行任务。
{
agents: {
defaults: {
heartbeat: {
every: "30m", // 每 30 分钟触发一次
target: "last", // 发送到最后一个活跃通道
// target: "discord", // 或固定发送到某个通道
prompt: [
"检查 workspace 下的 TODO.md",
"如果有未完成的高优先级任务,开始执行",
"检查邮件是否有紧急事项",
],
},
},
},
}
Heartbeat 的底层实现:
┌────────────────────────────────────────────────────────┐
│ Gateway Cron (setInterval) │
│ │
│ every 30 minutes: │
│ 1. 构造 systemEvent message │
│ 2. 注入到目标 Agent 的会话 │
│ 3. 触发 Agent 一轮完整 turn(包括工具调用) │
│ 4. 如果有输出,通过 message tool 发送到 target 通道 │
└────────────────────────────────────────────────────────┘
9.2 Cron 任务系统
Cron 系统支持三种调度类型:
{
cron: {
enabled: true,
jobs: [
{
name: "daily-standup",
schedule: {
kind: "cron",
expr: "0 9 * * 1-5", // 工作日早 9 点
tz: "Asia/Shanghai",
},
payload: {
kind: "agentTurn",
message: "写今日 standup 报告:昨天完成、今天计划、遇到阻碍",
deliver: true,
channel: "slack",
to: "#standup",
},
},
{
name: "weekly-summary",
schedule: {
kind: "cron",
expr: "0 18 * * 5", // 周五傍晚 6 点
tz: "Asia/Shanghai",
},
payload: {
kind: "agentTurn",
message: "生成本周工作摘要,发送到 Telegram",
},
},
{
name: "model-health-check",
schedule: {
kind: "every",
everyMs: 3600000, // 每小时
},
payload: {
kind: "systemEvent",
text: "检查所有配置模型的健康状态",
},
},
],
},
}
十、生产部署实战
10.1 部署架构
┌─────────────────────┐
│ 反向代理 (Nginx) │
│ TLS Termination │
└──────────┬──────────┘
│
┌──────────┴──────────┐
│ OpenClaw Gateway │
│ (127.0.0.1:18789) │
└──────────┬──────────┘
│
┌────────────────────┼────────────────────┐
│ │ │
┌─────────┴─────────┐ ┌──────┴──────┐ ┌─────────┴─────────┐
│ WhatsApp Bridge │ │ Telegram │ │ Discord Bot │
│ (whatsapp-web.js)│ │ Bot API │ │ (Gateway 内置) │
└───────────────────┘ └─────────────┘ └───────────────────┘
10.2 systemd 服务配置
# /etc/systemd/system/openclaw.service
[Unit]
Description=OpenClaw Gateway
After=network.target
[Service]
Type=simple
User=openclaw
Group=openclaw
WorkingDirectory=/home/openclaw/.openclaw
ExecStart=/usr/bin/node /home/openclaw/.openclaw/openclaw.mjs gateway
Restart=always
RestartSec=10
Environment=NODE_ENV=production
Environment=OPENCLAW_GATEWAY_TOKEN=<your-token>
# 安全加固
PrivateTmp=true
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/home/openclaw/.openclaw
[Install]
WantedBy=multi-user.target
10.3 监控与日志
# 查看 Gateway 状态
openclaw gateway status
# 查看实时日志
openclaw logs --follow
# 健康检查(用于负载均衡器)
curl -f http://127.0.0.1:18789/health || exit 1
# 诊断配置问题
openclaw doctor
openclaw doctor --fix
10.4 备份策略
#!/bin/bash
# backup-openclaw.sh - 每日备份脚本
BACKUP_DIR="/data/backups/openclaw"
DATE=$(date +%Y%m%d)
mkdir -p "$BACKUP_DIR"
# 备份配置
cp ~/.openclaw/openclaw.json "$BACKUP_DIR/config-$DATE.json"
# 备份 workspace(含 Skill、记忆、会话状态)
tar -czf "$BACKUP_DIR/workspace-$DATE.tar.gz" ~/.openclaw/workspace/
# 备份 sessions.json(会话状态)
cp ~/.openclaw/sessions.json "$BACKUP_DIR/sessions-$DATE.json"
# 保留最近 7 天
find "$BACKUP_DIR" -name "*.tar.gz" -mtime +7 -delete
find "$BACKUP_DIR" -name "*.json" -mtime +7 -delete
十一、与竞品的技术对比
| 维度 | OpenClaw | Claude Code | Cursor | Dify |
|---|---|---|---|---|
| 部署位置 | 本地 | 本地 CLI | 本地 IDE | 服务端 |
| 模型绑定 | 无 | Anthropic | 多模型 | 多模型 |
| 消息通道 | 20+ | 0(仅 CLI) | 0(仅 IDE) | 有限 |
| Skill 扩展 | Markdown 定义 | Tool Use | 插件 | 工作流 |
| 长期记忆 | ✅ 内置 | ❌ 无 | ❌ 无 | ✅ 有 |
| 自主执行 | ✅ Heartbeat/Cron | ❌ 无 | ❌ 无 | ✅ 工作流 |
| 开源协议 | MIT | 专有 | 专有 | Apache 2.0 |
| 移动端 | iOS/Android 节点 | ❌ | ❌ | Web |
核心差异总结:
- Claude Code 是强大的编码助手,但缺乏持久化和消息通道集成
- Cursor 是 IDE 深度集成,但无法在 IDE 外工作
- Dify 是服务端工作流平台,数据不经过本地
- OpenClaw 是唯一同时做到本地优先 + 全通道 + 自主执行的框架
十二、性能优化与规模化的工程实践
12.1 Token 成本控制
AI Agent 最大的运营成本是 Token 消耗。OpenClaw 提供了多层优化:
{
agents: {
defaults: {
// 压缩旧消息(需配合支持压缩的模型或外部服务)
compaction: {
enabled: true,
targetTokens: 8000, // 压缩到 8k tokens
preserveRecent: 10, // 保留最近 10 条消息不被压缩
},
// 图片缩放(减少视觉 Token 消耗)
imageMaxDimensionPx: 1200, // 图片最大边长
// 模型路由(成本优化)
model: {
primary: "anthropic/claude-haiku-4", // 默认用便宜模型
fallbacks: [
"anthropic/claude-sonnet-4-20250514", // 复杂任务升级
],
// 关键词触发模型切换
routing: [
{ pattern: "写代码|implement|debug", model: "anthropic/claude-sonnet-4-20250514" },
{ pattern: "总结|translate|简单", model: "anthropic/claude-haiku-4" },
],
},
},
},
}
12.2 并发控制
{
gateway: {
maxConcurrentTurns: 3, // 同时处理的 Agent turn 数
turnQueueMaxLength: 50, // 排队上限,超出则拒绝
turnTimeoutMs: 300000, // 单个 turn 超时(5 分钟)
},
cron: {
maxConcurrentRuns: 8, // cron 任务并发上限
},
}
12.3 内存管理
长时间运行的 Gateway 需要注意内存泄漏:
# 监控 Gateway 内存使用
ps aux | grep openclaw | grep -v grep
# 设置内存上限(通过 systemd)
# 在 openclaw.service 中添加:
# MemoryMax=2G
# 超出后 systemd 会重启服务
十三、路线图与未来方向
根据 OpenClaw 的 VISION.md 和社区讨论,值得关注的发展方向:
- ACP(Agent Client Protocol)标准化:OpenClaw 正在推动 ACP 成为 AI Agent 的"HTTP"——统一不同 Agent 框架之间的通信协议
- 多模态能力增强:Canvas(实时渲染界面)+ A2UI(Agent-to-UI)让 Agent 不仅能"说",还能"展示"
- 联邦学习记忆:多个 OpenClaw 实例之间安全共享去标识化的经验知识
- 企业 SSO 集成:SAML/OIDC 接入,适合企业部署
十四、总结:为什么 OpenClaw 值得深度关注
OpenClaw 的核心价值,不在于它"能做多少事",而在于它重新定义了 AI 助手应该是什么形态:
- 从"工具"到"助手":不是你打开它,而是它随时待命
- 从"云端"到"本地":数据主权回归用户
- 从"封闭"到"开放":Skill 生态让能力扩展零门槛
- 从"单通道"到"全通道":一个 AI,所有入口
对于开发者而言,OpenClaw 是一个可编程的个人 AI 操作系统——你用 Skill 教它新能力,用配置定义它的行为边界,用 Cron 让它自主工作。这种范式,很可能就是未来个人 AI 的标准形态。
参考资源
- 官网:https://openclaw.ai
- 文档:https://docs.openclaw.ai
- GitHub:https://github.com/openclaw/openclaw(MIT 协议,380k+ Stars)
- ClawHub:https://clawhub.ai
- Discord 社区:https://discord.gg/clawd
本文基于 OpenClaw 2026 年 6 月版本撰写,具体配置以最新官方文档为准。