模块以 base.py 中的抽象 BaseChannel 为契约,各平台实现(telegram/dingtalk/discord/wechat 等)通过继承接入;所有渠道通过 bus/queue.py 的 MessageBus(基于 asyncio.Queue 的 inbound/outbound 双队列)与 Agent 核心解耦。runtime.py 的 ChannelRuntime 是入口:启动后创建 _consume_loop 协程消费 bus.consume_inbound(),对 /pairing、/new 等内置命令就地处理,其余消息经 SessionService.send_message 进入会话并轮询回复,再通过 bus.publish_outbound 回写。权限控制分层:BaseChannel.is_allowed 先查配置 allowlist,再查 pairing/store.py 的持久化批准列表,未授权 DM 自动下发配对码。pairing/store.py 使用单文件 JSON + threading.Lock 实现跨同步/异步调用的轻量授权存储,支持生成/批准/拒绝/撤销配对码并以 restrict_channel 实现全局与单渠道操作者隔离。manager.py、registry.py、config.py、utils.py、signal.py 等顶层文件负责渠道发现、生命周期编排、配置加载与工具函数,依赖方向单向指向 bus/pairing/base,不反向被它们引用。