turn_context et assemblage du prompt
源码版本v2026.7.20
Responsabilité
Avant chaque appel API, assemble « messages d'historique + entrée utilisateur du tour + contexte additionnel côté passerelle + marqueurs de compression » en api_messages envoyé au provider. TurnContext est le conteneur produit pour ce tour, build_turn_context en est l'entrée d'assemblage. Il injecte aussi dans le contenu multimodal les notes collectées par la passerelle.
Fichiers clés
class TurnContext:242-268— dataclass du contexte du tourdef build_turn_context:268-400— entrée d'assemblagecompose_user_api_content:44-79— assemblage du contenu du message utilisateursubstitute_api_content:79-101— substitution de placeholdersconsume_gateway_turn_context_notes:124-164— consomme les notes additionnelles de la passerelle et les injecte dans le contenu multimodalreanchor_current_turn_user_idx:164-210— repositionne l'index du message utilisateur du tour (correction post-compression)estimation progression compression:190-242—_compression_made_progress/_should_run_preflight_estimateprompt_builder— assemblage du prompt système (référencé ici)
Flux de données
- La boucle principale appelle
build_turn_context:268à chaque tour et obtient unTurnContext. compose_user_api_content(agent/turn_context.py:44) assemble l'entrée utilisateur brute en contenu API.- Si la passerelle a accumulé des notes (pièces jointes, indices de contexte),
consume_gateway_turn_context_notes(agent/turn_context.py:124) les récupère et les injecte viaappend_notes_to_multimodal_content. substitute_api_content(agent/turn_context.py:79) remplace les placeholders ;drop_stale_api_contentnettoie le contenu périmé.- Si le tour précédent a déclenché une compression,
reanchor_current_turn_user_idx(agent/turn_context.py:164) corrige la position du message utilisateur du tour dans l'historique. - Les
api_messagesassemblés entrent danssous-boucle de retry API:1227.
Résumé
turn_context est la « fabrique d'instantanés par tour » : il fige un contexte dynamique en une structure envoyable. Il travaille de pair avec la compression de contexte — une fois la compression effectuée, turn_context est chargé de réaligner les pointeurs.