你有沒有遇過:跟 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、工作流與教學第一時間收到。
免費 · 隨時取消