乐于分享
好东西不私藏

深入理解OpenClaw Gateway:它是如何把微信、Telegram统一管理的?

深入理解OpenClaw Gateway:它是如何把微信、Telegram统一管理的?

🎯 上一期回顾

上期我们说到,OpenClaw 是一个连接 AI 和各种聊天软件的"网关"。

有朋友问:

"这个 Gateway 到底是怎么工作的?它是怎么同时管理那么多聊天软件的?"

今天我们就来深入解剖 Gateway 的工作原理。


🏗️ Gateway 的核心职责

你可以把 Gateway 想象成一个五星级酒店的前台

┌─────────────────────────────────────────────────────────┐
│                     五星级酒店                           │
│                                                          │
│   ┌─────────────────────────────────────────────────┐   │
│   │                    前台 (Gateway)                │   │
│   │  • 接待客人 (接收消息)                           │   │
│   │  • 分配房间 (路由到对应会话)                    │   │
│   │  • 协调服务 (调用工具)                          │   │
│   │  • 记录访客 (会话管理)                          │   │
│   └─────────────────────┬───────────────────────────┘   │
│                         │                                │
│    ┌────────────────────┼────────────────────┐          │
│    │                    │                    │          │
│    ▼                    ▼                    ▼          │
│ ┌────────┐         ┌────────┐          ┌────────┐       │
│ │ 客房1  │         │ 客房2  │          │ 客房3  │       │
│ │(会话1) │         │(会话2) │          │(会话3) │       │
│ └────────┘         └────────┘          └────────┘       │
│                                                          │
└─────────────────────────────────────────────────────────┘

Gateway 的四大核心功能:

  1. 1. 接收消息 - 统一入口
  2. 2. 路由分发 - 找对会话
  3. 3. 执行任务 - 调用工具
  4. 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. 1. 接收 - 统一接收各渠道消息
  2. 2. 检查 - 验证身份和权限
  3. 3. 路由 - 分发到对应会话
  4. 4. 处理 - 交给 AI 处理
  5. 5. 返回 - 把回复发送回去

📖 下期预告

下一期我们将聊聊 消息通道系统,看看 OpenClaw 是如何支持 20+ 个聊天软件的。

敬请期待!


🚀 觉得有用?点个赞再走!