Skip to content

Gateway 架构

设计概述

OpenClaw Gateway 是系统的核心控制平面,基于 WebSocket 实现,负责:

  • 管理所有频道的连接和消息路由
  • 协调 Agent 的工具调用
  • 维护会话状态
  • 处理并发请求

架构图

外部频道                    Gateway 内部
─────────────────────────────────────────
Telegram Bot ──→
WhatsApp     ──→  Channel    Session    Agent
Discord      ──→  Manager  ←→Manager ←→ Pool
WebChat      ──→
                    ↕           ↕
                Event Bus   State Store

               Tool Manager
               ├─ File Tools
               ├─ Shell Tools
               └─ HTTP Tools

消息路由

消息从频道到 Agent 的完整路径:

1. 用户在 Telegram 发送消息
2. Channel Manager 接收消息,标准化为内部格式
3. Session Manager 找到或创建对应会话
4. Agent Pool 分配 Agent 处理
5. Agent 执行 Loop,调用工具
6. 结果通过 Channel Manager 返回给用户

WebSocket API

Gateway 对外暴露 WebSocket 接口,可以接入自定义客户端:

javascript
const ws = new WebSocket('ws://localhost:3000/ws')

ws.on('message', (data) => {
  const event = JSON.parse(data)
  console.log(event)
  // { type: 'message', session: '...', content: '...' }
})

// 发送消息
ws.send(JSON.stringify({
  type: 'input',
  session: 'my-session',
  content: '帮我写一个排序算法'
}))

扩展性

Gateway 设计支持水平扩展,通过 Redis 共享状态可以运行多个实例。但对于个人用户,单实例已足够。

基于 OpenClaw 官方文档整理,仅供学习研究