Streaming und Hooks
Verantwortung
(1) Stream-Konsum – der Worker-Thread des Agenten ruft synchron stream_delta_callback(text) auf, während das Plattform-Senden asynchron ist; GatewayStreamConsumer übersetzt die synchronen Inkremente in die asynchrone Welt und editiert inkrementell dieselbe Plattform-Nachricht, sodass der Nutzer eine «Schreibmaschine»-Wirkung sieht. (2) Hooks – an Lebenszyklus-Punkten (Empfang, Pre-Generierung, Post-Generierung, Zustellung) wird eigene Logik eingefügt, etwa Sicherheitsfilter, Abrechnung, Kanban-Sync. (3) Relay – nachrichtenweiterleitung über Instanzen/Profiles hinweg.
Schlüsseldateien
class GatewayStreamConsumer:83-120— der asynchrone Konsument;on_deltaist der an den Agenten übergebene Callbackclass StreamConsumerConfig:55-83— Laufzeitkonfiguration einer Konsumtion (Native-Draft-Streaming-Strategie, End-Edit-Verzögerung usw.)Modul-Dokumentation:1-40— erklärt die Sync→Async-Brücke und das Sentinel-Abschlusssignalstream_dispatch— Dispatch von Stream-Eventsstream_events— Definition der Stream-Event-Typenhooks— Lebenszyklus-Hook-Registrierungbuiltin_hooks/-Verzeichnis— eingebaute Hook-Implementierungenrelay/-Verzeichnis— instanzübergreifendes Relayslash_commands—/-Command-Routingauthz_mixin— Autorisierung (inGatewayRunnereingemischt)profile_routing— Multi-Profile-Routing
Datenfluss
GatewayRunnerstartet_start_stream_consumer:21218.- Ein
GatewayStreamConsumerwird erzeugt;consumer.on_deltawird alsstream_delta_callbackanAIAgent(run_agent.py:400) übergeben. - Der Agent ruft im Worker-Thread synchron
on_delta(text)auf → der Konsument stellt das Inkrement in eine asynchrone Queue. - Die Konsumenten-Koroutine holt Inkremente aus der Queue und folgt der
StreamConsumerConfig:55-Strategie:auto/draft: bevorzugt natives Draft-Streaming (send_draft:2650), Fallback auf normales Editieren- das finale Editieren kann verzögert sein (bei langsamen Inferenzmodellen), um hochfrequentes Flackern zu vermeiden
- Nach Stream-Abschluss löst das Sentinel-Signal das finale Editieren aus und übergibt an das
delivery_ledger:155zur Verbuchung. - An allen Knotenpunkten werden
hooksgetriggert (Empfang / Pre-Gen / Post-Gen / Zustellung); eingebaute Hooks (gateway/builtin_hooks/) übernehmen Sicherheit, Abrechnung, Kanban usw.
Zusammenfassung
Der Stream-Konsument ist die Puffer- und Drosselungsschicht zwischen «synchronem Agent-Callback ↔ asynchroner Plattform-Zustellung» und löst das Sync-/Async-Mismatch. Hooks sind Einhängpunkte für Querschnitts-Themen (Sicherheit/Abrechnung/Sync). Beide lassen das Gateway Echtzeit-Tippen, Sicherheitsfilter und instanzübergreifendes Relay unterstützen, ohne den Agent-Stamm zu verschmutzen.