概述
本文整理 OpenClaw 架构,以便快速理解其作为自托管多渠道消息网关的工作原理。
OpenClaw 架构说明
一、架构总览
OpenClaw 是一个自托管的多渠道消息网关,将 WhatsApp、Telegram、Discord、iMessage 等聊天应用与 AI 智能体(如 Pi/Claude Code)连接起来。
┌─────────────────────────────────────────────────────────────────┐
│ 用户设备 / 消息渠道 │
│ WhatsApp │ Telegram │ Discord │ iMessage │ Slack │... │
└─────────────┴────────────┴───────────┴────────────┴─────────┘
│ ▼
┌─────────────────────────────────────────────────────────────────┐
│ 渠道层 (Channels Layer) │
│ 各渠道适配器 (Baileys/grammY/Bolt SDK/Signal-CLI/BlueBubbles) │
│ 负责:消息收发、配对认证、群组管理、媒体处理 │
└─────────────────────────────────────────────────────────────────┘
│ ▼
┌─────────────────────────────────────────────────────────────────┐
│ 网关层 (Gateway Layer) │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ WebSocket 控制平面 (默认 .:) │ │
│ │ - 客户端连接 (CLI/Web UI/macOS App) │ │
│ │ - 节点连接 (iOS/Android/Headless) │ │
│ │ - 认证与配对管理 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 消息路由引擎 │ │
│ │ - Bindings 路由规则 (渠道→智能体) │ │
│ │ - 会话管理 (Session Store + JSONL Transcripts) │ │
│ │ - 多智能体路由 (Multi-Agent Routing) │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 服务管理 │ │
│ │ - Cron 定时任务 │ │
│ │ - 健康检查与心跳 │ │
│ │ - 配置管理 (openclaw.json) │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│ ▼
┌─────────────────────────────────────────────────────────────────┐
│ 智能体层 (Agent Layer) │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 智能体运行时 (基于 pi-mono) │ │
│ │ - 工作空间 (Workspace): AGENTS.md, SOUL.md, USER.md │ │
│ │ - 会话状态 (Sessions): JSONL 转录 + Session Store │ │
│ │ - 认证配置 (Auth Profiles): 各模型提供商 API 密钥 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 技能系统 (Skills) │ │
│ │ - 内置技能:read, write, edit, exec, browser, web_search │ │
│ │ - 插件技能:从 clawhub.com 安装 │ │
│ │ - 工作空间技能:~/workspace/skills/ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 记忆系统 (Memory) │ │
│ │ - 长期记忆:MEMORY.md │ │
│ │ - 日常日志:memory/YYYY-MM-DD.md │ │
│ │ - 工具笔记:TOOLS.md │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│ ▼
┌─────────────────────────────────────────────────────────────────┐
│ 执行层 (Execution Layer) │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 工具执行 (Tools) │ │
│ │ - 文件操作:read, write, edit │ │
│ │ - 系统命令:exec (支持沙箱/审批) │ │
│ │ - 网络访问:web_search, web_fetch, browser │ │
│ │ - 会话管理:sessions_*, subagents, cron │ │
│ │ - 设备节点:nodes_* (camera, canvas, screen, location) │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 节点系统 (Nodes) │ │
│ │ - iOS/Android/macOS 节点 (WebSocket 连接) │ │
│ │ - 能力:Canvas 展示、相机快照、屏幕录制、位置获取 │ │
│ │ - 远程执行:system.run (节点主机) │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 沙箱与安全 (Sandbox & Security) │ │
│ │ - Docker 沙箱 (可选) │ │
│ │ - 执行审批 (Exec Approvals) │ │
│ │ - 工具白名单/黑名单 │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘

