Skip to content

Gateway-Kern

源码版本v2026.7.20

Verantwortung

Das Gateway ist die Brücke zwischen Agent und Außenwelt: Es empfängt Nachrichten der Plattformen (Telegram/Discord/Slack/Signal/WeChat …), wandelt sie in ein einheitliches MessageEvent um und füttert den Agenten; den Streaming-Output des Agenten übersetzt es in Sende-Aktionen an die jeweilige Plattform-API. gateway/run.py ist der Hauptprozess dieser Schicht (GatewayRunner) und koordiniert Adapter, Sitzungen, Stream-Konsum, Delivery-Ledger, Hooks, Cron-Heartbeat und weitere Subsysteme.

Schlüsseldateien

Datenfluss

  1. main() (gateway/run.py:22965) startet den GatewayRunner.
  2. _start_one_profile_adapter:9389 bringt nacheinander die Plattform-Adapter hoch (siehe Plattform-Adapter).
  3. Der Adapter empfängt das native Plattform-Event und wandelt es in ein einheitliches MessageEvent um (siehe gateway/platforms/base.py:1759) um.
  4. _handle_message (gateway/run.py:9947) dispatched: Autorisierungsprüfung, Sitzungs-Auflösung, Slash-Command-Routing oder Übergabe an _handle_message_with_agent (gateway/run.py:11956).
  5. Letzteres ruft run_conversation:588 des Agenten auf und verdrahtet den Streaming-Callback an GatewayStreamConsumer:83.
  6. Der Streaming-Output wird vom Konsumenten inkrementell editiert auf der Plattform-Nachricht; der Endzustand wird vom delivery_ledger verbucht, damit ein Crash die finale Antwort nicht verliert.
  7. Inspektion und Cron-Heartbeat laufen im Hintergrund mit 60s-Periode (gateway/run.py:22246 / gateway/run.py:22335).

Zusammenfassung

Der Gateway-Kern ist «Event-Bus + Stream-Brücke»: Die einheitliche MessageEvent-Abstraktion schirmt Plattform-Unterschiede ab, der GatewayStreamConsumer überbrückt den Graben zwischen dem synchronen Agent-Callback und der asynchronen Plattform-Zustellung, das delivery_ledger sichert den Endzustand. Der Agent ist entkoppelt – er dreht nur die Schleife, die Zustellungs-Details liegen voll im Gateway.

Inoffizielle Community-Lernseite. Basiert auf dem MIT-lizenzierten NousResearch/hermes-agent-Quellcode.