turn_context und Prompt-Zusammenbau
源码版本v2026.7.20
Verantwortung
Vor jedem API-Aufruf werden «Historien-Nachrichten + Nutzereingabe des aktuellen Turns + vom Gateway angehängter Kontext + Kompressions-Marker» zu den api_messages für den Provider zusammengebaut. TurnContext ist der Container dieses Turn-Produkts, build_turn_context der Assembly-Einstieg. Es injiziert außerdem die vom Gateway gesammelten Notes in multimodale Inhalte.
Schlüsseldateien
class TurnContext:242-268— Datenklasse des aktuellen Turn-Kontextsdef build_turn_context:268-400— Assembly-Einstiegcompose_user_api_content:44-79— Zusammenbau der Nutzernachrichten-Inhaltesubstitute_api_content:79-101— Platzhalter-Ersetzungconsume_gateway_turn_context_notes:124-164— Gateway-seitige Notes konsumieren und in multimodale Inhalte injizierenreanchor_current_turn_user_idx:164-210— Index der User-Nachricht im aktuellen Turn neu verankern (Korrektur nach Kompression)Kompressions-Fortschritts-Schätzung:190-242—_compression_made_progress/_should_run_preflight_estimateprompt_builder— System-Prompt-Zusammenbau (auf dieser Seite referenziert)
Datenfluss
- Die Hauptschleife ruft jeden Turn
build_turn_context:268auf und erhält einTurnContext. compose_user_api_content(agent/turn_context.py:44) baut die rohe Nutzereingabe zu API-Inhalten zusammen.- Hat das Gateway Notes gesammelt (aus Anhängen, Kontext-Hinweisen), holt
consume_gateway_turn_context_notes(agent/turn_context.py:124) sie heraus und injiziert sie überappend_notes_to_multimodal_content. substitute_api_content(agent/turn_context.py:79) ersetzt Platzhalter;drop_stale_api_contentbereinigt veraltete Inhalte.- Hat im vorherigen Turn eine Kompression stattgefunden, korrigiert
reanchor_current_turn_user_idx(agent/turn_context.py:164) die Position der aktuellen User-Nachricht in der Historie. - Die fertigen
api_messagestreten in dieAPI-Aufruf-Wiederholungs-Teilschleife:1227ein.
Zusammenfassung
turn_context ist die «Snapshot-Fabrik pro Turn»: Es friert dynamischen Kontext zu einer verschickbaren Struktur ein. Es arbeitet mit der Kontext-Kompression zusammen – sobald die Kompression die Historie umgeschrieben hat, richtet turn_context den Zeiger wieder aus.