免費全文 Agent 開發 進階

Agent 的記憶設計:短期、長期與什麼都不記

記憶不是越多越好。多數 Agent 需要的其實是好的摘要,而不是完整歷史。

Agent 開發教程封面

「加上記憶」聽起來像必備功能,實際上多數 Agent 的問題不是記不住,而是記太多——上下文被歷史塞滿,反而找不到當下重要的資訊。

三個層次

  • 工作記憶:本次任務的訊息串。必要,且應該完整保留。
  • 會話記憶:同一個使用者的跨輪對話。建議只保留摘要與關鍵事實。
  • 長期記憶:跨會話的知識與偏好。用檢索取用,不要全部塞進提示。

會話記憶用滾動摘要

MAX_TURNS = 8

def compact(messages):
    if len(messages) <= MAX_TURNS:
        return messages
    old, recent = messages[:-MAX_TURNS], messages[-MAX_TURNS:]
    summary = model.chat([
        {'role': 'system', 'content': '把下列對話壓縮成不超過 200 字的事實清單,只保留後續可能用到的資訊。'},
        {'role': 'user',   'content': render(old)},
    ]).content
    return [{'role': 'system', 'content': f'先前對話重點:{summary}'}] + recent

長期記憶要能被遺忘

寫入長期記憶時一併存入來源與時間,並設計更新與刪除路徑。使用者說「我改用另一個帳號了」時,舊事實必須能被覆蓋,否則 Agent 會一直用過期資訊。

什麼時候不需要記憶

單次任務型的 Agent(分析一份檔案、修一個 bug)不需要跨會話記憶。硬加上去只會引入不必要的狀態與隱私問題。

長期記憶存的應該是「事實」而非「對話」。「使用者偏好繁體中文、任職於製造業」比一整段閒聊有用得多,也小得多。
下一步

這個主題還有更深入的實戰教程

VIP 專區收錄 50 篇進階內容:架構設計、生產環境取捨、成本與合規。 每週五新增 3 篇。

看訂閱方案 → 先逛逛 VIP 專區

延伸閱讀

更多Agent 開發 →