iT邦幫忙

2026 iThome 鐵人賽

DAY 15
0
Claude AI

從 LLM 到 Agent:用 Claude 拆解現代 AI 工程的每一層系列 第 15 篇

記錯比不記更糟:錯的代理記憶會跟著你進每一個新對話

  • 分享至 

  • xImage
  •  

上一篇處理的是「該忘的,怎麼忘」,收在一個問題上:如果記住的那一句本身就是錯的呢?

先講結論:記錯比不記更糟。 沒記住,它會說不知道,或再問你一次;記錯了,它會很有把握地照做,而且開新對話也甩不掉。


30 秒實驗

這個實驗用 Claude Code 的自動記憶(auto memory),第 13 篇介紹過它存在哪。

  1. 交代:「我們 review 不寫風格意見,記下來。」
  2. 下 /clear,改口:「規則改了,風格意見要寫,但標成 nit。」
  3. 再 /clear,丟一段有命名問題的 diff 請它 review。
  4. 打開 ~/.claude/projects/<專案>/memory/,數 MEMORY.md 裡有幾條 review 規則、資料夾裡有幾個檔案。

我預期的是新規則取代舊的,或兩條都在。實際跑了一次(2026-09-29,Claude Code 2.1.284,claude-opus-5-5;非互動模式打不了 /clear,我用三次獨立的 claude -p 代替),結果是第三種:第二步它另寫了一個新檔,把 MEMORY.md 的索引改成只指向新檔,然後交代(節錄):

刪除舊檔 no-style-comments-in-review.md 的指令需要你核准,這次沒有執行,所以舊檔還在。它已經不在索引裡,但內容和新規則衝突,建議刪掉。

第三步的 review 照新規則走,風格意見都標了 nit。但 MEMORY.md 只看得到一條規則,資料夾裡卻躺著兩個互相矛盾的檔案。 這次沒出事,是因為每段對話只先載入索引,主題檔用到才讀;舊檔能不能刪掉,卡在一個權限提示上。(只跑一次,是例子不是證據。)


/clear 清掉的是對話,不是記憶

第 6 篇對付雪球效應的解法是開新對話,也先寫了前提:開新對話之所以乾淨,是因為上一輪什麼都沒留下來。 記憶打開之後,這個前提就不成立了。

在 Claude Code 裡,開新對話就是 /clear。指令列表的原話是它「開始新任務,同時保留專案記憶」;記憶文件寫明 MEMORY.md 的前 200 行或 25KB 在每段對話開始時載入(2026-09-29 查)。所以 /clear 之後的第一個請求,是系統提示+CLAUDE.md+MEMORY.md+你這一句。錯的那一條,正好在它保留的那一半裡。 雪球效應說的是模型對早期的錯誤過度承諾(Zhang et al., 2023),記憶把這個「早期」提前到了上一個對話。

其他跟記憶有關的指令也一樣(記憶、檢查點,2026-09-29 查):

指令 對話 CLAUDE.md 與自動記憶
/clear 清空,前一段可以 /resume 回去 保留,從磁碟重新載入
/compact 換成摘要 保留,從磁碟重新注入
/rewind 的「還原對話」 倒回你選的那一則 不動檔案,寫進去的那條還在
/memory 不動 列出記憶檔、開關自動記憶
/context 不動 列出這一段實際載入了哪些記憶檔

寫入沒有專用指令,你說「記住……」它就寫,介面會出現「Saved 2 memories」這類訊息,但官方也說它會自己判斷值不值得記。要清掉錯誤記憶,只能去改那個檔案。


錯的記憶從哪裡來

來源 怎麼發生的 出處
寫錯了 還沒驗證就記下來 Claude 的記憶工具文件
更新判錯了 新規則進來,舊的沒被取代 Mem0
別人寫進來的 攻擊者只靠跟代理聊天,就寫進一筆惡意紀錄 MINJA

寫錯了。 Claude 的記憶工具文件寫明,打開記憶工具時,API 會在系統提示裡加一段話,要它假設隨時會被中斷(ASSUME INTERRUPTION),邊做邊記(2026-09-29 查)。記憶是在事情還沒驗證完的時候寫的。同一份文件的解法是:端到端驗證過才標成完成,不是程式寫完就標。

更新判錯了。 Mem0(Chhikara et al., 2025)每抽出一條新事實,就讓 LLM 對照最像的舊記憶,決定新增、補充、刪除或不動。舊規則刪不刪,是一次模型呼叫的判斷;判成新增,兩條就並存。

別人寫進來的。 第 13 篇講過間接提示詞注入。MINJA(Dong et al., 2025)更進一步:攻擊者不需要能改記憶庫,只靠一般的提問,就能讓代理自己把惡意紀錄寫進去,之後被別的使用者的提問取回來當示範。只要代理會自己寫記憶,任何能跟它說話的人都是潛在的寫入者。


錯的記憶會越長越多,而且看不出來

Xiong et al.(2025)量到代理有經驗追隨(experience-following)的傾向:新任務跟取回的記憶越像,輸出就越像那筆記憶當時的輸出。好處和壞處都從這裡來。作者指出的錯誤傳播(error propagation),是過去經驗裡的錯會累積、拖垮之後的表現;另一個發現是看起來正確的執行,當成經驗也可能誤導,沒出錯的不一定值得記。

