多渠道消息路由
Multi-Channel Message Routing
通过异步消息总线解耦Agent核心与多个聊天渠道,实现统一的消息收发和路由
子问题
1.渠道抽象与统一接口
2.异步消息队列解耦
3.outbound消息订阅分发
4.渠道独立配置与启停
5.渠道 SDK 依赖隔离与延迟加载
6.复合身份标识的白名单匹配(管道符分割)
7.渠道内媒体文件下载与格式转换
各项目的解法1 solutions
Signals
横向对比
| 维度 | DeepCode |
|---|---|
| 消息总线 | asyncio.Queue 双队列(inbound/outbound),进程内无持久化 |
| 渠道抽象 | BaseChannel ABC 三方法(start/stop/send)+ _handle_message 模板方法 |
| 路由机制 | ChannelManager._dispatch_outbound 按 msg.channel 字符串直接查 dict 路由 |
| 渠道数量 | 8 渠道(Telegram/Discord/Slack/WhatsApp/飞书/钉钉/QQ/Email) |
| 配置模型 | Pydantic BaseModel 每渠道独立 Config 类,enabled + allow_from 统一字段 |
| 依赖隔离 | 延迟导入 + try/except ImportError,缺 SDK 只 warning 不崩溃 |
| 权限控制 | BaseChannel.is_allowed 白名单,支持管道符复合 ID 匹配 |
最佳实践
1.使用pub/sub模式解耦Agent与渠道
2.每个渠道独立配置和生命周期管理
3.延迟导入渠道 SDK 并 try/except ImportError 实现优雅降级
4.消息事件用 session_key 属性统一会话标识格式