Skip to content

Boucle principale de l'agent

源码版本v2026.7.20

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

Flux de données

  1. run_agent.py AIAgent est un transmetteur léger ; l'injection réelle des dépendances se fait dans init_agent.
  2. L'appelant passe un user_message, et run_conversation passe d'abord par build_turn_context pour assembler le contexte de ce tour (api_messages).
  3. Entrée dans la boucle while principale : check d'interruption → décrément du budget (iteration_budget.consume()) → construction/nettoyage des api_messages → pré-compression → drain du texte /steer → agrégation MoA → entrée dans la sous-boucle de retry d'appel API.
  4. Au retour du modèle : validation de la réponse et traitement du finish_reason ; en cas d'échec, appel à agent._try_activate_fallback().
  5. Au seuil de compression, passage par context_compressor pour récupérer de l'espace.
  6. À 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/.

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