🎯 上一期回顾
上期我们说到,OpenClaw 是一个连接 AI 和各种聊天软件的"网关"。
有朋友问:
"这个 Gateway 到底是怎么工作的?它是怎么同时管理那么多聊天软件的?"
今天我们就来深入解剖 Gateway 的工作原理。
🏗️ Gateway 的核心职责
你可以把 Gateway 想象成一个五星级酒店的前台:
┌─────────────────────────────────────────────────────────┐
│ 五星级酒店 │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 前台 (Gateway) │ │
│ │ • 接待客人 (接收消息) │ │
│ │ • 分配房间 (路由到对应会话) │ │
│ │ • 协调服务 (调用工具) │ │
│ │ • 记录访客 (会话管理) │ │
│ └─────────────────────┬───────────────────────────┘ │
│ │ │
│ ┌────────────────────┼────────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ 客房1 │ │ 客房2 │ │ 客房3 │ │
│ │(会话1) │ │(会话2) │ │(会话3) │ │
│ └────────┘ └────────┘ └────────┘ │
│ │
└─────────────────────────────────────────────────────────┘Gateway 的四大核心功能:
1. 接收消息 - 统一入口 2. 路由分发 - 找对会话 3. 执行任务 - 调用工具 4. 返回结果 - 发送回复
🔄 消息处理流程
当你给 AI 发送一条消息,Gateway 内部会发生什么?
Step 1: 消息入口
微信/Telegram/Slack/Discord...
│
▼
┌─────────────────────────┐
│ Gateway 接收器 │
│ (统一的消息入口) │
└───────────┬─────────────┘
│
▼Gateway 会把所有渠道的消息统一标准化,不管来自微信还是 Telegram,内部都是统一的格式。
Step 2: 安全检查
▼
┌─────────────────────────┐
│ 安全检查 │
│ ┌───────────────────┐ │
│ │ • 验证身份 │ │
│ │ • 白名单检查 │ │
│ │ • DM 策略验证 │ │
│ └───────────────────┘ │
└───────────┬─────────────┘
│
┌─────┴─────┐
│ 通过? │
└─────┬─────┘
Yes │ No
▼ ┌─────────────────┐
│ │ 拒绝消息 │
│ │ (不在白名单) │
▼ └─────────────────┘Step 3: 会话路由
▼
┌─────────────────────────┐
│ 找会话 │
│ ┌───────────────────┐ │
│ │ • 用户 A → 会话1 │ │
│ │ • 群组 B → 会话2 │ │
│ │ • 新用户 → 新建 │ │
│ └───────────────────┘ │
└───────────┬─────────────┘
│
▼OpenClaw 会为每个用户/群组创建独立的会话,会话会记住对话历史。
Step 4: AI 处理
▼
┌─────────────────────────┐
│ 发送给 AI 引擎 │
│ │
│ ┌─────────────────┐ │
│ │ Pi Agent │ │
│ │ (Claude/GPT) │ │
│ └────────┬────────┘ │
└────────────┼────────────┘
│
▼
┌─────────────────────────────────────┐
│ AI 可能需要调用工具 │
│ ┌─────────┐ ┌─────────┐ ┌───────┐ │
│ │ 读文件 │ │ 执行命令│ │ 浏览器 │ │
│ └─────────┘ └─────────┘ └───────┘ │
└──────────────┬──────────────────────┘
│
▼Step 5: 返回回复
│
▼
┌─────────────────────────────────────────┐
│ 发送回复 │
│ │
│ ┌─────────────────────────────────┐ │
│ │ • 微信 → 微信用户 │ │
│ │ • Telegram → Telegram 用户 │ │
│ │ • Slack → Slack 频道 │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘🧩 Gateway 核心模块
Gateway 由多个模块组成:
Gateway 架构
│
├── 1️⃣ HTTP/WS 服务器
│ ├── WebSocket (实时通信)
│ └── HTTP (REST API)
│
├── 2️⃣ 认证系统
│ ├── 连接认证
│ ├── 通道认证
│ └── 消息认证
│
├── 3️⃣ 会话管理
│ ├── 创建/销毁
│ ├── 上下文维护
│ └── 状态管理
│
├── 4️⃣ 通道管理
│ ├── 消息收发
│ ├── 状态监控
│ └── 连接维护
│
├── 5️⃣ 插件系统
│ ├── Channel 插件
│ └── Provider 插件
│
└── 6️⃣ 工具系统
├── 工具注册
└── 工具执行🔌 通信方式:WebSocket + HTTP
Gateway 使用两种通信方式:
WebSocket (主要方式)
客户端 ◄──────────────────► Gateway
┌──────────────────┐
│ 双向实时通信 │
│ • 消息推送 │
│ • 工具调用 │
│ • 事件通知 │
└──────────────────┘默认端口: 18789
HTTP (辅助方式)
浏览器 ◄──────────────────► Gateway
┌──────────────────┐
│ • 健康检查 │
│ • 配置管理 │
│ • 文件上传 │
└──────────────────┘📊 会话生命周期
每个用户在 OpenClaw 中都有一个独立的"会话":
┌──────────────────────────────────────────────────────┐
│ 会话生命周期 │
├──────────────────────────────────────────────────────┤
│ │
│ 创建 ──► 活跃 ──► 空闲 ──► 暂停 ──► 销毁 │
│ │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌─────┐ │
│ │Created │───▶│Active │───▶│ Idle │───▶│Dead │ │
│ └────────┘ └────────┘ └────────┘ └─────┘ │
│ │
│ • Created: 新建会话 │
│ • Active: 正在处理消息 │
│ • Idle: 等待消息 │
│ • Paused: 上下文已压缩 │
│ • Dead: 会话结束 │
│ │
└──────────────────────────────────────────────────────┘🔐 安全机制
Gateway 内置多层安全保护:
┌─────────────────────────────────────────┐
│ 安全防护层次 │
├─────────────────────────────────────────┤
│ │
│ 第1层: 连接认证 │
│ ┌─────────────────────┐ │
│ │ Token / 密码验证 │ │
│ └─────────────────────┘ │
│ │ │
│ 第2层: 通道认证 │
│ ┌─────────────────────┐ │
│ │ Bot Token / OAuth │ │
│ └─────────────────────┘ │
│ │ │
│ 第3层: 消息认证 │
│ ┌─────────────────────┐ │
│ │ 白名单 / DM 策略 │ │
│ └─────────────────────┘ │
│ │ │
│ 第4层: 沙箱隔离 │
│ ┌─────────────────────┐ │
│ │ Docker 沙箱 │ │
│ └─────────────────────┘ │
│ │
└─────────────────────────────────────────┘💻 相关命令
# 启动 Gateway
openclaw gateway run
# 指定端口
openclaw gateway --port 18789
# verbose 模式 (调试)
openclaw gateway --verbose
# 查看 Gateway 状态
openclaw status
# 诊断问题
openclaw doctor✅ 总结
Gateway 本质上是一个消息路由器 + 会话管理器 + 工具调度器:
1. 接收 - 统一接收各渠道消息 2. 检查 - 验证身份和权限 3. 路由 - 分发到对应会话 4. 处理 - 交给 AI 处理 5. 返回 - 把回复发送回去
📖 下期预告
下一期我们将聊聊 消息通道系统,看看 OpenClaw 是如何支持 20+ 个聊天软件的。
敬请期待!
🚀 觉得有用?点个赞再走!
夜雨聆风