Gateway-Kern
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
class GatewayRunner:3029— Gateway-Hauptklasse, mischt Authorization/Kanban/Slash ein_handle_message:9947— Dispatch-Eingang eingehender Nachrichten_handle_message_with_agent:11956— übergibt die Nachricht an den Agenten für einen Turn_start_one_profile_adapter / _start_secondary:9389-9947— startet die Plattform-Adapter der Profile_start_stream_consumer:21218— startet den Stream-Konsumenten_start_gateway_housekeeping:22246— zyklische Inspektion (60s)_start_cron_ticker:22335— Cron-Heartbeat (60s)def main:22965— Gateway-ProzesseinstiegExceptions und Redaktion:276-340—_gateway_loop_exception_handler/_redact_gateway_user_facing_secretsPlatformEntry:39-162— Datenklasse eines Plattform-Registry-Eintragsclass PlatformRegistry:162-260— Registry (register / register_deferred / unregister)
Datenfluss
main()(gateway/run.py:22965) startet denGatewayRunner._start_one_profile_adapter:9389bringt nacheinander die Plattform-Adapter hoch (siehe Plattform-Adapter).- Der Adapter empfängt das native Plattform-Event und wandelt es in ein einheitliches
MessageEventum (siehegateway/platforms/base.py:1759) um. _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).- Letzteres ruft
run_conversation:588des Agenten auf und verdrahtet den Streaming-Callback anGatewayStreamConsumer:83. - Der Streaming-Output wird vom Konsumenten inkrementell editiert auf der Plattform-Nachricht; der Endzustand wird vom
delivery_ledgerverbucht, damit ein Crash die finale Antwort nicht verliert. - 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.