執行時

重試與回退

當模型或工具路徑失敗時的復原操作模式。

重試與回退

這是什麼

當模型或工具路徑失敗時的復原操作模式。

白話解釋

建築物的備用發電機在電力閃爍的瞬間啟動,因此裡面的人永遠不會經歷停電,即使電力現在來自不同的來源。Hermes 以同樣的方式保持一線備用模型待命:當當前正在執行——回答問題、呼叫工具——的模型出問題時,另一個已經準備就緒的模型會接手,對話不會中斷。

為什麼重要

單一次不穩定的提供者回應不必讓整個 cron 執行或對話崩潰——失敗的模型呼叫可以在對話輪次完全放棄之前重試,或重新路由到備用提供者。對於一個在夜間執行任務的無人值守 VPS 部署來說,這就是一次短暫的 API 問題與直到早上才有人注意到的遺漏每日簡報之間的區別。同樣的模式也涵蓋失敗的工具呼叫,因此一次失敗的網路搜尋不會自動結束一個原本可以復原的對話輪次。

運作方式

每次失敗的 API 呼叫都會通過 classify_api_erroragent/error_classifier.py)處理,該函數將其分類到十多個原因之一——速率限制、計費耗盡、伺服器超載、上下文溢出、找不到模型——每個都帶有自己的復原提示:重試、輪換憑證、壓縮或回退。直接的重試使用帶抖動、且感知提供者的退避策略(agent/retry_utils.py),因此多個工作階段存取同一個受限提供者時不會全部同步重試。當重試耗盡時,try_activate_fallback()agent/chat_completion_helpers.py)會遍歷使用者配置的備用提供者/模型配對鏈。如果所有提供者都已耗盡且呼叫仍然失敗,則訊息會透過異常冒泡到 agent/conversation_loop.py