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 共享状态可以运行多个实例。但对于个人用户,单实例已足够。