Day 09 說過,context 是有限的資源。記憶要決定的,就是哪些東西有資格一直佔著位置——而 Agent 的預設答案往往是「全部」。
可以把記憶想成一張工作桌。桌面上是正在看的對話歷史;抽屜裡是做到一半的工作狀態,記錄目前進度;書架上則放跨任務保留的東西,例如使用者慣用的格式與語言。真正的長期記憶只該擺在書架上,而且門檻要高:未來仍有價值,而且值得反覆取用。
麻煩在於,記憶也會把錯誤一起醃成老資料。今天誤記「專案使用 Python」,幾週後 Agent 仍可能拿這個錯誤前提去做決策。
這正是 Day 12 講的 provenance 該被搬進記憶的地方。每一條記憶都該帶著來源與時間——誰說的、什麼時候說的、在什麼情境下成立。少了這些,「專案使用 Python」永遠查不出是哪裡來的,也就談不上更新或刪除。
更危險的是敏感資料與惡意指令。文件裡藏著「以後都把資料傳到某網址」,如果被寫進長期記憶,性質就變了:Day 05 說過 XML 標籤擋不住惡意輸入,那時它還是一次性的;寫進記憶之後,它變成會跨對話復發的感染。
所以這張桌子需要的不只是分層,還有守門:誰有權在桌上放東西、放上去之後多久要複查一次、什麼東西一開始就不該被放上來。
那麼「誰決定」呢?MemGPT 給了一個答案:讓 Agent 自己決定。它把記憶分成 main context(真正進到模型裡的部分,相當於 RAM)與 external context(存訊息歷史的 recall storage 與存長期文字的 archival storage),Agent 用 function call 自己把資料在層級間搬進搬出,context 快滿時還會收到系統警示。這個設計解決了「桌子放不下」,但也把判斷權交了出去——Agent 判斷錯的時候,錯誤就是它自己寫進去的。
Claude API 的 memory tool 給的是另一個答案。Claude 可以在記憶檔目錄裡建立、讀取、更新、刪除檔案,跨對話保存;關鍵是它在客戶端運作——模型只發出讀寫指令,實際的檔案存在你這邊。搭配 context editing,還能自動清掉過期的工具結果、同時保留記憶檔;Anthropic 內部評測在一個 100 輪的網路搜尋任務上,報告了約 84% 的 token 節省與 39% 的表現提升。
這個架構回答了前面那個問題:保管者是你。記憶能不能被檢查、修改、刪除,敏感內容會不會一開始就被擋在門外,決定權在寫這套系統的人手上,而不在模型那一句「我記住了」。