很多人把 OpenClaw 当成「聊天机器人框架」来理解, 但它真正的设计核心是:一个 Gateway 进程统一管理所有事情。 理解这个架构,才能在遇到问题时知道从哪里下手。
核心设计:Gateway 是单一真相来源
你的所有消息渠道 OpenClaw Gateway AI 提供商
(单一进程,单一状态)
Telegram ─────────────► 会话管理 ──► Claude API
WhatsApp ─────────────► 消息路由 ──► Gemini API
Discord ─────────────► 渠道连接 ──► 本地模型
iMessage ─────────────► 认证与权限
工具调用
节点协调
为什么要单一 Gateway?
- 会话一致性:从 Telegram 开始的对话,切到 WhatsApp 继续,Claude 记得上下文
- 状态集中:Agent 记忆、工具状态、会话历史,只在一个地方存储
- 路由可控:哪条消息用哪个模型、哪个工具,由 Gateway 统一决策
Gateway 的核心职责
┌─────────────────────────────────────────────────┐
│ OpenClaw Gateway │
│ │
│ 渠道层 消息进/出各个平台(Telegram/WA/Discord)│
│ 路由层 根据规则分发给正确的 Agent/模型 │
│ 会话层 维护每个对话的上下文和记忆 │
│ 工具层 执行 Bash、读写文件、调用 MCP 等工具 │
│ 节点层 协调远程节点(手机/树莓派)提供本地能力 │
│ 安全层 认证、权限检查、沙箱隔离 │
└─────────────────────────────────────────────────┘
本地模式 vs 远程模式
本地模式(默认,适合个人用户)
你的 Mac/PC 你的手机
┌──────────────┐ ┌──────────────┐
│ Gateway 进程 │◄──Telegram───►│ Telegram App │
│ 端口 18789 │ └──────────────┘
│ 绑定本地回环 │
└──────────────┘
特点:
- Gateway 只在本地 127.0.0.1 监听
- 从手机发消息,经过 Telegram 服务器中转到 Gateway
- 最安全(不暴露端口到互联网)
远程模式(适合 VPS/服务器部署)
VPS(always-on) 你的所有设备
┌──────────────┐ 手机 Telegram ─►┐
│ Gateway 进程 │◄──────────────笔记本 WA ─────►├── 都连到同一 Gateway
│ 通过 Tailscale│ iPad 浏览器 ──►┘
│ 或 SSH 隧道 │
└──────────────┘
特点:
- Gateway 运行在不间断的服务器上
- 所有设备都连接到同一个 Gateway
- 你的 Mac 关机了,但 AI 助手还在线
端口与连接
Gateway 默认监听 WebSocket 端口 18789(可配置):
{
"gateway": {
"port": 18789,
"bind": "loopback"
}
}bind 选项:
"loopback"— 只监听 127.0.0.1(默认,最安全)"lan"— 监听局域网 IP(局域网内其他设备可访问)"tailnet"— 监听 Tailscale IP"custom"— 自定义绑定地址
非 loopback 绑定必须配置认证 token 或 password,否则任何人都能连接。
Node 节点:Gateway 的「外设」
Node 是 Gateway 的延伸,不独立运行 AI——它为 Gateway 提供本地能力:
Gateway(VPS 上)
│ 需要截图操作
▼
Node(你的 Mac)
├── 截取屏幕
├── 访问摄像头
├── 执行本地 Bash
└── 渲染 Canvas
结果返回给 Gateway → 继续 AI 对话
场景:Gateway 在 VPS 上,但你想让 AI 「看看你的屏幕」—— 配置 Mac 作为 Node,Gateway 通过 WebSocket 调用 Node 的截图工具。
多渠道并发:一个 AI 同时在线多个平台
{
"channels": {
"telegram": { "botToken": "xxx" },
"whatsapp": { "enabled": true },
"discord": { "botToken": "yyy" }
}
}同一个 Gateway 同时处理三个平台的消息。 Claude 的「身份」是统一的,在 Telegram 说过的话, 如果 Session 跨渠道共享,在 Discord 里也能被记住。
关键运维命令
# 查看 Gateway 状态
openclaw gateway status
openclaw status --deep # 深度检查(含渠道连通性)
# 启停
openclaw gateway start
openclaw gateway stop
openclaw gateway restart
# 健康检查(适合监控脚本)
openclaw health
# 返回 {"status": "ok"} 表示正常
# 查看实时日志
openclaw gateway logs --follow
# 查看当前活跃会话
openclaw sessions list控制面板(Dashboard)
Gateway 启动后,浏览器打开控制面板:
本地访问:http://127.0.0.1:18789/
远程访问:通过 SSH 隧道转发端口后访问
控制面板提供:渠道状态、会话列表、Agent 配置、 工具状态、实时日志等可视化管理界面。
来源:OpenClaw 官方文档 - docs.openclaw.ai/gateway