GitHub Repo
Dify 社群回報代理歷史重播快取缺口,隨機工具呼叫 ID 可能增加推論成本
10 月 9 日的 Dify 社群回報指出,代理重建對話歷史時會重新產生工具呼叫 ID,可能削弱模型服務的提示快取重用。回報提出穩定 ID 的修正方向,但實際成本影響與正式修補狀態仍待確認。

Dify 的工具型代理出現一項值得部署團隊檢查的快取問題。10 月 9 日公開的社群回報指出,即使先前工具呼叫的內容沒有改變,系統在下一輪重建歷史時,仍會替它產生新的隨機識別碼。回報環境為從原始碼自架的 Dify 1.17.1,問題聚焦於 Function Calling 代理的歷史組裝流程。問題回報
回報指向 organize_agent_history:程式遍歷過去的工具名稱,以 uuid.uuid4() 建立 tool_call_id,再將同一識別碼用於工具呼叫及其結果。這能維持當輪的配對,但歷史訊息每次重播都會出現不同欄位。回報者提供的檢查方式,是讓代理使用工具後再連續對話,比較兩輪送出的請求中,同一筆歷史呼叫的 ID 是否變動。重現步驟與程式位置
技術上的風險來自提示快取比對前綴的方式。Anthropic 文件說明,快取涵蓋工具定義、系統提示與訊息;快取斷點之前的內容一旦改變,前綴雜湊也會改變。因此,若變動 ID 進入實際模型請求,就可能阻斷包含該筆呼叫的歷史前綴重用;更早的固定內容是否仍能命中,則取決於斷點配置。這項推論不能直接換算成所有供應商的帳單增幅。提示快取機制
回報建議改以歷史紀錄主鍵、工具索引及名稱推導穩定 UUID,兼顧跨輪一致性與同輪唯一性。截至查核,議題仍開啟;頁面中的技術回覆來自自動化機器人,不能視為維護者確認,也未提供受控的快取命中率或成本量測。修正建議與討論
工程團隊可先保存相鄰輪次的請求,確認差異是否只來自 ID,再對照服務端的快取讀取 token 與延遲。後續應觀察上游是否採納穩定 ID、工具結果配對是否通過驗證,以及其他提示組裝欄位是否仍會變動;這些證據才能判斷修正後的實際收益。