讓 Agent 學會記住:Agent 記憶系統的設計課
今天最強的 AI Agent 都有一個共同的毛病:每次對話都像第一次見面。你上週教它「我們家的部署流程是先跑 canary 再全量」,這週它照樣問你一模一樣的問題。
產業界花了幾年時間,想把這個問題塞進更大的 context window——Gemini 號稱 200 萬 token、Meta 的 Llama 4 Scout 甚至喊到 1000 萬——但史丹佛的「Lost in the Middle」研究早就證明:模型對塞在上下文中段的資訊幾乎視而不見,準確率不是緩慢下降,而是斷崖式崩跌。更大的窗戶,並沒有帶來更好的記性。
更現實的數字是:有產業分析指出,2025 年企業 AI 專案失敗的原因中,高達 65% 可歸因於「context drift」——Agent 在多步驟推理中途把任務脈絡弄丟了。每次都把背景資料重新塞進 prompt,既燒錢又不可靠。
真正的問題從來不是「一次能塞多少字」,而是「怎麼像人一樣記住該記的事」。記憶系統,就是把「工具」變成「同事」的那一層。
地基一:史丹佛 Generative Agents——記憶流與反思
2023 年,史丹佛團隊(Park 等人,發表於 UIST '23)的《Generative Agents》給 Agent 記憶上了第一堂課。論文裡 25 個小鎮居民 Agent,每個都有一條「記憶流」(memory stream):把所有經歷記成自然語言片段,每個片段帶建立時間與最後存取時間。
檢索時用三個分數加權:近因(recency,剛發生的事優先)、重要性(importance,LLM 自己打 1–10 分)、相關性(relevance,與當下查詢的語意相似度)。更關鍵的是「反思」機制:當累積的重要分數超過門檻,Agent 會停下來把近期記憶提煉成更高層次的洞察(例如從多次觀察綜合出「Klaus Mueller 對研究非常投入」),形成新的記憶節點再掛回記憶流。
消融實驗證明:觀察、規劃、反思三者缺一不可,少了任何一個,Agent 的行為可信度都明顯下降。這套設計後來成為幾乎所有記憶系統的祖師爺。
地基二:柏克萊 MemGPT——把 LLM 當作業系統
同一年稍晚,UC Berkeley 的 Packer 等人發表《MemGPT: Towards LLMs as Operating Systems》(ICLR 2024),提出了一個更工程化的類比:把 context window 當成虛擬記憶體來管理。
三層架構如圖一:
- 核心記憶(Core Memory):像 CPU 的 RAM/暫存器,永遠駐留在上下文裡,存放 persona 與使用者資訊,大小約數 KB,Agent 自己用工具呼叫改寫。
- 回憶記憶(Recall Memory):像讀取緩衝區,存放近期對話歷史,可搜尋但 Agent 不能改。
- 封存記憶(Archival Memory):像磁碟,無限的外部儲存,Agent 明確讀寫,走向量相似度檢索。
最大的設計洞見是:Agent 自己是記憶的作者。不是外部程式決定什麼該記,而是 Agent 透過 core_memory_append、archival_memory_insert 這類工具呼叫,自己管理記憶的分頁。後來這個團隊把 MemGPT 商業化為 Letta,還加上「sleep-time compute」——讓一個非同步 Agent 趁閒在背景整理記憶,主流程完全不受影響。
認知架構的統一語言:CoALA
Sumers 等人的《Cognitive Architectures for Language Agents》(CoALA)則試圖給這一切一個統一框架:記憶、行動、決策三個模組。這篇論文的價值不在某個新技巧,而在於它把「記憶系統」正式列為 Agent 架構的一級公民,而不是 RAG 的附屬品。從此談 Agent 架構,記憶就跟規劃、工具使用並列。
2024–2026:記憶進入生產級
學界打完地基,產業界開始拚效能與正確性:
- Mem0(ECAI 2025):寫入時就做事實抽取與合併(add/update/delete),在 LoCoMo 基準上比 OpenAI 的記憶方案相對提升 26%,p95 延遲降低 91%、token 成本省下 90% 以上。
- Zep/Graphiti:雙時態知識圖譜——每條邊同時記錄「世界時間」(valid_at/invalid_at)與「交易時間」(created_at/expired_at),新事實讓舊邊失效而非刪除,記憶終於有了時間感。
- HippoRAG:受海馬迴啟發的圖式長期記憶,把個人化 PageRank 用在知識圖譜上做檢索。
- A-MEM(NeurIPS 2025):Zettelkasten 式原子筆記,新記憶會回頭更新舊筆記的表徵——記憶會「演化」,而不是只會追加。
- Letta 的睡眠整理:把記憶重寫工作丟給非同步 Agent,呼應了 Generative Agents 的反思機制,只是搬到生產環境。
有趣的是 Letta 自己 2025 年 8 月的基準測試結論:給 Agent 一套好用的檔案工具(grep/open/search),在 LoCoMo 上拿到 74.0%,勝過一堆花俏的檢索機制。工具使用能力,有時比檢索演算法本身更重要——記憶系統評測,終究要回到終端任務表現。
如圖二,完整的記憶生命週期是一個循環:寫入 → 整理(反思)→ 封存 → 檢索 → 行動,每一步都在為下一步累積。
實作要點:設計記憶系統的五個決策
- 分層:核心(永駐)、回憶(近期)、封存(長期)。分層不是為了好看,而是為了成本——永駐的東西,每個 token 都在燒錢。
- 誰決定寫入:MemGPT 派讓 Agent 自己寫;Mem0 派在寫入時自動抽取事實。前者靈活、後者省心。實務上可以混搭:關鍵事實自動抽取,策略性筆記讓 Agent 自己寫。
- 混合檢索:向量相似度+關鍵字+近因衰減,單一訊號都不夠用。
- 時間感知:事實會過期。Zep 的雙時態邊是目前最乾淨的解法;退一步,至少要記錄時間戳,檢索時做衰減加權。
- 用終端任務評估:不要只評檢索召回率,要評「有記憶的 Agent 能不能把任務做完」。LoCoMo、LongMemEval 是目前常用的基準,但各家自報數字用的評判模型不同,不能直接拿來比較。
一個最小可用的記憶介面長這樣(Python 概念碼):
class AgentMemory:
def write(self, content: str, importance: float, tags: list[str]):
"""寫入一條記憶:抽取事實、打分、存入封存層"""
def recall(self, query: str, k: int = 5) -> list[Memory]:
"""混合檢索:向量相似度 × 近因衰減 × 重要性"""
def reflect(self):
"""背景任務:把近期記憶提煉成高層洞察(sleep-time compute)"""
重點:write 和 reflect 都應該是非同步的,別讓記憶整理卡住主迴圈。
結論
記憶系統正在從「nice to have」變成 Agent 技術棧的標配。史丹佛教會我們反思,柏克萊教會我們分層管理,而 2026 年的戰場是:誰能在生產環境裡又快、又省、又準地記住該記的事。
如果你正在建 Agent,先問自己三個問題:什麼該永駐?什麼該在寫入時抽取?事實過期了怎麼辦?答得出來,你的 Agent 就已經贏過七成對手。
參考來源
- Park et al., Generative Agents: Interactive Simulacra of Human Behavior(史丹佛,UIST '23)— arxiv.org/abs/2304.03442
- Packer et al., MemGPT: Towards LLMs as Operating Systems(UC Berkeley,ICLR 2024)— arxiv.org/abs/2310.08560
- Sumers et al., Cognitive Architectures for Language Agents(CoALA)— arxiv.org/abs/2309.02427
- Chhikara et al., Mem0: Building Production-Ready AI Agents with Scalable Long-Term Memory — arxiv.org/abs/2504.19413
- Zep/Graphiti 雙時態知識圖譜 — arxiv.org/html/2501.13956v1
- Xu et al., A-MEM: Agentic Memory for LLM Agents(NeurIPS 2025)— arxiv.org/abs/2502.12110
- Guti et al., HippoRAG: Neurobiologically Inspired Long-Term Memory for LLMs — arxiv.org/abs/2405.14831
- Avi Goldfinger, Why AI Agents Are Finally Learning to Remember — Medium
沒有留言:
張貼留言