對話輪次終結器
這是什麼
在工具與模型迴圈結束後保存輸出、同步記憶並整理完成結果的後處理層。
白話解釋
想像航空機組的落地後檢查清單:乘客下機後,仍要記錄飛行時間、回報機械問題,並在飛機結束當天任務前,把注意事項留給下一組機員。Hermes 的對話輪次終結器也會執行這類收尾;模型與工具的來回停止後、結果交還提問者之前,它會先完成必要記錄與清理。
為什麼重要
本輪模型與工具呼叫完成後,finalize_turn 會把輸出寫進工作階段歷史、將值得保留的內容交給記憶管理器同步,並整理實際回傳給提問者的結果。若缺少可靠的收尾,cron 工作即使完成任務,也可能沒有留下 Hermes 日後能找回的記錄。保留與隱私規則通常也在輸出進入持久工作階段狀態前,於這個階段套用。
運作方式
agent/turn_finalizer.py 的 finalize_turn 會在工具呼叫迴圈結束後執行,不論迴圈因何停止。它先檢查迭代預算是否耗盡;若已耗盡,可能保留驗證階段已產生但暫未送出的答案,或更常見地再向模型要求一次不使用工具的摘要,避免回覆留空。對話軌跡保存、任務資源清理與工作階段持久化各自在獨立 try/except 中執行,因此寫入失敗或瀏覽器清理停滯,不會抹掉其他步驟已保存的回覆;問題會收集到 cleanup_errors。它還能附加檔案編輯悄悄失敗的頁尾,或以白話說明替換可疑地過短或空白的回覆。transform_llm_output 與 post_llm_call 外掛掛鉤會先處理輸出,之後才在背景排入記憶或技能檢視;on_session_end 最後才執行。
具體範例
夜間 cron 工作要求 Hermes 整理共用收件匣並寫入 inbox-summary.md。工具呼叫完成並產生收尾摘要後,終結器會保存對話軌跡、關閉已建立的瀏覽器工作階段、把交流寫進工作階段歷史,並檢查是否有檔案編輯悄悄失敗。若發現失敗,它會在摘要後附上具體未保存檔名,不讓看似肯定的模型摘要掩蓋問題。最後,回覆文字、token 數與成本估算會送回觸發工作的頻道,背景程序再判斷哪些內容值得保存到長期記憶。
如何連結
「對話輪次終結器」屬於「執行期」系列。最直接相關的概念包括:「工具執行器」、「模型呼叫」、「個人作業系統」。這些連結描述教學關係,不取代來源證據。
來源證據
agent/turn_finalizer.py#<file>— 結構性來源;只確認來源檔關聯,不單獨證明特定呼叫順序。
工作流程
- 目前尚無第一輪工作流程對應;此概念仍透過文章與來源證據出現在知識庫圖譜中。
