Skip to content

turn_context y composición del prompt

源码版本v2026.7.20

Responsabilidad

Antes de cada llamada a la API, ensambla «historial + entrada del usuario de este turno + contexto adicional del gateway + marcas de compresión» en los api_messages que se envían al provider. TurnContext es el contenedor del producto de este turno; build_turn_context es la entrada de ensamblaje. También inyecta las notas que el gateway recogió dentro del contenido multimodal.

Archivos clave

Flujo de datos

  1. El bucle principal llama cada turno a build_turn_context:268, obteniendo un TurnContext.
  2. compose_user_api_content (agent/turn_context.py:44) ensambla la entrada cruda del usuario en contenido de API.
  3. Si el gateway ha acumulado notas (de adjuntos, indicaciones de contexto), consume_gateway_turn_context_notes (agent/turn_context.py:124) las extrae e inyecta vía append_notes_to_multimodal_content.
  4. substitute_api_content (agent/turn_context.py:79) sustituye placeholders; drop_stale_api_content limpia contenido caducado.
  5. Si el turno anterior sufrió compresión, reanchor_current_turn_user_idx (agent/turn_context.py:164) corrige la posición del mensaje de usuario actual en el historial.
  6. Los api_messages ensamblados entran al subbucle de reintentos de API:1227.

Resumen

turn_context es la «fábrica de instantáneas por turno»: solidifica el contexto dinámico en una estructura enviable. Coordina con la compresión de contexto: tras reescribir el historial, turn_context recoloca los punteros para que vuelvan a apuntar correctamente.

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