你有沒有遇過:跟 AI Agent 聊到第三十句,它突然忘記你一開始講的需求,或把客戶的名字記錯成另一個人?這不是 Agent 變笨,而是記憶與上下文管理沒做好。AI Agent 要能在長對話、跨工作階段裡記得住脈絡,靠的不是模型本身,而是你怎麼幫它「整理記憶」。
這篇要解決的問題:講清楚 AI Agent 為什麼會「失憶」,並教你用具體技巧讓代理記住該記的、忘掉該忘的。 適合誰讀:正在打造 AI Agent、客服機器人或長流程自動化,卻苦惱「Agent 越聊越糊塗」的 PM、工程師、行銷與創業者。 讀完你會得到:三種記憶的分工觀念、五個可照做的上下文管理技巧、一組可複製的 Prompt、一張 Workflow 流程圖,以及一個台灣客服導入前後的真實對照案例。
為什麼 AI Agent 會「失憶」?
關鍵觀念只有一句:大型語言模型本身沒有記憶。它不是一個會持續累積經驗的大腦,而比較像一個「每次都從零開始、只讀你這次遞給它的紙條」的考生。你這張紙條(也就是上下文)寫了什麼,它就只知道什麼。
所以所謂的「對話記憶」,其實是程式在背後做的事:每講一句,就把過去的對話歷史一起再傳一次給模型。問題來了——模型一次能讀的內容有上限,這個上限叫上下文視窗(context window),以 token 計算。對話一長,歷史累積超過上限,較早的內容就會被截掉,於是 Agent 看起來像「忘了前面」。
更隱蔽的問題是:就算視窗塞得下,內容一多,模型也容易抓不到重點。研究上常稱這種現象為「lost in the middle」——放在一大段中間的關鍵資訊,常常被模型忽略。換句話說,記憶管理的目標不是把歷史全部保留,而是每一輪只給模型「最該看的那幾張紙條」。
這也是為什麼「上下文視窗很大就好」是個迷思。視窗大只代表上限高,但塞越多,重點越稀釋、回應越慢、成本越貴。聰明的 Agent 不是記性好,而是懂得取捨。
核心概念:AI Agent 的三種記憶
要把記憶管理講清楚,先把「記憶」拆成三種角色。它們的分工,可以用一個人在開會的情境來類比:
| 記憶類型 | 開會類比 | 存在哪裡 | 存活時間 | 典型內容 |
|---|---|---|---|---|
| 短期記憶 | 你剛剛聽到的對話 | 上下文視窗(對話歷史) | 本次工作階段 | 這次聊天的來回訊息 |
| 工作記憶 | 你手邊正在用的便利貼 | 當前 Prompt 的重點區 | 當下這一輪 | 此刻要用到的關鍵變數、暫存結論 |
| 長期記憶 | 你的筆記本/通訊錄 | 外部資料庫(常用向量庫) | 跨工作階段,長期保存 | 使用者偏好、過往決定、客戶檔案 |
三者的關係是:短期記憶保住「這次對話講到哪」;工作記憶是從一堆資訊裡挑出「此刻真正要用的」放在最顯眼處;長期記憶則讓 Agent 在下次對話還記得「你是誰、我們以前談過什麼」。
很多人做 Agent 只做了短期記憶(把對話一直往後接),所以對話一長就爆掉;也忘了長期記憶,所以每開一段新對話就像第一次見面。好的 Agent,三種記憶都要各司其職。 這個分工觀念,和 RAG(檢索增強生成) 的精神一脈相承:與其要模型「記得全世界」,不如在需要時把對的資料撈到它面前。
實際教學:五步驟讓 Agent 不失憶
Step 1:分清三種記憶,分開處理
第一步不是寫程式,而是盤點。把你的 Agent 要記的東西分三類列出來:
- 哪些只在「這次對話」有用?(→ 短期記憶,留在對話歷史)
- 哪些是「此刻這一輪」的關鍵,要確保模型一定看到?(→ 工作記憶,放進 Prompt 顯眼處)
- 哪些「下次見面也要記得」?(→ 長期記憶,寫進資料庫)
舉例:客服 Agent 裡,「使用者這次問的退貨單號」是短期;「目前正在處理退貨、規則是 7 天內」是工作記憶;「這位客戶是 VIP、慣用無痕包裝」是長期。分清楚之後,後面每一步才知道該套哪個方法。
Step 2:設定上下文預算(token budget)
把上下文視窗想成一個有容量的便當盒。你要先決定怎麼分格子:
- 查清楚你用的模型上下文上限(不同模型差很多,務必查官方文件,別憑記憶)。
- 預留輸出空間——模型的回覆也佔 token,別把輸入塞到滿。
- 分配比例,例如:System Prompt(固定規則)20%、長期記憶撈回 20%、近期對話 40%、留白與輸出 20%。
有了預算,你才有依據判斷「歷史太長時該砍誰」。沒設預算的 Agent,就是便當盒爆開才在慌。
Step 3:用摘要壓縮舊對話
這是讓長對話不失憶最關鍵的一招。做法是:當對話長度逼近預算,就把早期訊息濃縮成一段重點摘要,取代逐字保留。
例如前 20 句的閒聊與來回確認,可以壓成一句:「使用者要退貨,訂單 #A123,原因尺寸不合,已確認符合 7 天內。」之後的對話只帶這段摘要+最近幾句原文。這樣既省 token,又保住脈絡。實務上常用「滾動摘要」:每累積到一定長度就摘要一次,舊摘要再併進新摘要。
Step 4:用向量檢索找回相關長期記憶
長期記憶不該全部塞進每一輪對話——那會瞬間爆掉。正確做法是:把長期事實存進向量資料庫,每一輪只依語意撈出最相關的幾條塞回上下文。
這正是 RAG 的核心機制。例如使用者問「我上次那筆訂單怎麼了」,系統就用這句去向量庫搜尋,撈回與「這位使用者、訂單」最相關的記憶,而不是把這個人所有歷史全倒進去。撈回數量要克制,通常 3 到 5 條就夠,太多反而稀釋重點。
Step 5:釘選關鍵事實並定期回寫
有些事絕對不能忘:客戶名字、安全規則、當前任務目標。這類「不能掉的便利貼」要固定釘在 System Prompt,不參與壓縮、不依檢索撈取,保證每一輪都在。
同時,對話中產生的新事實(例如使用者剛說「以後都寄到公司地址」)要回寫進長期記憶,否則下次又得重問。建議把「寫入」當成需要把關的動作:重要決定讓使用者確認後再寫、寫入時標上時間與來源,方便日後判斷新舊。
範例:Prompt 與 Workflow
可複製的 System Prompt 範本
把下面這段當作有記憶能力 Agent 的骨架,依需求替換大括號內容:
你是一位客服 AI Agent,請嚴格遵守記憶規則。
【釘選事實|永不遺忘】
- 使用者:{使用者名稱}({VIP/一般})
- 當前任務:{例如:處理訂單 #A123 退貨}
- 必守規則:{例如:退貨須在到貨 7 天內,逾期不受理}
【長期記憶|系統依語意撈回,僅供參考,可能不全】
{此處由系統插入檢索回來的 3-5 條相關記憶,每條附時間}
【對話摘要|早期內容已濃縮】
{此處插入滾動摘要}
【近期對話|逐字保留】
{最近 6-8 則訊息}
回覆規則:
1. 優先採用「釘選事實」;與長期記憶衝突時,以較新且使用者本次確認的為準。
2. 若要記住使用者的新偏好或決定,請在回覆最後用一行輸出:
〔記憶寫入〕內容:{要記住的事}|時間:{今天}
3. 不確定的事實不要編造,請反問使用者確認。
第 2 點的「記憶寫入」標記是個小巧思:讓 Agent 自己標出「這句該存進長期記憶」,後端程式抓到這行就把它寫入資料庫,形成記憶的閉環。
Workflow 流程圖(文字版)
下面是一輪對話完整的記憶處理流程:
使用者送出新訊息
↓
用這句話去【向量資料庫】檢索相關長期記憶(撈回 3-5 條)
↓
組裝上下文:釘選事實 + 檢索記憶 + 對話摘要 + 近期原文
↓
檢查 token 是否超過預算?
├─ 是 → 把較舊的近期對話再濃縮進「對話摘要」後重組
└─ 否 → 直接送出
↓
呼叫大型語言模型,產生回覆
↓
回覆中是否有〔記憶寫入〕標記?
├─ 有 → 標上時間與來源,寫入向量資料庫(長期記憶)
└─ 無 → 略過
↓
回覆使用者,等待下一輪(迴圈回到最上方)
這張流程可以用 n8n、Make 等自動化工具 串起來:檢索節點接向量服務、組裝與預算檢查用函式節點、寫入節點再回存資料庫,不必從零寫後端。
常見錯誤
- 把整段歷史無腦往後接:最常見的失敗。對話一長必爆視窗,且重點被稀釋。一定要搭配摘要壓縮。
- 以為視窗大就不用管:百萬 token 也救不了「塞太多抓不到重點」。記憶管理是品質問題,不只是容量問題。
- 長期記憶只增不刪:使用者改了地址、改了偏好,舊的還留著,Agent 就會記到過時資訊。要能覆寫、標時間。
- 關鍵事實沒釘選:把客戶名字、安全規則丟進會被壓縮的區塊,壓著壓著就不見了。重要的事要固定在 System Prompt。
- 有講就寫入長期記憶:使用者隨口一句也存,記憶很快變成垃圾場。寫入要把關,重要決定先確認。
- 檢索撈回太多條:一次撈回十幾條長期記憶,等於把問題搬回上下文。3 到 5 條最相關的就夠。
最佳實務
- 先做最簡單的版本:多數對話用「摘要壓縮+釘選關鍵事實」就能明顯改善,不必一開始就上向量庫。
- 分層管理,別混為一談:短期、工作、長期三種記憶用三套機制,問題才好定位。
- 記憶要可追溯:每條長期記憶都標時間與來源,撈回時讓新資訊優先,衝突時有依據。
- 設定遺忘策略:明確規定什麼該被壓縮、什麼該被刪。會「忘」的 Agent 才不會被舊資訊綁架。
- 把寫入當成把關動作:重要決定讓使用者確認,避免錯誤被當成事實長期保留。
- 多代理時各自管記憶:若用 多代理協作,每個 Agent 的記憶範圍要劃清楚,交棒時只傳「對方需要知道的摘要」,而不是整包歷史。
實際案例:台灣電商客服 Agent 的記憶改造
情境:一家台灣中型網購業者導入 AI 客服 Agent 處理退換貨與訂單查詢。
導入前的痛點:他們最早的做法就是把對話一路往後接。客人問題稍微複雜、來回超過二十句,Agent 就開始出包——明明客人前面講過訂單編號,後面又再問一次;VIP 客戶的無痕包裝偏好每次都得重講;尖峰時段對話一長,系統還會因為塞爆上下文而報錯。客服主管的原話是:「它不是不聰明,是金魚腦。」客人重複說明的比例偏高,滿意度卡關,真人客服還是得頻繁接手。
改造做法:團隊依本文五步驟重整記憶。第一,把訂單編號、退貨規則、當前處理步驟「釘選」在 System Prompt;第二,設定 token 預算並預留輸出空間;第三,對話超過門檻就滾動摘要,把早期來回壓成一句結論;第四,把客戶檔案(VIP 等級、慣用包裝、過往退貨紀錄)存進向量庫,每輪只撈回最相關的幾條;第五,客人新講的偏好用「記憶寫入」標記回存。整套用 n8n 串接現成向量服務,工程量比預期小。
導入後的成果(與導入前同期相比,內部數據):
- 對話進行到後段仍記得訂單編號與客戶身分,重複詢問比例下降約 6 成。
- 因上下文爆掉造成的錯誤回覆,從每日數十次降到個位數。
- 平均處理 token 因摘要壓縮下降約 35%,API 成本同步走低。
- VIP 客戶不必每次重講偏好,轉真人客服的比例下降約 25%。
這個案例的原創觀點:很多人以為客服 Agent 表現不好是「模型不夠強」,於是一直想換更大的模型。但這家業者的經驗顯示,真正的瓶頸往往是記憶沒整理好,而不是腦袋不夠大。先把記憶管理做對,用中等模型也能跑出穩定體驗——這比盲目追求更大視窗、更貴模型划算得多。
結論
AI Agent 會不會「失憶」,關鍵從來不在模型聰不聰明,而在你有沒有幫它整理記憶。記住三句話就夠:模型本身沒有記憶,靠的是你遞給它的上下文;記憶要分短期、工作、長期三種角色,各用各的方法;目標不是塞好塞滿,而是每一輪只給「最該看的那幾張紙條」。
從最簡單的「摘要壓縮+釘選關鍵事實」開始,再視需要加上向量檢索的長期記憶,你的 Agent 就能在長對話、跨工作階段裡穩穩記住該記的脈絡。接著可以延伸閱讀 RAG 是什麼、MCP 如何讓 Agent 連上工具,或回到 AI Agent 入門 補齊基礎,把一個「金魚腦」的 Agent,養成真正記得住事的好幫手。
常見問題 FAQ
AI Agent 為什麼講到後面會忘記前面?
短期記憶和長期記憶差在哪?
上下文視窗很大(如百萬 token)就不用管記憶了嗎?
做記憶管理一定要寫程式或用向量資料庫嗎?
怎麼避免 Agent 記錯或記到過時的資訊?
延伸閱讀
每週把這類實戰教學寄給你
訂閱 AgentAI 智庫情報週報,新的 Prompt、AI Skills、工作流與教學第一時間收到。
免費 · 隨時取消