記憶管理器
這是什麼
負責協調內建與外部記憶提供者的元件。
白話解釋
想像一個研究實驗室,有自己的日誌本,由值班人員直接記錄,但這個實驗室最多只有一個合作實驗室可以與之共享結果——一名助理會影印每一頁新日誌並送到那邊,絕不會將同一份資料分送給兩個競爭的合作夥伴。MemoryManager 在 Hermes 內部扮演的就是這個助理的角色:內建筆記本由記憶工具直接寫入,而 MemoryManager 最多接入一個外部記憶服務——在每次對話輪次之前向它查詢相關資訊,並將筆記本剛剛儲存的內容副本轉發給它。
為什麼重要
MemoryManager 位於 Hermes 的內建記憶儲存與(可選)一個外部提供者之間——像 mem0、hindsight 或 supermemory 這樣的插件在此接入,而不是完全取代內建系統。當外部提供者啟用時,MemoryManager 也會將該提供者自己的工具注入代理可用的工具集中,讓模型可以直接呼叫它們,而不是透過一個抽象層。限制外部提供者最多一個,可以確保記憶後端的選擇是一個審慎的配置決定,而不是悄悄疊加的東西。
運作方式
MemoryManager 將它所獲得的元件拼接在一起(agent/memory_manager.py)——但它最多持有一個提供者,即一個外部插件;內建的 MEMORY.md/USER.md 儲存位於其外部,由記憶工具直接讀寫。在每次對話輪次之前,prefetch_all() 會向已註冊的提供者請求相關上下文;輪次結束後,sync_all() 會將完成的交換內容交給一個背景工作執行緒,因此一個緩慢或卡住的提供者——曾經觀察到一個掛起近五分鐘——絕不會凍結對話。每當內建記憶工具提交一次寫入,代理迴圈會單獨通知 MemoryManager,後者將該條目鏡像輸出到任何已啟用的外部提供者。來自每個提供者的工具架構會被合併到代理的工具集中。