网关核心
源码版本v2026.7.20
职责
网关是 agent 与外部世界的桥梁:接收各平台(Telegram/Discord/Slack/Signal/微信…)消息,转成统一的 MessageEvent 喂给 agent;把 agent 的流式输出转成各平台的发送动作。gateway/run.py 是这层的主进程(GatewayRunner),协调适配器、会话、流式消费、投递账本、hooks、cron 心跳等多条子系统。
关键文件
class GatewayRunner:3029— 网关主类,混入授权/Kanban/Slash 能力_handle_message:9947— 入站消息分发入口_handle_message_with_agent:11956— 把消息交给 agent 跑一轮_start_one_profile_adapter / _start_secondary:9389-9947— 启动各 profile 的平台适配器_start_stream_consumer:21218— 启动流式消费器_start_gateway_housekeeping:22246— 周期性巡检(60s)_start_cron_ticker:22335— cron 心跳(60s)def main:22965— 网关进程入口异常与脱敏:276-340—_gateway_loop_exception_handler/_redact_gateway_user_facing_secretsPlatformEntry:39-162— 平台注册项数据类class PlatformRegistry:162-260— 注册表(register / register_deferred / unregister)
数据流
main()(gateway/run.py:22965)启动GatewayRunner。_start_one_profile_adapter:9389逐个拉起平台适配器(见平台适配器)。- 适配器收到平台原始事件,转成统一
MessageEvent(见gateway/platforms/base.py:1759)。 _handle_message(gateway/run.py:9947)分发:授权检查、会话解析、slash 命令路由,或交给_handle_message_with_agent(gateway/run.py:11956)。- 后者调 agent 的
run_conversation:588,并把流式回调接到GatewayStreamConsumer:83。 - 流式输出经消费器渐进式编辑平台消息;最终态由
delivery_ledger记账,防止崩溃丢失最终回复。 - 巡检与 cron 心跳在后台 60s 周期跑(
gateway/run.py:22246/gateway/run.py:22335)。
小结
网关核心是「事件总线 + 流式桥接」:统一 MessageEvent 抽象屏蔽平台差异,GatewayStreamConsumer 把同步 agent 回调桥到异步平台投递,delivery_ledger 保证最终态不丢。它和 agent 解耦——agent 只管跑循环,投递细节全在网关。