AN-07 L2 符合性等級: Memory 概念組: 知識

Agent Memory 智能體記憶

筆記是你能讀能改的真相,索引只是可以丟棄的快取。

定義

Agent Memory(智能體記憶) = 你能讀、能改的筆記 + 可以隨時丟棄的索引。每條筆記都引用它的來源;索引(全文、向量、圖、輪廓)只是筆記的派生物;後台維護作業只提議修改,絕不改寫原始日誌。

v0.2 規範草案 更新於

要解決的問題

記憶框架把記憶放進不透明的資料庫:無法檢查、對比、遷移、糾正,也難以可靠刪除;索引和嵌入模型被綁死。而記憶本身就是攻擊面:2026 年的一項研究裡,持久記憶投毒在兩個智能體上的平均攻擊成功率達 50.46%;另一項研究用一封精心構造的郵件,在檔案系統和向量兩種記憶後端上都得了手。

同時,「哪種記憶架構最好」遠沒有定論:基準互相矛盾。一份不押注任何檢索演算法的設計,才扛得住三年的變化。

工作方式

  • 筆記是真相。 Markdown 加 YAML frontmatter:kind(情景、語義、程式、偏好)、subject、sources、confidence、valid_from、valid_to、supersedes、origin、reviewed。
  • 更新而非覆蓋。 新事實 supersedes 舊事實;區分有效時間與記錄時間,因為事實會變,而常見基準幾乎不測這一點。
  • 索引是快取。 BM25(如 SQLite FTS5)、向量(可以多套並存)、可選的圖;每個派生物帶配方與輸入。換嵌入模型就是後台重算,舊索引保留到新索引的黃金召回測試達標為止。
  • 兩類派生。 確定性的(切塊、BM25、固定模型的嵌入)可重現;生成式的(LLM 摘要、抽取出的事實)只能「再生成並比對」,因此標記 generated: true,並且從不作為唯一副本。
  • 寫入路徑。 nas_remember 把筆記(含來源)寫到當前分支;污點隨之繼承。來自 external 污點工作階段的筆記進入隔離區,標記為未審閱:可以被召回,但不自動載入,也不會進入 MEMORY.md。
  • 讀取路徑。 nas_recall = 搜尋、候選、預算視圖加證據指標,並顯示筆記的來源與審閱狀態。
  • 維護作業(夜間或空閒時):去重、把情景整合成語義事實、標記矛盾、讓過期的事實失效、重建索引。作業在分支上產出提案,由人或智能體審閱;絕不刪除原始日誌;度量「後悔率」(被回滾的提案比例)。
  • 黃金召回測試。 每個 Home 一組「問題、期望筆記」,換模型或索引器時自動迴歸。

從小處開始

  • memory/notes/*.md 加 frontmatter;用 SQLite FTS5 做檢索。
  • 在 CI 裡跑十條黃金問題。
  • 向量索引和維護作業都可以以後再加;先把「來源」和「已審閱才自動載入」做對。

介面草圖

僅作示意。欄位名在規範 v0.3 之前可能調整。

memory/notes/customer-acme.md
---
id: mem_4kq2
kind: semantic
subject: customer/acme
valid_from: 2026-10-02
valid_to: null
confidence: 0.8
origin: agent
reviewed: true
sources:
  - nas://home-box/agents/cleo/journal/2026-10-02.md@9f2c1de#L12-L18
supersedes: [mem_1xa9]
---
Acme renewed for 24 months; the champion moved from Dana to Luis.

規範的要求

  • 筆記必須能脫離 Memory 層被讀取(它們是 Store 裡的普通檔案)。
  • 每個派生物必須帶配方與輸入;索引必須可丟棄並可重建。
  • 由受污染工作階段寫入的筆記,在被審閱之前不得自動載入。
  • 新事實必須以 supersedes 取代舊事實,而不是覆蓋。
  • 維護作業必須在分支上工作並只提議;不得刪除原始日誌。
  • 每個 Home 應當帶黃金召回測試,在模型或索引器變化時執行。

借鑑與區別

下面這些都是現成的思路,OpenClaw 的記憶架構已經做了來源標籤、按層隔離和整合時的污點傳播。真正新的部分: OpenClaw 在單個執行環境內部做;我們提議在共享的儲存裡做,讓任何執行環境都受益;並把索引降為可丟棄的快取,使檢索演算法可以更換而記憶不丟。

坦誠的侷限

  • 生成式派生物不可能逐位重現。
  • 維護作業可能把錯誤「固化」成事實,所以它只提議,不直接改。
  • 哪種記憶架構最好,目前沒有定論。

開放問題

  • 何時由智能體自己寫,何時交給維護作業?
  • 跨模型版本的迴歸標準是什麼?

常見問題

為什麼用檔案,不用向量資料庫?

檔案是你能讀、能改、能 diff、能帶走的真相;向量索引是它的派生快取,可以並存多套、隨時重建。Letta 的基準說明,只給智能體 grep 和檔案工具就有競爭力,但各家基準互相矛盾,所以設計不押注某一種檢索演算法。

怎樣防止記憶被投毒?

無法保證絕不被寫入,但可以限制後果:外部來源的內容帶著 external 標籤;受污染工作階段寫的筆記進入隔離區,不自動載入;合併要經過審閱;出了問題可以順著來源鏈找到受影響的筆記並回滾。

換嵌入模型要遷移記憶嗎?

不需要。筆記不變,只是在後台用新的配方重算索引;舊索引保留到新索引的黃金召回測試達標為止。

引用本頁

為讀者、搜尋引擎和智能體提供穩定的網址與建議的引用格式。

建議引用格式
Agent NAS project. “Agent Memory (智能體記憶).” agentnas.com, 2026-11-11. https://agentnas.com/zh-tw/concepts/agent-memory/