turn_context とプロンプト組み立て
源码版本v2026.7.20
職務
毎ラウンドの API 呼び出し前に、「履歴メッセージ + このラウンドのユーザー入力 + ゲートウェイ側付加コンテキスト + 圧縮マーカー」を組み立て、provider に送る api_messages を生成する。TurnContext がこのラウンドの産物コンテナ、build_turn_context が組み立て入口で、ゲートウェイが集めた notes をマルチモーダル内容に注入する役も持つ。
主要ファイル
class TurnContext:242-268— このラウンドのコンテキストデータクラスdef build_turn_context:268-400— 組み立て入口compose_user_api_content:44-79— ユーザーメッセージ内容の組み立てsubstitute_api_content:79-101— プレースホルダー置換consume_gateway_turn_context_notes:124-164— ゲートウェイ側 notes を消費しマルチモーダル内容に注入reanchor_current_turn_user_idx:164-210— このラウンドのユーザーメッセージのインデックス再位置決め(圧縮後修正)圧縮進捗推定:190-242—_compression_made_progress/_should_run_preflight_estimateprompt_builder— システムプロンプト組み立て(本ページで参照)
データフロー
- 主ループは毎ラウンド
build_turn_context:268を呼び、TurnContextを得る。 compose_user_api_content(agent/turn_context.py:44) がユーザー生入力を API 内容に組み立てる。- ゲートウェイ側に notes が蓄積されていれば(添付、コンテキストヒント)、
consume_gateway_turn_context_notes(agent/turn_context.py:124) が取り出し、append_notes_to_multimodal_contentで注入する。 substitute_api_content(agent/turn_context.py:79) がプレースホルダーを置換し、drop_stale_api_contentが古い内容を掃除する。- 前のラウンドで圧縮が起きていれば、
reanchor_current_turn_user_idx(agent/turn_context.py:164) がこのラウンドのユーザーメッセージの履歴中位置を修正する。 - 組み立てられた
api_messagesはAPI 呼び出しリトライ副ループ:1227に入る。
まとめ
turn_context は「毎ラウンドのスナップショット工場」:動的コンテキストを送信可能な構造に固定化する。コンテキスト圧縮と協調し、圧縮が履歴を書き換えた後に turn_context がポインタを再整列させる。