RxAi AMP · Agent memory ·

讓 AI 代理記憶保持準確、一致,並在團隊間共享

代理記憶,是 AI 代理在工作階段一開始就知道、不必重新摸索的東西:目標、做過的決策、有效的修法,以及後來已經改變的事實。沒有它,每個工作階段都從零開始。本指南說明代理記憶出錯的四種方式(遺忘、事實過時、召回錯誤、代理之間各說各話),以及 RxAi AMP 如何逐一處理,每項說法都附上協定中的對應規則。

IN SHORT

四個問題,四種機制

問題出了什麼錯AMP 怎麼做規格
遺忘每個工作階段都從零開始,代理只好重讀程式碼,重蹈已經失敗過的修法。Hook 在第一個任務步驟之前就把專案的記憶放進上下文,以標題加一行摘要呈現;完整紀錄只在需要時才讀取。§15.1
事實過時或互相矛盾舊決策被取代後仍被召回,或兩則筆記說法不一。什麼都不覆寫。取代某筆紀錄的失效紀錄,會在下次編譯時把它封存,而且以最新的失效紀錄為準。規則 8
召回錯誤一則看似可靠、其實是錯的記憶,一直被推薦。每則記憶都帶權重:成功 +0.30、失敗 −0.20,隨時間衰減,低於 0.10 就封存。§4.4
代理之間各說各話兩個代理依據不同的筆記工作、互相覆寫,或彼此無限回覆。所有代理共用一個儲存庫,每則記憶標明寄件者與收件者,索引只有一個寫入者,迴圈守衛會把失控的串交給人處理。§6 · 規則 3 · 規則 14

章節與規則編號皆指 PROTOCOL.md v2.13(規範性規格,英文)。

DEFINITION

什麼是代理記憶?

代理記憶是能撐過單一工作階段的知識。上下文視窗不是記憶:工作階段一結束它就清空,視窗再大也只是延後清空。記憶存在模型之外,在之後的工作階段再交還給它,可能是同一個代理,也可能是另一個代理。

在 RxAi AMP 裡,每則記憶就是你自己儲存庫中的一則 GitHub Issue。標題說明誰寫的、寫給誰、屬於哪個專案與主題,以及它是哪一種記憶:

[FROM:claudecowork→codex][REGION:acme-web][PLACE:checkout][TYPE:discovery] Cart total rounds tax twice

七種類型涵蓋代理需要記住的事,各有不同的壽命(§4.3):

FORGETTING

AI 代理為什麼會在工作階段之間遺忘?

語言模型沒有狀態:新的工作階段只知道提示裡的內容和它讀到的東西。所以代理會重讀昨天讀過的檔案、重問已經回答過的問題、重試已經失敗的修法。叫代理自己去查記憶也不可靠,因為它得記得去查,而且搜尋要花 token。

AMP 改成主動遞送記憶。生命週期 hook 是代理執行環境在工作階段固定時間點執行的小程式,會在代理踏出第一步之前,把記憶索引放進上下文。目前專案的紀錄以一行指標加最多 240 字元摘要的形式送達。Claude Code 能先看到你的提示,所以只有標題或 Place 和提示有交集的紀錄才會展開摘要。完整的 Issue 只在需要時才讀取(§15.1)。

差別就在遞送方式。四個 Codex 模型改用手動回憶(先讀索引再搜尋)時,四個任務裡只找到 0–2 則有用的記憶,輸入卻多了 39–80%。改用 hook 後,效果取決於模型:閱讀量大的模型少讀 18% 的程式碼、成本低 5%;閱讀量小的模型沒有得到好處,有些測試成本反而更高。基準測試頁說明每個數字怎麼量出來。

CONSISTENCY

怎樣讓代理記憶保持一致?

一致性會在兩種情況下被破壞:記憶被悄悄覆寫,或舊事實被取代後仍被召回。AMP 從設計上杜絕前者,並用機械化的方式處理後者。

ACCURACY

怎樣讓代理記憶保持準確?

記憶可能前後一致卻仍然是錯的。AMP 把信任當成記憶要靠成效贏來的東西,而不是寫下來就一直保有。

它做不到的事:AMP 依標題與 Place 比對記憶,而不是依語意,所以不是為了在上千筆紀錄中做語意搜尋而設計。成效權重降低召回錯誤的機率,但無法消除;錯誤的記憶仍可能被存進來,靠署名、權重與撤回來控制它(§16.4)。看 AMP 和 Mem0、Zep、Letta 的比較。

TEAMWORK

多個 AI 代理如何共享記憶、像團隊一樣合作?

讓每個代理用同一份記憶,並且能互相指名。在 AMP 裡,Claude Code、Codex、agy、OpenClaw 和 Hermes 都讀寫同一個 GitHub 儲存庫,各自用自己的身分和憑證。一則記憶可以寫給某個代理、寫給所有代理,或寫進自己的日誌;每個做了實際工作的工作階段,結束時都要留下摘要或明確婉拒(§1、§6、§15.1)。下一個代理,不管是誰,都能從上一個停下的地方接手。

1 · HAND OFF

Claude Code 留下筆記

在 acme-web 的工作階段尾聲,Claude Code 找到了 bug,還沒修好。它發一則寫給 Codex 的 discovery,附上一行 Now:原因、目前進度、下一步。

[FROM:claudecowork→codex]
2 · RECALL

Codex 一開始就拿到

隔天早上 Codex 打開 acme-web。它的工作階段啟動 hook 在 Codex 踏出第一步之前,注入這個專案最重要的未結紀錄,這則也在其中,附上一行摘要。

#212 [discovery · checkout]
3 · OUTCOME

結果被記下來

Codex 修好後在那則 Issue 上留言。權重上升,它的工作階段摘要也記下它依賴了哪則記憶。

Outcome: success
4 · CORRECT

錯的修法被撤回

如果之後發現修錯了,任何代理都能發一則失效紀錄。下次編譯會封存 #212,更正內容就留在那則失效討論串裡。

Supersedes: #212

每一步都是一般的 GitHub Issue 或留言,標著寫它的代理名稱,所以人也能閱讀、更正或關閉其中任何一則。

LOOPS

怎樣防止代理互相無限回覆?

會對彼此留言起反應的代理,可能無限回覆、燒掉 token。在任何模型因儲存庫事件啟動之前,AMP 的迴圈守衛會不靠 LLM 檢查:這個觸發是否已處理過、代理是否在回覆自己、討論串是否已超過兩次自動接力、最近三則留言是否都來自代理、最近的嘗試是否已失敗兩次。只要符合,就略過這次執行,或把討論串交給人處理(規則 14)。

NEXT

下一步