Skip to content

Bucle principal del agente

源码版本v2026.7.20

Responsabilidad

run_conversation es el corazón de Hermes: recibe un mensaje del usuario, llama al modelo y a las herramientas de forma repetida hasta que se agota el presupuesto de iteración o la tarea se completa. Coordina también la construcción del contexto, el despacho de herramientas, la decisión de parada y el fallback ante fallos.

El archivo ocupa unas 5800 líneas con alta densidad lógica; esta página solo cubre la línea principal; los detalles quedan en subpáginas.

Archivos clave

Flujo de datos

  1. run_agent.py AIAgent es un reenviador fino; la inyección de dependencias real ocurre en init_agent.
  2. El llamador pasa user_message; run_conversation primero pasa por build_turn_context para ensamblar el contexto del turno (api_messages).
  3. Entra al bucle while principal: comprobar interrupciones → decrementar presupuesto (iteration_budget.consume()) → construir/sanitizar api_messages → precompresión → vaciar texto /steer → agregación MoA → entrar al subbucle de reintentos de API.
  4. Tras la respuesta del modelo, valida y procesa finish_reason; en caso de fallo, ejecuta agent._try_activate_fallback().
  5. Si se alcanza el umbral de compresión, llama a context_compressor para liberar espacio.
  6. Al salir del bucle (presupuesto agotado / tarea completada / interrupción) devuelve el mensaje final, que la capa de gateway entrega (ver capa de gateway).

Resumen

El bucle principal solo orquesta: impulso de turnos, control de presupuesto, reintentos y fallback. La capacidad real viene de las herramientas de la capa de capacidades y las habilidades; la entrega multiplataforma la gestiona la capa de gateway; la autoevolución la impulsa el bucle de aprendizaje.

Para la presentación oficial en chino, ver README.zh-CN y website/i18n/zh-Hans/.

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