03|路由与并发:sessionKey / lane / queue

03|路由与并发:sessionKey / lane / queue

从“收到一条消息”到“开始一次 agent run”,最关键的一步不是调用模型,而是把消息稳定地分配到会话,并把并发约束落地。

你需要能解释 3 个现象:

  • 不串线:群聊/多账号/多通道不会互相污染上下文
  • 不乱序:同一会话内消息顺序稳定
  • 能并行:不同会话可以并发执行(不会互相阻塞)

sessionKey:会话隔离的核心

sessionKey 用来决定“哪些消息属于同一个会话”。通常它会综合:

  • 渠道类型(DM/群组/频道)
  • 账号/设备/连接实例
  • 线程/回复链(如果平台支持)

入口:

lane/queue:同会话串行 + 跨会话并行

一旦 sessionKey 确定,系统就可以用 lane/queue 落地并发策略:

  • 同一 sessionKey:串行(避免并发写会话导致顺序错乱)
  • 不同 sessionKey:允许并行(受全局上限保护)

入口:

排障:当你怀疑“串线/乱序”

建议用“由外到内”的顺序排:

  1. 先确认 routing 规则(sessionKey 是否符合预期)
  2. 再确认 queue/lane 配置(是否意外把不同会话折叠)
  3. 最后回到日志与 Control UI,用 runId 追踪一次完整链路

入口: