Plattform-Adapter
Verantwortung
Jede Plattform (Telegram, Discord, Slack, Signal, WhatsApp, WeChat, QQ …) hat einen Adapter, der native Plattform-Events in ein einheitliches MessageEvent übersetzt und einheitliche Sende-Aktionen an die jeweilige Plattform-API zurückleitet. Adapter erben von BasePlatformAdapter und implementieren nur wenige abstrakte Methoden. Adapter stammen aus dem eingebauten gateway/platforms/ oder dem Plugin plugins/platforms/ und werden stets über die PlatformRegistry registriert.
Schlüsseldateien
class BasePlatformAdapter(ABC):2317— abstrakte Adapter-BasisklasseAbstrakte Methoden send / send_draft:2983-3015— Sendeschnittstelle, die Subklassen implementieren müssenMessageType / ProcessingOutcome / MessageEvent:1737-1759— einheitliches Event-ModellCachedMedia:1638-1737— Medien-Cache (vermeidet wiederholtes Hochladen)SendResult / EphemeralReply:1898-2068— Sendeergebnis und flüchtige AntwortAllgemeine Sende-Hilfen:3173-3326—send_slash_confirm/send_clarify/send_typing/send_multiple_imagesgateway/platforms/-Verzeichnis— signal / whatsapp_cloud / weixin / bluebubbles / yuanbao / qqbot…plugins/platforms/-Verzeichnis— Telegram / Discord / Slack (als Plugin)ADDING_A_PLATFORM.md— Leitfaden zum Hinzufügen einer PlattformPlatformRegistry:162— Registry (register / register_deferred / unregister)
Datenfluss
- Beim Start bringt
GatewayRunner(gateway/run.py:3029) die Adapter über_start_one_profile_adapter:9389hoch. - Der Adapter wird aus der
PlatformRegistry(gateway/platform_registry.py:162) nach Namen geladen; Deferred Loading ist erlaubt (zunächst billiger Platzhalter, echter Import erst bei Nutzung). - Der Adapter hört auf Plattform-Events, übersetzt sie in
MessageEvent:1759und übergibt sie an_handle_message:9947. - Der Agent erzeugt Streaming-Output; der Adapter übergibt ihn über die einheitliche Schnittstelle (
send:3008/send_draft) an die Plattform; Medien laufen über denCachedMedia:1638-Cache. - Plattform-Unterschiede (Nachrichtenlänge, Rich-Text, Bildobergrenzen) werden vollständig vom Adapter geschluckt – der Gateway-Kern bekommt davon nichts mit.
Zusammenfassung
Adapter = Übersetzer zwischen «Plattform-Dialekt ↔ einheitlichem Event». Eine neue Plattform bedeutet nur: von BasePlatformAdapter erben, wenige abstrakte Methoden implementieren und registrieren – siehe gateway/platforms/ADDING_A_PLATFORM.md. Telegram/Discord/Slack laufen über den Plugin-Pfad und werden gleich behandelt wie eingebaute Adapter.