Skip to content

Núcleo del gateway

源码版本v2026.7.20

Responsabilidad

El gateway es el puente entre el agent y el mundo exterior: recibe mensajes de cada plataforma (Telegram/Discord/Slack/Signal/WeChat…), los convierte a un MessageEvent unificado que entrega al agent, y traduce la salida en streaming del agent en acciones de envío a cada plataforma. gateway/run.py es el proceso principal de esta capa (GatewayRunner), y coordina adaptadores, sesiones, consumo de streams, libro de entrega, hooks y latido de cron.

Archivos clave

Flujo de datos

  1. main() (gateway/run.py:22965) arranca GatewayRunner.
  2. _start_one_profile_adapter:9389 levanta uno a uno los adaptadores de plataforma (ver Adaptadores de plataforma).
  3. El adaptador recibe eventos nativos de la plataforma y los traduce a un MessageEvent unificado (ver gateway/platforms/base.py:1759).
  4. _handle_message (gateway/run.py:9947) despacha: comprobación de autorización, resolución de sesión, enrutado de slash commands, o entrega a _handle_message_with_agent (gateway/run.py:11956).
  5. Este último llama a run_conversation:588 del agent y conecta el callback de streaming al GatewayStreamConsumer:83.
  6. La salida en streaming edita progresivamente el mensaje de la plataforma a través del consumidor; el estado final lo anota delivery_ledger para que un crash no pierda la respuesta final.
  7. La inspección y el latido de cron corren en segundo plano cada 60s (gateway/run.py:22246 / gateway/run.py:22335).

Resumen

El núcleo del gateway es «bus de eventos + puente de streaming»: la abstracción unificada de MessageEvent oculta las diferencias entre plataformas, GatewayStreamConsumer puentea el callback síncrono del agent al envío asíncrono en cada plataforma, y delivery_ledger garantiza que el estado final no se pierda. Está desacoplado del agent: el agent solo corre el bucle; los detalles de entrega viven todos en el gateway.

Sitio de aprendizaje comunitario no oficial. Basado en el código fuente de NousResearch/hermes-agent (licencia MIT).