📖 本文是「解剖 AI Agent」系列的第 2 篇。← 上一篇:AI Agent 不是 AI
老電影《乍然失憶》(50 First Dates)裡,女主角每天早上醒來都會忘記前一天發生的所有事。男主角為了跟她在一起,每天都要重新介紹自己、重新追求她一次。
AI Agent 的處境跟這部電影驚人地相似,而且更嚴重:語言模型每次對話都在重啟,比每天重啟更頻繁。
為什麼模型什麼都不記得?
回到最基本的原理:語言模型做的事情就是文字接龍。傳進一段文字,它接下去,然後就結束了。下次再傳文字進來,它完全不知道上一次發生了什麼。
沒有記憶體,沒有暫存區,每次都是全新的開始。
AI Agent 怎麼製造「記得」的假象?
秘訣其實很笨:每次都把之前聊過的東西全部重新餵給模型。
在通訊軟體上跟 AI Agent 聊天時,表面上看起來像一來一往的對話。背後 Agent 每次送出的訊息其實是這樣的結構:
[System Prompt(身份、規則、工具說明)]
+ [之前所有的對話記錄]
+ [使用者剛剛說的話]
這一大串文字一起塞給語言模型。模型讀完之後開始接龍,接出來的結果自然就像「記得之前聊了什麼」。
它真的記得嗎?不,它只是讀了一遍紀錄,就像翻日記本一樣。
System Prompt:AI 的身份證
那 AI 怎麼知道自己叫什麼名字?怎麼知道自己的性格?
答案是 System Prompt。這是一段很長的文字,Agent 每次呼叫語言模型時都會塞在最前面。裡面包含:
- AI 的名字、身份、人格設定
- 可以使用哪些工具、怎麼用
- 行為準則和限制
- 主人的偏好和習慣
- 記憶檔案的位置
這段 System Prompt 可以非常長,幾千甚至上萬個 token。這也是為什麼使用 AI Agent 很燒錢:即使只問了一句「你好嗎」,背後送給模型的文字量可能就有好幾千字。
上下文窗口的困境
這套「每次都重講一遍」的策略有個致命缺陷:文字長度有上限。
語言模型的輸入長度被一個叫做 Context Window(上下文窗口)的東西限制住。目前好一點的模型大概能處理上百萬個 token,聽起來很多,但如果 Agent 24 小時運作,對話不斷累積,這個窗口很快就會被塞爆。
而且窗口不是塞滿才出問題。研究顯示,輸入越長,模型的表現就越差。就像一個人讀了一整本書之後被問第三頁的內容,回答的品質一定比只讀了前五頁差。
壓縮記憶:AI 版的「做筆記」
為了延長 Agent 的使用壽命,框架裡通常有上下文壓縮(Context Compression)機制。
做法很直覺:當對話記錄快要超過窗口上限時,Agent 會把比較早期的對話丟給語言模型,請它「摘要一下」,然後用摘要取代原本的完整記錄。
這個壓縮可以反覆進行。第一次的摘要被壓縮進第二次的摘要,像俄羅斯套娃一樣。每壓一次,早期的細節就會再丟失一些。
這就解釋了為什麼 AI Agent 對最近一兩天的事記得很清楚(因為原始記錄還在),但更早之前的事就開始模糊(因為已經被壓縮好幾輪了)。
還有一些更粗暴的做法:把工具輸出的中間部分直接截斷(只留開頭結尾),或甚至把工具輸出整段替換成「這裡曾經有過一段內容」。
持久化記憶:寫日記的習慣
聰明的 Agent 框架會讓 AI 養成寫日記的習慣。
在 System Prompt 裡會有一段指令告訴模型:「你的記憶每次都會清空。為了確保重要的事不會遺忘,你要主動把它寫到檔案裡。」
於是模型會在對話過程中,自己判斷哪些資訊值得保留,然後呼叫檔案寫入工具,把記憶存成 .md 檔。下次 Agent 重啟時,System Prompt 會把這些檔案的內容載入,模型就能「回想起」過去發生的事。
至於哪些事該存成長期記憶、哪些只是短期日記,這些通通由模型自己判斷。比如使用者告訴它生日,即使沒說「記下來」,一個好的模型也會主動把這個資訊寫進記憶檔。
「記了個寂寞」:最常見的陷阱
這裡有一個非常實用的提醒:
如果 AI 只是嘴巴說「記住了」,但沒有實際去寫入檔案,那它就是什麼都沒記住。
比較弱的模型特別容易犯這個錯。跟它說「記住這件事」,它回覆「沒問題,一定牢牢記住」,結果它根本沒有呼叫任何寫入工具。下次對話一重啟,全部忘光。
怎麼驗證?看它有沒有真的打開工具去編輯記憶檔案。沒有,那就是一場空。
記憶的檢索:關鍵時刻能不能想起來
存了記憶只是第一步,能不能在需要的時候找出來才是關鍵。
大部分 Agent 框架用的是 RAG(Retrieval-Augmented Generation)的方式:把記憶切成小塊,當模型需要回憶時,用關鍵字或語義相似度去搜尋最相關的片段,再把這些片段塞進 Context 裡。
這套機制在理想情況下運作良好,但搜尋品質取決於切塊方式和比對算法。用比較基本的設定,可能只有最近幾天的事記得準,更久以前的就開始出現混淆或遺漏。
理解了記憶機制之後,使用 AI 助理時就能更精準地判斷它記住了什麼、什麼是它腦補出來的。

延伸閱讀
- AI Agent 不是 AI:搞懂「龍蝦」和「大腦」的分工
- AI Agent 的安全風險
- Skill、Sub-agent、Cron:讓 AI 24 小時自動工作
- AI Agent 記憶系統教學
- AI 助理的記憶該怎麼設計
📖 下一篇:AI Agent 的安全風險:從 YouTube 留言改檔到暴走刪郵件
小企鵝的經驗
OpenClaw 上跑 Opus / Sonnet / Codex 多 agent,實戰下來最痛的肯定是記憶這塊。要處理好記憶又不讓 agent 失憶非常困難,訣竅是把核心檔案整理乾淨:檔案越簡潔,agent 記得事情的機率就越高。沒接向量資料庫,全部走 .md 檔案系統,主因是記憶量不大,又需要隨時手動編輯,RAG 那套對使用節奏反而是負擔。
常見問題
Q: 語言模型真的沒有記憶嗎?
對。語言模型每次被呼叫時,只看到當下傳入的文字,完全不記得之前的對話。Agent 必須每次把歷史對話一起塞進去,模型才能「假裝」記得。
Q: Context Window 是什麼?
Context Window(上下文窗口)是語言模型能處理的文字長度上限。輸入加輸出超過這個長度就會出錯。即使上百萬 token 的窗口,在 Agent 長期運作下也會不夠用。
Q: AI 說「我記住了」真的有記住嗎?
不一定。如果 AI 只是回覆「我記住了」但沒有實際呼叫工具去寫入記憶檔案,那就是「記了個寂寞」。下次對話就忘了。要確認它有真正寫入 .md 檔才算數。
本文觀念參考台大李宏毅教授公開課程內容,整理:小企鵝 Penchan