Boucle principale de l'agent
Responsabilité
run_conversation est le cœur d'Hermes : recevoir un message utilisateur, appeler le modèle et les outils en boucle jusqu'à épuisement du budget d'itération ou achèvement de la tâche. Elle coordonne également la construction du contexte, la distribution des outils, l'évaluation des conditions d'arrêt et le repli en cas d'échec.
Le fichier compte environ 5800 lignes, à forte densité logique — cette page ne couvre que la ligne principale, les détails vont dans les sous-pages.
Fichiers clés
entrée run_conversation:588-720— signature, initialisation et préparation avant boucleboucle principale while:721-760— conditionapi_call_count < agent.max_iterations and agent.iteration_budget.remaining > 0, inclut le grace callsous-boucle de retry API:1227-1280—while retry_count < max_retriesbuild_turn_context— assemblage du contexte de chaque tourprompt_builder— assemblage du prompt systèmemoa_loop— chemin d'agrégation Mixture-of-Agentscontext_compressor— compression de l'historique au seuilIterationBudget— cœur du comptage de budget
Flux de données
run_agent.py AIAgentest un transmetteur léger ; l'injection réelle des dépendances se fait dansinit_agent.- L'appelant passe un
user_message, etrun_conversationpasse d'abord parbuild_turn_contextpour assembler le contexte de ce tour (api_messages). - Entrée dans la boucle
whileprincipale : check d'interruption → décrément du budget (iteration_budget.consume()) → construction/nettoyage desapi_messages→ pré-compression → drain du texte/steer→ agrégation MoA → entrée dans la sous-boucle de retry d'appel API. - Au retour du modèle : validation de la réponse et traitement du
finish_reason; en cas d'échec, appel àagent._try_activate_fallback(). - Au seuil de compression, passage par
context_compressorpour récupérer de l'espace. - À la sortie de la boucle (budget épuisé / tâche achevée / interruption), renvoie le message final, délivré par la couche passerelle (voir Couche passerelle).
Résumé
La boucle principale ne fait qu'orchestrer : pilotage par tour, gestion du budget, retry et repli. La vraie capacité vient des outils de la couche capacités et des compétences, la livraison multiplateforme est déléguée à la couche passerelle, et l'auto-évolution est portée par la boucle d'apprentissage.
Pour une introduction officielle en chinois, voir README.zh-CN et website/i18n/zh-Hans/.