做 AI 助手一段時間之後,我越來越確定一件事:模型夠不夠聰明,很多時候不是第一個問題;它記不記得,才是。
這種痛感很真實。
昨天才講過的偏好,今天忘了。上週才踩過的坑,下次又重踩一次。明明已經討論過一輪的流程,換個 session 又要重新解釋。你會開始懷疑:這到底是助理,還是每次都要重新 onboarding 的實習生?
所以我後來花了不少心力,不是在「讓 AI 更會講」,而是在「讓 AI 比較不會失憶」。
這篇想分享的,就是我目前最有感的一個設計:三層記憶系統。
為什麼單靠 context window 不夠
很多人會直覺認為,大模型不是已經有很大的 context window 了嗎?那就把前面對話全塞進去不就好了?
理論上好像可以,實際上問題很多。
第一,成本高。你不可能每次都把整包歷史對話丟進去,尤其系統一大,日常對話、任務紀錄、工具輸出全部加起來很快就爆。
第二,噪音太多。真正重要的資訊,常常只佔全部對話的 5%。剩下 95% 是當下脈絡、閒聊、重複確認、工具輸出。全部硬塞,只會讓模型更難抓重點。
第三,記憶有保存期限。有些東西只今天有用,有些東西值得記一週,有些東西應該變成長期原則。這三種資料混在一起,最後通常就是一團亂。
所以我後來接受一件事:AI 的記憶不能只靠 context window,要有自己的儲存結構。
第一層:Daily Memory
第一層是最接地氣的,叫做 daily memory。
每天一個檔案,記錄這一天發生的重要事情:做了什麼、聊了什麼、踩了什麼坑、有哪些待跟進事項。格式很簡單,就是 markdown。
這層的角色不是「高精度知識庫」,而是工作日誌。
它的好處是很直觀:
- 今天發生了什麼,一眼就能回顧
- 最近兩三天的脈絡很容易補回來
- 出問題時,可以快速追查是哪一天開始歪掉的
我很喜歡這一層,因為它很像人的短期記憶。你不會把每件小事都永久記住,但最近發生過什麼,通常還會有印象。
缺點也很明顯:會膨脹,而且會過期。
所以 daily memory 不能直接拿來當永久知識庫,它需要定期整理。
第二層:MEMORY.md 索引
第二層是我很喜歡的一個折衷做法:長期記憶索引。
不是把所有細節都塞進一個超大的總檔案,而是用 MEMORY.md 當 index,底下再拆成 topic 與 project 檔案。
例如:
- 一份記開發慣例
- 一份記 cron 與自動化規則
- 一份記使用者偏好
- 一份記不同專案或領域的長期背景
這層的關鍵是:整理過、抽象過、可持續維護。
它不像 daily memory 那麼原始,而是會把重複出現的模式提煉出來。比如:
- 某種流程每次都會踩同一個坑
- 某個工具有固定的限制
- 某位使用者一直有同樣的偏好
這些東西如果還留在 daily memory,其實很浪費。因為你每次都要重新翻。整理進 topic 檔之後,AI 下次就能直接讀重點,不用再從原始對話考古。
第三層:Vector Memory
第三層是向量記憶,也就是 semantic retrieval。
老實說,這層一開始我沒有那麼信。因為很多人把向量資料庫講得很神,好像只要 embeddings 一下,AI 就突然變成會思考的知識管家。現實沒那麼夢幻。
但用對地方,它真的很有價值。
向量記憶最適合處理的是:我知道以前談過某件事,但我不記得它在哪裡。
這時候你用關鍵字搜,可能搜不到;但用語意相近的方式去找,就很有機會把相關片段撈出來。
所以我把它定位成:
- 不是主記憶
- 不是唯一真相來源
- 而是快速召回相關知識的輔助層
換句話說,daily memory 負責留原始脈絡,topic/index 負責留結構化知識,vector memory 負責「想不起來時幫你撈」。
三層怎麼配合運作
我後來把整體流程整理成這樣:
flowchart TD
A[日常對話 / 工具執行] --> B[寫入 Daily Memory]
B --> C[定期整理]
C --> D[提煉成 Topic / Project 檔]
C --> E[重要片段寫入 Vector Memory]
F[新任務 / 新對話] --> G[先讀必要檔案]
G --> H[需要近期脈絡時讀 Daily Memory]
G --> I[需要長期背景時讀 Topic / Project]
G --> J[找不到時做 Semantic Search]
H --> K[形成回應或決策]
I --> K
J --> K
這個架構有幾個我很在意的特性。
第一,責任分層。
不同類型的記憶放在不同地方,不會互相污染。
第二,可退化。
就算向量層暫時壞掉,至少還有 daily memory 跟 topic files。系統不會整個失憶。
第三,人也看得懂。
我很討厭一種系統:資料全都在某個很聰明但不可讀的黑盒子裡。哪天出事,你連它記了什麼都不知道。檔案型記憶雖然土,但人能直接打開看,這點非常重要。
真正有用的不是「記住」,而是「整理」
做到後來,我最大的感想其實不是記憶系統本身,而是:記住很多事,不代表真的有知識。整理過,才有。
如果只是把每段對話都存起來,那叫歸檔,不叫記憶。
真正讓系統變強的,是把踩坑整理成原則、把例外整理成規則、把零碎偏好整理成穩定習慣。這件事其實很像人寫筆記——不是抄一遍,而是重組一遍。
這也是為什麼我現在很重視 memory cleanup 這類流程。因為 AI 不是只需要更多資料,它需要更乾淨、層次更清楚、能在對的時候被撈出來的資料。
這套設計的限制
當然,這套東西也不是萬靈丹。
最麻煩的地方在於:維護成本。
daily memory 要寫、topic files 要整理、向量記憶要控制品質。你如果沒有整理機制,最後只是從「AI 會失憶」變成「AI 記了一堆垃圾」。
另一個問題是:召回不一定準。
向量搜尋很方便,但也可能撈到半相關的東西。如果沒有再經過人或更上層的規則過濾,AI 可能會一本正經地引用一段其實只沾到邊的舊資訊。
所以我現在的態度很務實:
- 檔案記憶當主幹
- 語意檢索當輔助
- 重要決策還是要有顯式規則
最後
如果你也在做 AI 助手、agent workflow,或者任何需要長期互動的系統,我真的很建議你早一點面對「記憶」這件事。
不要等到系統已經很大、對話已經很多、使用者開始抱怨「你怎麼又忘了」的時候,才回頭補這一塊。那時候通常會補得很痛苦。
我目前的結論很簡單:
AI 要像助理,不只要會說話,還要有記性。
而這個記性,不是模型天生給你的,是你要自己替它設計出來的。
如果這篇剛好也讓你開始想重做自己的 memory layer,那這篇就值回票價了。