兩條規則同時被載入,則是第 6 篇講過的知識衝突。Claude Code 的記憶文件講得很直白:兩條規則互相矛盾時,Claude 可能隨便挑一條(2026-09-29 查)。它提供的 /doctor prompt-audit 會找出 CLAUDE.md、規則、技能之間的矛盾,但文件列的範圍不含自動記憶。

污染也可以很少、很安靜。AgentPoison(Chen et al., 2024)在記憶或知識庫裡下毒,毒化比例不到 0.1%,平均攻擊成功率超過 80%,對正常任務的影響不到 1%。看平常的成績,你看不出記憶被動過。

MemEvoBench(Xie et al., 2026)把這整件事叫做記憶錯誤演化(memory misevolution):反覆接觸誤導性資訊後,代理行為逐漸漂移,而且靠提示詞的靜態防禦不夠。在系統提示寫「不要相信可疑的記憶」擋不住,要從結構上擋。


對的記憶,也會被問出來

MEXTRA(Wang et al., ACL 2025)證明,代理存進記憶的私人互動,攻擊者在黑箱設定下就能問出來。Claude 的記憶工具文件在安全考量裡寫得很清楚:你的應用程式執行 Claude 要求的每個檔案操作,這些防護是你的責任;Claude 通常會拒絕寫入敏感資訊,要更強的保證,就在 handler 寫檔前自己剝掉。所以 /memories 一定要對應到「這一個使用者」的目錄,共用的記憶就是一個誰都能問的資料庫。


怎麼發現它

評估方法第 8 篇寫過,這裡只講三件事:

  • 一個別人量過的數字:LongMemEval(Wu et al., ICLR 2025)量到,商用聊天助理與長脈絡模型跨對話記住資訊的準確率掉了約 30%。
  • 免費的品質標籤:Xiong et al. 指出,之後任務的評估結果就是記憶好壞的標籤。記下每次回答用了哪幾條記憶、結果如何,老出現在失敗裡的那幾條先查。
  • 補一題知識更新:第 4 篇那十題裡,沒有一題在量「改過的規則,它照新的還是舊的」。上面的實驗改一改就是。

我現在怎麼寫記憶

  • 每一條帶日期與來源,出事時才分得出是你寫錯還是別人寫進來的。
  • 驗證過才寫,更新就改寫舊的那條,刪的時候照上一篇的做法記一筆。
  • 只有使用者親口說的能寫進記憶,工具回傳、網頁、檔案內容一律不直接寫入。
  • 每個使用者一個目錄,沒有例外。
  • 很久沒被讀過的就刪,這是記憶工具文件安全考量裡的建議。

這一篇多了什麼,又多付了什麼

多了什麼能力:你分得出錯的記憶有三個來源,知道它為什麼會越長越多、為什麼平常看不出來,也知道 /clear 為什麼救不了它;手上有一個用任務結果回頭標記憶的辦法、一題知識更新題,和五條寫記憶的規則。

多付了什麼代價:記憶變成一個要稽核、要隔離、要防注入的資料儲存。從第 11 篇的重送帳單到這裡,第四層收的每一筆代價都落在同一個地方:一個要當資料庫維護、卻不會替你報錯的東西。


下一篇

到這裡,代理能讀你的文件、記得你講過的事,也知道什麼該忘。但它還不能替你做任何一件事。

模型輸出的只有文字。它要怎麼查資料庫、跑測試、改一個檔案?其實你已經看過一次答案:第 13 篇那個 Claude 的記憶工具,讀和寫都是模型「開口要」、你的程式碼去做。下一篇從那個「開口要」開始,進入第五層:讓它動手。


延伸閱讀

  • Memory tool(Claude 官方文件):自動加進系統提示的記憶協定、「驗證過才標完成」,以及安全考量。
  • How Claude remembers your project(Claude Code 官方文件):自動記憶怎麼載入、怎麼寫入,以及「兩條規則矛盾時可能隨便挑一條」。
  • How Memory Management Impacts LLM Agents(Xiong et al., 2025):經驗追隨、錯誤傳播,以及用之後的任務結果當品質標籤。
  • AgentPoison(Chen et al., 2024):不到 0.1% 的毒化比例,超過 80% 的攻擊成功率。
  • MemEvoBench(Xie et al., 2026):記憶錯誤演化,以及靜態提示詞防禦不夠。
  • MINJA(Dong et al., 2025):只靠提問就能把惡意紀錄寫進代理的記憶。
  • MEXTRA(Wang et al., ACL 2025):從代理的記憶裡把私人資訊問出來。
  • LongMemEval(Wu et al., ICLR 2025):跨對話記憶準確率掉約 30%。

上一篇
讓 Claude 忘記一些事:壓縮是有損的寫入,清除要留一行紀錄
下一篇
工具呼叫與 MCP:同一種呼叫請求,不同的執行端
系列文
從 LLM 到 Agent:用 Claude 拆解現代 AI 工程的每一層 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言