Entrée et flux de démarrage
源码版本v2026.7.20
Responsabilité
Transformer « une commande hermes / un message de la passerelle » en « un agent qui tourne en mémoire ». La couche d'entrée est délibérément fine — run_agent.py ne fait que transférer et assembler le CLI, la véritable injection de dépendances a lieu dans agent_init.py. Ainsi la passerelle, le TUI, le CLI, ACP et cron partagent le même chemin d'initialisation.
Fichiers clés
main de la passerelle:22965— entrée du processus passerelle, fonctionmain()classe AIAgent:400-497— classe d'entrée légère,__init__ne fait que stocker les paramètresAIAgent.__init__ forwarder:497-560— commentaire explicite : « Forwarder — see agent.agent_init.init_agent »méthode run_conversation:6350— méthode d'instanceAIAgent.run_conversation, appellerun_conversation au niveau module:588CLI main:6434— entrée CLIinit_agent:276-400— fonction principale d'injection de dépendances_resolve_compression_threshold:93-127— exemple de parsing de config au démarragehermes_bootstrap.py— amorce environnement/chemins la plus précoce (racine du dépôt)
Flux de données
- L'utilisateur lance
hermes(CLI) ou la passerelle démarre viamain()(run_agent.py:22965). - Le processus passe par
hermes_bootstrap.pypour corriger chemins et environnement, puis entre dansCLI main:6434ou la boucle de la passerelle. - Construction d'une instance
AIAgent:400, dont__init__forward versinit_agent:276. init_agentrésout provider, toolsets, seuils de compression,extra_bodydes providers personnalisés, etc., et assemble un objet agent exécutable.- La passerelle, dans
GatewayRunner(gateway/run.py), détient cet agent et alimente chaque message entrant àrun_conversation:588.
Résumé
La couche d'entrée est « transfert + assemblage », sans logique métier. AIAgent est une coquille fine, init_agent est le véritable centre d'assemblage. Une fois cette chaîne comprise, la boucle principale de l'agent est simplement « ce qui se passe quand on alimente un message ».