七、消息平台 Gateway
七、消息平台 Gateway
gateway = 多平台 adapter + session 路由 + 命令分发 + Agent 执行桥 + 消息回传
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
┌─────────────────────────────────────────────────┐
│ GatewayRunner │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Telegram │ │ Discord │ │ Slack │ │
│ │ Adapter │ │ Adapter │ │ Adapter │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │
│ └─────────────┼─────────────┘ │
│ ▼ │
│ _handle_message() │
│ │ │
│ ┌───────────┼───────────┐ │
│ ▼ ▼ ▼ │
│ Slash command AIAgent Queue/BG │
│ dispatch creation sessions │
│ │ │
│ ▼ │
│ SessionStore │
│ (SQLite persistence) │
└───────┴─────────────┴─────────────┴─────────────┘
工作原理
- 1、消息适配:平台 adapter 将平台(如 WhatsApp)消息适配成 MessageEvent
- 2、Session 定位:平台 + chat + 用户 + thread 定位到session
- 3、命令优先处理:command 优先被 gateway 前置控制层处理
- 4、运行 Agent:构建 context,
AIAgent.run_conversation()是同步阻塞,所以需要在gateway中注册管理进度、streaming、interrupt、approval等事件 - 5、回写结果:adapter 对 Agent 返回结果适配,发送回平台
1
2
3
Slash command dispatch:是 gateway 前置控制层,先解析、跑 hook、命中 handler。没有被 gateway 命令系统消费的内容,才会进入 Agent。
Queue/BG sessions:Queue是在同一个 session 中按顺序聊;BG 是另开一个后台 Agent 并发聊。
亮点
- 并发控制
1 2 3
1、用户消息排队处理:向一个已经在运行 session 发生 user 消息,不会再起一个并发 agent,而是消息进入队列顺序处理 2、command优先处理:`/approve`, `/stop` 等命令绕过消息队列,被gateway 前置控制层优先处理命令。避免死锁
参考
This post is licensed under CC BY 4.0 by the author.