你要拿到的结果
做完后必须满足:
- 同一渠道下 A/B 两个账号不会互相看到上下文
- 同一账号下不同会话(thread)不会互串
- 你能从日志直接定位“串会话发生在哪一层”
前置准备(5 分钟)
准备 2 个账号和 2 条测试任务:
- 账号 A:发送“只回答 A”
- 账号 B:发送“只回答 B”
确保日志里能看到这 3 个字段(字段名按你系统实际为准):
channelaccountId(或 userId)threadId(或 conversationId)
参考:
操作步骤(20 分钟)
第 1 步:先定 session key 规则
先写死规则,再改配置。
推荐最小公式:
sessionKey = channel + ":" + accountId + ":" + threadId
不要只用 channel,也不要只用 accountId。
第 2 步:按“渠道、账号、会话”三层路由
执行顺序不要反:
- 渠道分流(Telegram/WhatsApp/Discord 分开)
- 渠道内账号分流(A/B 分开)
- 账号内 thread 分流(会话隔离)
第 3 步:跑最小回归矩阵
必须跑这 6 组:
- Telegram A thread-1
- Telegram A thread-2
- Telegram B thread-1
- WhatsApp A thread-1
- WhatsApp B thread-1
- Discord A thread-1
每组发 2 条消息,检查回复是否只引用本组历史。
验收标准(必须全部通过)
- 同账号不同 thread:无串历史
- 同渠道不同账号:无串历史
- 不同渠道同账号标识:无串历史
- 日志能看到唯一
sessionKey
失败排查(直接对照)
-
症状:A 收到 B 的历史
动作:检查sessionKey是否缺accountId -
症状:同账号不同会话互串
动作:检查sessionKey是否缺threadId -
症状:只有某个渠道串会话
动作:先看该渠道入口是否上报了错误的accountId或threadId
DM 场景补充
启用私聊前,先定义谁能配对、配对后权限范围。
不要把“能私聊”当“全能力放开”。
下一步
会话隔离稳定后,再做这两件事: