Skip to content

turn_context とプロンプト組み立て

源码版本v2026.7.20

職務

毎ラウンドの API 呼び出し前に、「履歴メッセージ + このラウンドのユーザー入力 + ゲートウェイ側付加コンテキスト + 圧縮マーカー」を組み立て、provider に送る api_messages を生成する。TurnContext がこのラウンドの産物コンテナ、build_turn_context が組み立て入口で、ゲートウェイが集めた notes をマルチモーダル内容に注入する役も持つ。

主要ファイル

データフロー

  1. 主ループは毎ラウンド build_turn_context:268 を呼び、TurnContext を得る。
  2. compose_user_api_content(agent/turn_context.py:44) がユーザー生入力を API 内容に組み立てる。
  3. ゲートウェイ側に notes が蓄積されていれば(添付、コンテキストヒント)、consume_gateway_turn_context_notes(agent/turn_context.py:124) が取り出し、append_notes_to_multimodal_content で注入する。
  4. substitute_api_content(agent/turn_context.py:79) がプレースホルダーを置換し、drop_stale_api_content が古い内容を掃除する。
  5. 前のラウンドで圧縮が起きていれば、reanchor_current_turn_user_idx(agent/turn_context.py:164) がこのラウンドのユーザーメッセージの履歴中位置を修正する。
  6. 組み立てられた api_messagesAPI 呼び出しリトライ副ループ:1227 に入る。

まとめ

turn_context は「毎ラウンドのスナップショット工場」:動的コンテキストを送信可能な構造に固定化する。コンテキスト圧縮と協調し、圧縮が履歴を書き換えた後に turn_context がポインタを再整列させる。

非公式コミュニティ学習サイト。MIT ライセンスの NousResearch/hermes-agent ソースに基づく。