Skip to content

网关核心

源码版本v2026.7.20

职责

网关是 agent 与外部世界的桥梁:接收各平台(Telegram/Discord/Slack/Signal/微信…)消息,转成统一的 MessageEvent 喂给 agent;把 agent 的流式输出转成各平台的发送动作。gateway/run.py 是这层的主进程(GatewayRunner),协调适配器、会话、流式消费、投递账本、hooks、cron 心跳等多条子系统。

关键文件

数据流

  1. main()(gateway/run.py:22965)启动 GatewayRunner
  2. _start_one_profile_adapter:9389 逐个拉起平台适配器(见平台适配器)。
  3. 适配器收到平台原始事件,转成统一 MessageEvent(见 gateway/platforms/base.py:1759)。
  4. _handle_message(gateway/run.py:9947)分发:授权检查、会话解析、slash 命令路由,或交给 _handle_message_with_agent(gateway/run.py:11956)。
  5. 后者调 agent 的 run_conversation:588,并把流式回调接到 GatewayStreamConsumer:83
  6. 流式输出经消费器渐进式编辑平台消息;最终态由 delivery_ledger 记账,防止崩溃丢失最终回复。
  7. 巡检与 cron 心跳在后台 60s 周期跑(gateway/run.py:22246 / gateway/run.py:22335)。

小结

网关核心是「事件总线 + 流式桥接」:统一 MessageEvent 抽象屏蔽平台差异,GatewayStreamConsumer 把同步 agent 回调桥到异步平台投递,delivery_ledger 保证最终态不丢。它和 agent 解耦——agent 只管跑循环,投递细节全在网关。

非官方社区学习站,内容以 MIT 许可的 NousResearch/hermes-agent 源码为依据。