Skip to content

Streaming und Hooks

源码版本v2026.7.20

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

Datenfluss

  1. GatewayRunner startet _start_stream_consumer:21218.
  2. Ein GatewayStreamConsumer wird erzeugt; consumer.on_delta wird als stream_delta_callback an AIAgent (run_agent.py:400) übergeben.
  3. Der Agent ruft im Worker-Thread synchron on_delta(text) auf → der Konsument stellt das Inkrement in eine asynchrone Queue.
  4. 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
  5. Nach Stream-Abschluss löst das Sentinel-Signal das finale Editieren aus und übergibt an das delivery_ledger:155 zur Verbuchung.
  6. An allen Knotenpunkten werden hooks getriggert (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.

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