路由系统

一句话概括

路由系统通过多层绑定优先级链将入站消息映射到 agent + 会话对:peer > guild+roles > guild > team > account > channel > default。

职责

  • 基于渠道、账号、peer、guild、team 和 roles 解析哪个 agent 处理消息
  • 构建编码完整路由上下文的会话 key(agent、channel、chat type、identity)
  • 支持 DM 会话作用域(main、per-peer、per-channel-peer、per-account-channel-peer)
  • 处理线程父继承
  • 管理跨渠道身份关联

关键源码文件

文件行数角色
src/routing/resolve-route.ts443主解析器resolveAgentRoute()、绑定匹配、DM 作用域解析
src/routing/bindings.ts113绑定查询listBindings()listBoundAccountIds()、账号解析
src/routing/session-key.ts241会话 key:构建、解析、归一化

绑定优先级链

1. binding.peer         — 精确 peer 匹配(最高优先级)
2. binding.peer.parent  — 线程父继承
3. binding.guild+roles  — guild + 成员角色匹配
4. binding.guild        — 仅 guild 匹配
5. binding.team         — team 匹配
6. binding.account      — account 匹配
7. binding.channel      — channel 匹配
8. default              — 降级到默认 agent

与其他模块的关系

  • 依赖config/(绑定配置)、channels/(聊天类型归一化)
  • 被依赖auto-reply/(分发前解析路由)、sessions/(会话 key 解析)

我的认知盲区

  • 身份关联 — 跨渠道身份解析如何工作
  • resolveAgentRoute() 中的缓存行为
  • 旧版 key 迁移 — 如何处理旧会话 key 格式

变更频率

  • resolve-route.ts:中 — 新功能添加新绑定类型
  • session-key.ts:中 — 新会话类型的新 key 格式
  • bindings.ts:低 — 查询工具稳定