路由规则
一条路由规则(binding)由四个字段构成:前两个是”匹配什么消息”,后两个是”命中后怎么处理”。match_value 是精确匹配(不是前缀,也不是正则),只有 "*" 例外,它匹配一切。当 match_key 指向 metadata 里的键时,可匹配的值由平台决定,例如飞书的 chat_type 取值为 group / p2p,Discord 为 guild / dm,详见各平台接入页。
会话划分
session_scope 决定命中同一条规则的消息如何归入会话。进入同一个会话的消息共享上下文。
即便匹配到同一个智能体,
per_chat 与 per_chat_user 也会把消息归入不同会话。因此改动划分方式后,后续消息会按新方式重新归组。不同智能体之间永远不共享会话。
匹配顺序
规则按列表顺序自上而下匹配,首条命中即停,与防火墙规则、Nginx location 的匹配方式一致。把具体的例外规则放在前面,把兜底规则放在最后。 保存配置时会做三项校验,保证任何消息都有确定且唯一的去向:完整示例
假设你已经部署了两个智能体:通用助手friday,以及产品专家 product-expert。下面用一条真实消息,看它在不同规则下分别交给哪个智能体、进入哪个会话。
1
收到一条消息
机器人在一个叫”产品团队”的飞书群里,收到成员 Alice 的一句话。这条消息大致长这样(只列出与路由相关的字段):
入站消息
2
用规则决定去向
同一条消息,配上不同的规则,会去往不同的智能体和会话。下面每个标签页是一种配置:
3
兜底规则
每份配置的最后都必须有一条兜底规则(
match_value 为 "*"),保证没命中任何前面规则的消息也有确定去向。上面三个例子的最后一条都是它:兜底规则
延伸阅读
接入飞书
创建飞书机器人,让智能体在飞书里收发消息。
接入 Discord
创建 Discord Bot,让智能体在 Discord 里收发消息。