Skip to content

Adaptateurs de plateforme

源码版本v2026.7.20

Responsabilité

Chaque plateforme (Telegram, Discord, Slack, Signal, WhatsApp, WeChat, QQ…) a un adaptateur qui traduit les événements natifs de la plateforme en un MessageEvent unifié, et les actions d'envoi unifiées en appels d'API de la plateforme. L'adaptateur hérite de BasePlatformAdapter et implémente un petit nombre de méthodes abstraites. Les adaptateurs peuvent venir de gateway/platforms/ intégré ou du plugin plugins/platforms/, tous enregistrés via PlatformRegistry.

Fichiers clés

Flux de données

  1. Au démarrage, GatewayRunner (gateway/run.py:3029) lance l'adaptateur via _start_one_profile_adapter:9389.
  2. L'adaptateur est requêté par nom dans PlatformRegistry (gateway/platform_registry.py:162), avec support du chargement différé (placeholder à peu de frais, véritable import seulement à l'usage).
  3. L'adaptateur écoute les événements de la plateforme, les traduit en MessageEvent:1759 et les confie à _handle_message:9947.
  4. L'agent produit une sortie en streaming ; l'adaptateur utilise l'interface unifiée (send:3008 / send_draft) pour livrer le contenu à la plateforme ; les médias passent par CachedMedia:1638 pour le cache.
  5. Les différences entre plateformes (longueur de message, texte riche, limite d'images) sont entièrement absorbées par l'adaptateur ; le cœur de la passerelle n'en sait rien.

Résumé

Adaptateur = traducteur entre « dialecte plateforme ↔ événement unifié ». Ajouter une plateforme consiste à hériter de BasePlatformAdapter, implémenter quelques méthodes abstraites et s'enregistrer ; voir gateway/platforms/ADDING_A_PLATFORM.md. Telegram/Discord/Slack passent par le chemin plugin, au même titre que les adaptateurs intégrés.

Site d'apprentissage communautaire non officiel. Basé sur le code source de NousResearch/hermes-agent (licence MIT).