Chat Session 会话机制
理解 Buda 中 Chat Channel、Chat Session 的概念与隔离机制
Chat Session 会话机制
核心概念
| 概念 | 说明 |
|---|---|
| Chat Channel | 一个接入渠道,例如一个 WhatsApp 账号、一个 Telegram Bot、一个 Discord 频道。Channel 绑定到某个 Agent,负责接收和发送消息。 |
| Chat Session(会话) | 一次独立的对话上下文。每个用户与 Agent 的对话都是一个独立的 Session,上下文彼此隔离。 |
会话隔离
一个 Chat Channel 可以承载无数个并发 Session。
以 WhatsApp 客服为例:
WhatsApp Channel(账号 A)
├── Session:用户甲 ← 独立上下文
├── Session:用户乙 ← 独立上下文
├── Session:用户丙 ← 独立上下文
└── ...(可扩展到百万级)- 用户甲和用户乙的对话历史完全隔离,互不可见
- Agent 在回复用户甲时,不会"记得"用户乙说过什么
- 同一个用户发起新对话时,可以创建新的 Session,与历史 Session 上下文隔离
Session 的生命周期
用户首次发消息 → 自动创建 Session → 对话进行中 → Session 保持活跃
↓
用户长时间不活跃 → Session 进入休眠
↓
用户再次发消息 → 恢复同一 Session(上下文保留)用户也可以主动开启新 Session,此时旧 Session 的上下文不会延续到新 Session。
与 Discord / Telegram 的对比
不同渠道的 Session 划分逻辑略有不同:
| 渠道 | Session 划分规则 |
|---|---|
| WhatsApp 私聊 | 每个用户手机号 = 一个 Session |
| WhatsApp 群聊 | 每个群 = 一个 Session(群内所有成员共享上下文) |
| Telegram 私聊 | 每个用户 = 一个 Session |
| Telegram 群组 | 每个群 = 一个 Session |
| Discord | 每个频道(channel)= 一个 Session |
在客服场景中的意义
客服场景下,Session 隔离是核心保障:
- 隐私:用户 A 的订单信息不会出现在用户 B 的对话里
- 准确性:Agent 只根据当前用户的上下文回答,不会混淆
- 扩展性:无论同时有多少用户在聊,每个 Session 独立处理,互不影响