Part 2: 技术架构
整体架构
Architecture Overview
OpenClaw 采用 Gateway-Node-Channel 三层架构,以 WebSocket 为通信总线,将控制平面、设备执行与消息渠道解耦。
三层架构 Gateway · Node · Channel
mermaid
flowchart LR
Channel["Channel\n20+ 消息渠道"] --> Gateway["Gateway\n中央控制平面"] --> Node["Node\n设备端执行"]| 层级 | 职责 | 关键细节 |
|---|---|---|
| Gateway | 中央控制平面,维护 WebSocket 服务、管理 Session、调度 Agent | 默认绑定 ws://127.0.0.1:18789,每台主机一个实例 |
| Node | 设备端执行节点,负责本地操作 | camera(摄像头)、screen recording(录屏)、system.run(系统命令)等 |
| Channel | 消息渠道接入层,连接 20+ 即时通讯平台 | WhatsApp、Telegram、Discord、Slack、飞书、钉钉等 |
Loopback-First 设计 Security by Default
Gateway 默认只绑定 localhost(127.0.0.1),所有流量在本地回环。这意味着:
- 不开放任何外网端口,天然安全
- 同一台机器上的 Node 直接通过 WebSocket 连接 Gateway
- 需要远程访问时,通过 Tailscale Serve/Funnel 暴露,不直接暴露端口
核心建议 每台主机只运行一个 Gateway 实例。这是因为 WhatsApp Web 等渠道需要独占会话,多实例会导致登录冲突。
通信流程
一条消息从用户发出到 Agent 回复,完整路径如下:
mermaid
flowchart LR
A["用户发消息"] --> B["Channel 接收"] --> C["Gateway 路由"] --> D["Agent 处理"] --> E["Node 执行"] --> F["回复用户"]Gateway 作为 24/7 运行的 daemon,持续监听所有已连接的 Channel。它不像 CLI Agent 那样会话结束就丢失上下文,而是长驻运行,积累记忆。