Skip to content

05 路由与会话键

模块目标

理解系统如何把“某条消息”稳定地路由到“某个 agent + 某个会话”。

步骤一:实现拆解(执行链路)

  1. 读取绑定规则: src/routing/bindings.ts
  2. 计算路由结果: src/routing/resolve-route.ts
  3. 生成 session key: src/routing/session-key.ts(由 resolve-route 调用)
  4. 下游使用 session key 做并发和持久化分区

步骤二:细粒度讲解(小白版)

  1. 输入不是只有 channel
  • 还包括 accountId, peer, parentPeer, guildId, teamId, memberRoleIds
  • 这就是为什么路由能支持私聊/群聊/线程/组织角色
  1. 匹配有优先级(很关键)
  • peer 精确匹配
  • parent peer 继承匹配
  • guild+roles
  • guild
  • team
  • account
  • channel
  • 最后才 default agent
  1. 输出不只是 agentId
  • 还返回 sessionKeymainSessionKey
  • 以及 matchedBy(记录是怎么匹配到的,便于排错)
  1. session key 设计的价值
  • 同一会话消息能串起来
  • 并发队列按 session 隔离
  • 存储文件按 session 定位
  1. 性能优化点
  • 对 binding 结果做了缓存(按 channel+account)
  • 避免每条消息都全量遍历 bindings

用工程视角拆解 AI 智能体框架