把「記憶管理」當成一種可訓練的認知技能(metamemory):讓模型自己用檔案系統決定要記什麼、何時查、怎麼組織,再用兩個 meta-LLM 外迴圈自動優化,讓 32B 開源模型追平 Claude Opus 4.5。
認知科學把「決定什麼值得記、何時取回、如何組織」這種能力稱為 metamemory(後設記憶),而且它是練出來的技能。本文把這個視角搬到 LLM:與其把記憶設計成一個固定架構模組,不如讓模型自己主動管理記憶,並把這件事當成可以被觀察、評估、優化的技能。
LLM 的 context window 扮演「工作記憶」的角色 — 一個固定大小、限制模型一次能注意多少內容的緩衝區。長時程(long-horizon)任務動輒跑上萬步,遠遠超過這個容量。過去的外部記憶做法(RAG 檢索庫、向量庫、scratchpad、summary buffer,如 MemGPT、Generative Agents、A-MEM、MemoryBank)幾乎都把記憶當成一個被設計進系統的固定機制。
本文把 read / write / search / append / create 這些檔案系統操作,提升為模型 action space 裡的第一級記憶動作,和它作用於世界的任務動作平起平坐。同一次 forward pass 既能選任務動作,也能選記憶操作(例如 <|APPEND|> 或 <|SEARCH|>)。這個極簡設計把記憶的完整控制權交給模型,同時保持行為可觀察 — 每個記憶決策都是軌跡裡一個可追溯的動作。
兩個難以手動優化的軸:記憶技能沿兩軸提升 —(1)支撐它的 結構(structure):prompt、file schema、驗證邏輯、動作詞彙;(2)模型行使技能的 熟練度(proficiency)。但一個 episode 可長達 105 步,一個記憶錯誤可能在第 50 步犯下、卻到第 800 步才浮現後果 —人工檢視完整軌跡幾乎不可行。
核心觀察是:一個夠強的 LLM(作為 meta-LLM)能通讀 agent 完整的 episode(數千步),像 code reviewer 讀完整執行 log 一樣,找出記憶決策哪裡出錯。這讓「自動化記憶改進的兩個軸」變得可行。
用檔案系統操作把記憶管理放進與任務動作相同的 action space,模型對「記什麼、何時取、怎麼組織」有完整且可觀察的控制。
沿兩互補軸自動優化:scaffold 修訂(迭代記憶結構)+針對性訓練(強化模型記憶熟練度)。兩個迴圈都由分析完整軌跡的 meta-LLM 驅動。
三個程序生成長時程遊戲上,只優化記憶就帶來 ~2×–4× 進度提升,讓 32B 開源模型顯著逼近前沿閉源系統。
AutoMem 由兩個依序執行的外迴圈組成,共同作用在一個以檔案系統為記憶的內迴圈 agent 上。外迴圈 #1 把 agent scaffold 推到「程式碼修訂能達到的極限」;外迴圈 #2 再訓練模型的記憶能力,突破任何固定 scaffold 的天花板。
內迴圈是一個 LLM agent 執行一個 episode,配一個磁碟上的資料夾當外部記憶。每一步跑兩個 routine:
agent 決定要不要、以及怎麼記錄環境對上一個動作的回應:append 到既有檔、開新檔、或改寫既有條目。
agent 跨檔 search、讀特定條目或其尾端,然後提交下一個世界動作。
為什麼共享 action space 很關鍵:因為記憶操作和任務動作都在同一個軌跡裡、都是可追溯的動作,外迴圈才能「觀察、評估、優化」它。實驗也印證:優化記憶結構本身也會改善任務行為(例如遊戲操作)— 更好的記憶組織減少了冗餘探索與漫無目的的動作,即使優化器針對的是記憶而非任務策略。
兩個迴圈都對應機器學習的熟悉結構:各有要優化的 參數 θ 和 更新訊號 ∇L,都由 meta-LLM 的軌跡分析驅動。scaffold 設定「哪些記憶操作可能」的結構天花板,proficiency 訓練再把模型推向這個天花板。
優化訊號必須是軌跡級的,因為記憶決策的後果在長時程任務裡常被延遲:第 50 步沒記下地圖座標、或寫了重複條目把有用資訊埋掉,可能到第 800 步 agent 迷路、浪費時間重探時才浮現。只看最終 return 指標會丟掉「哪裡出錯」的軌跡結構。
因此 meta-LLM 拿到完整 episode 軌跡(逐步 log、產生的記憶資料夾、agent 程式碼本身),像個手握完整執行 log 的 code reviewer,而非一個純量獎勵訊號。例如審查 NetHack 軌跡時,它發現一個無界地圖檔累積了數千筆重複座標、把有用資訊埋掉,於是導入一個乾淨的、以座標為 key 的地圖去重格式。每次迭代都以實測進步為門檻:改寫後的 agent 跑同一組固定 seed,只有平均進度提升才保留該修訂,通常 2–5 次迭代收斂。
scaffold 優化後,剩下的差距在於模型「做出好記憶決策」的參數能力。這個迴圈用 meta-LLM 當 training engine(訓練引擎)更新模型權重。它讀 agent 程式碼+大量 episode 軌跡,推導篩選準則,產出監督訓練資料。
meta-LLM 是「篩選器」而非「老師」:訓練集裡每個範例都是內迴圈模型自己在 episode 中產生的原文,meta-LLM 只負責挑哪些回應值得強化 — 它過濾模型自己的行為,而不是生成新回應。此外它把資料選取邏輯、資料組成、LoRA 訓練設定當成一個聯合決策,跨多次試驗一起調校,好讓 finetune 是乾淨的能力提升而非干擾。
因為記憶是可分離的技能,本文只 finetune 一個專屬記憶模型(memory specialist),而提交世界動作的模型保持不動。部署時內迴圈跑兩個共享同一段對話歷史的模型實例:
處理 LOG routine,以及 PLAN routine 裡「查詢記憶」的部分。是 base model 的 LoRA 微調副本。
未修改的 base model,負責提交世界動作。在 specialist 最後一次記憶操作後,透過簡短交棒把對話交給它。
兩個好處:(1)訓練訊號聚焦 — 監督 loss 只針對記憶操作行為,不被動作格式範例稀釋;(2)base model 產生正確世界動作的能力完整保留,因為 gameplay model 權重從未被 finetune 動過。結果是記憶熟練度的提升會乾淨地疊加在 scaffold 增益之上(額外 ~9–18% 相對提升),而非彼此抵銷。
程序生成的長時程遊戲很適合研究記憶技能:episode 夠長,光靠 context window 管理撐不住;世界每個 episode 重新生成,pretraining 知識難以轉移;而成功需要人類自然會做的那種紀錄 — 地圖、物品欄、遭遇 log、策略筆記。三個環境都來自 BALROG benchmark。
2D 開放世界生存遊戲。17 個動作、22 個成就(探索/製作/戰鬥)。episode 最長 ~103 步。
103
步/episode
建在 NetHack 引擎上的 8 個任務套件(迷宮、走廊、Boxoban 推箱、任務)。33 個動作、~102 步/任務。
8
任務變體
完整 NetHack Learning Environment(NLE)。200+ 動作,104–105 步/episode,地城/怪物/物品每個 seed 重生。人類玩家通常要數年才精通。
105
最長步數
Crafter=22 成就取得比例;MiniHack=8 任務完成比例(每任務二元);NetHack=BALROG 的地城深度+經驗等級進度指標。報告 10 個固定 seed [42..51] 的 mean ± 標準誤。
內迴圈 base=Qwen2.5-32B-Instruct(vLLM 本地服務)。scaffold 優化器用 Claude Opus 4.6、訓練引擎用 Claude Opus 4.7 當 meta-LLM。memory specialist 以 LoRA 訓練,gameplay model 為未修改 base。
Baseline 分兩組:(i) BALROG 排行榜 — 前沿閉源(Gemini-3-Pro、Gemini-3.1-Pro-Thinking、Claude-Opus-4.5、Gemini-2.5-Pro)、前沿開源推理(DeepSeek-R1 671B)、同族開源兩種規模(72B、7B);(ii) 同一個 32B 在 BALROG harness 下用基本 context 管理:16 步 sliding window(含/不含 chain-of-thought)。
整個 scaffold 優化過程模型權重都沒動 — 只改 agent 程式碼、prompt、file schema — 進度卻在每個環境上大約翻倍或超過三倍。再疊上 memory training,把 32B 開源模型帶到 Claude-Opus-4.5 的水準。
| Agent | Crafter | MiniHack | NetHack |
|---|---|---|---|
| 前沿閉源(BALROG 排行榜) | |||
| Gemini-3-Pro | 57.3 ± 4.4 | 40.0 ± 7.7 | 6.8 ± 3.2 |
| Gemini-3.1-Pro-Thinking | 55.0 ± 6.4 | 27.5 ± 7.1 | 2.6 ± 0.3 |
| Claude-Opus-4.5 | 49.5 ± 3.1 | 27.5 ± 7.1 | 2.0 ± 0.5 |
| Gemini-2.5-Pro | 55.0 ± 6.0 | 17.5 ± 6.0 | 1.7 ± 0.2 |
| 開源(BALROG 排行榜) | |||
| DeepSeek-R1 (671B) | 36.4 ± 3.8 | 25.0 ± 6.8 | 1.4 ± 0.5 |
| Qwen2.5-72B-Instruct | 27.3 ± 3.6 | 5.0 ± 3.4 | 0.3 ± 0.3 |
| Qwen2.5-7B-Instruct | 16.4 ± 3.0 | 0.0 ± 0.0 | 0.0 ± 0.0 |
| Qwen2.5-32B-Instruct · 基本 context 管理 baseline | |||
| sliding window | 19.55 ± 3.46 | 2.50 ± 2.47 | 0.00 ± 0.00 |
| + chain-of-thought | 17.27 ± 2.71 | 10.00 ± 4.74 | 0.00 ± 0.00 |
| Qwen2.5-32B-Instruct · AutoMem(本文) | |||
| memory-as-file-system, v0 | 25.00 ± 5.50 | 7.50 ± 4.16 | 0.42 ± 0.37 |
| + scaffold opt.(loop #1) | 47.27 ± 2.05 | 27.50 ± 7.06 | 1.57 ± 0.35 |
| + memory training(loop #2) | 51.36 ± 3.81 | 30.00 ± 7.25 | 1.85 ± 0.44 |
scaffold 優化(權重未動)就讓進度翻倍或三倍以上:Crafter 25.0→47.27(×1.89)、MiniHack 7.5→27.5(×3.67)、NetHack 0.42→1.57(×3.74)。scaffold 後的 32B agent 大幅贏過 Qwen2.5-72B-Instruct,也遠勝同 base 的 sliding-window 策略 — 說明在長時程任務上,結構良好的外部記憶管理比模型規模或 context 管理更高槓桿。
在優化後的 scaffold(Crafter v5 / MiniHack v4 / NetHack v2)之上,memory-proficiency 訓練把進度再提升到 Crafter 51.36%(+4.09)、MiniHack 30.0%(+2.5)、NetHack 1.85%(+0.28),幅度相當於一到兩次 scaffold 迭代。兩軸協同:結構修訂推高 prompt/schema 天花板,熟練度訓練補足模型能力差距 — 一起把 32B 帶到 Claude-Opus-4.5(49.5/27.5/2.0)水準,並在幾分之內逼近 Gemini-3.1-Pro-Thinking(55.0/27.5/2.6)。
−32~65%
卡住或來回振盪的步數比例(三環境)。
−68~83%
重複寫入大幅下降。
−13~50%
SEARCH 卻回傳空的比例下降 → 檢索更精準。
−3~30%
Crafter/NetHack 達 −25~30%,更精簡的記憶壓縮了模型要注意的內容。
下面是外迴圈 #1 對 NetHack 記憶 schema 的具體改寫(依論文 Figure 5):把無界 append-only 的地圖檔,換成以座標為 key 的去重格式,並自動同步物品欄與狀態、預載策略參考。結果讓記憶每步的成長從 138 字元降到 6 字元,減少 95%。
# v0:無界、只 append,累積重複座標,把有用資訊埋掉
dungeon_map.txt:
(3,4) corridor
(3,4) corridor # 重複:同一格重走時又記一次
(3,5) wall
(3,4) corridor # 又重複…檔案無限成長
# 優化後:座標為 key 的去重 + 自動同步檔 + 策略參考
<|UPSERT_MAP|> (3,4) corridor # 新觀測 overwrite 舊條目,不再 append
inventory.txt # 由 scaffold 從 observation 自動同步,模型免手動 READ 對帳
status.txt # 同上,自動維護
strategy.txt # 預載主要目標(找樓梯、下降),省掉早期重新發現目標的操作
訓練後的 memory specialist 出現一致的行為轉變:動筆改記憶前先查詢記憶。LOG 階段的 writes/SEARCH 比在每個環境都下降 — specialist 在 append 新內容前,會先 search 既有檔,而非盲寫。
| 環境 | Base | + Trained |
|---|---|---|
| Crafter | 0.84 | 0.39 (−54%) |
| MiniHack | 2.89 | 0.82 (−72%) |
| NetHack | 4.66 | 1.31 (−72%) |
質性軌跡(Figure 6):Crafter 進度 9 → 55 → 59%(base 只砍木頭;scaffold 造石器、蓋熔爐、挖鐵;trained 同層級還會餵飽自己);MiniHack Corridor-R3 為 0 → 0 → 100%(唯 trained specialist 走出分支走廊到達樓梯);NetHack 0 → 1.85 → 2.42%(base 在經驗等級 1 幾百步內死掉;scaffold 撐數千步達等級 2;trained 存活更久、爬到等級 4)。
作者明確點出三個限制,每個都指向一個延伸方向。
檔案系統在每個 episode 開頭都清空重來。自然的延伸是 persistent memory:跨 episode 攜帶知識。
遊戲很適合研究記憶(長時程、程序生成、豐富的資訊管理需求),但方法也應能套用到真實世界、記憶密集的任務。
三個遊戲結構與目標不同,因此各優化一套 scaffold 與 memory specialist。能否共用單一 scaffold 或 specialist,尚待探索。
本文證明記憶管理是 LLM agent 一個可獨立學習、高槓桿的技能。AutoMem 把它拆成 structure 與 proficiency 兩軸,用 meta-LLM 外迴圈自動優化;只調記憶(不動 gameplay 權重)就在三個長時程遊戲上帶來 ~2×–4× 提升,逼近前沿閉源系統。更廣的發現是:長時程任務改進可分解成「軌跡級審查 + 針對性修訂」,這種工作流程能被 meta-LLM 自動執行 — 而人工檢視完整軌跡不可行。把這個分解套用到記憶以外的其他 agent 能力,是有潛力的方向。
Broader Impacts:把記憶管理當成獨立能力來自動優化與針對訓練,能降低長時程 agent 變得實用所需的模型規模門檻,對開源部署是可近用性的提升。相同技術可延伸到遊戲以外任務。作者提醒:釋出的產物未經進一步安全審查,不宜直接用於高風險部署。