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
class TurnContext:242-268— dataclass del contexto del turnodef build_turn_context:268-400— entrada de ensamblajecompose_user_api_content:44-79— composición del contenido del mensaje de usuariosubstitute_api_content:79-101— sustitución de placeholdersconsume_gateway_turn_context_notes:124-164— consume notas añadidas por el gateway y las inyecta en contenido multimodalreanchor_current_turn_user_idx:164-210— recoloca el índice del mensaje de usuario del turno (corrección tras compresión)estimación de progreso de compresión:190-242—_compression_made_progress/_should_run_preflight_estimateprompt_builder— composición del system prompt (referenciado en esta página)
Flujo de datos
- El bucle principal llama cada turno a
build_turn_context:268, obteniendo unTurnContext. compose_user_api_content(agent/turn_context.py:44) ensambla la entrada cruda del usuario en contenido de API.- 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íaappend_notes_to_multimodal_content. substitute_api_content(agent/turn_context.py:79) sustituye placeholders;drop_stale_api_contentlimpia contenido caducado.- 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. - Los
api_messagesensamblados entran alsubbucle 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.