Skip to content

turn_context 與提示組裝

源码版本v2026.7.20

職責

在每一輪 API 呼叫前,把「歷史訊息 + 本輪使用者輸入 + 網關側附加上下文 + 壓縮標記」裝配成發給 provider 的 api_messagesTurnContext 是這輪產物的容器,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_messages 進入 API 呼叫重試子迴圈:1227

小結

turn_context 是「每輪的快照工廠」:把動態上下文固化為一個可發送的結構。它和上下文壓縮協同——壓縮改寫歷史後,turn_context 負責把指標重新對齊。

非官方社群學習站,內容以 MIT 授權的 NousResearch/hermes-agent 原始碼為依據。