因為 LLM 本身本質上是「無狀態(Stateless)」的,加上工程架構在 context 管理、記憶提取與衰減機制上遇到瓶頸。
從系統層面拆解,Agent 的失憶主要由以下 5 個核心機制漏洞 導致:
LLM 的 Context Window 就像人類的「短暫專注力視窗」。一旦對話輪次變多或工具回傳(Observation)的文字量太大,超過 Token 限制時,工程架構通常會採用以下策略處理:
即使 Context Window 足夠大(例如 128k 或 1M Tokens),「能塞進去」不等於「能精準注意到」。
研究證明,當上下文長度拉長時,LLM 對 Prompt 開頭與結尾的資訊關注度最高,而放在中間區域的記憶(例如第 5 輪工具呼叫得到的關鍵參數)注意力會呈 U 型大幅下降。 Agent 雖然「看得到」這段歷史,但推理時卻像忘了一樣忽視它。
當 Agent 將經驗或偏好存入向量資料庫(Vector DB)作為長期記憶時,失憶往往發生在 「檢索(Retrieval)」 階段:
user.prefer_tech = "Python",現在問「適合寫自動化指令碼嗎?」,RAG 可能無法拉回這條記憶。為了避免 Context 爆掉,許多系統會定期用一個小模型(如 GPT-4o-mini)將舊的對話紀錄「壓縮成摘要」。
在這個壓縮過程中,容易發生 資訊蒸發與幻覺:
192.168.1.100,PORT 為 8080。」許多 Agent 系統根本沒有設計 Memory Consolidation(記憶固化/回寫機制)。
在單次對話(Session)中,Agent 聽懂了你的風格偏好,但當你關掉視窗重新開啟新對話時:
| 失憶原因 | 現代工程解決方案 |
|---|---|
| Context 被裁切 | 採用 Hierarchical Memory(分層記憶),將 Prompt 拆為固定 System Rule、動態摘要與近兩輪 Raw Log。 |
| 中間遺忘 (Lost in Middle) | 使用 System Prompt Injection,將核心約束固定放置於 Prompt 的最末端(Recency Bias)區域。 |
| RAG 檢索不到 | 改用 Hybrid Search(向量 + 關鍵字 BM25),或引入 Knowledge Graph(知識圖譜) 確保結構化事實 100% 命中。 |
| 跨 Session 失憶 | 引入 Memory Management Agent,在背景非同步執行「對話提煉 $\rightarrow$ User Profile 更新 $\rightarrow$ 寫入 KV 庫」。 |