← 所有文章

脈絡壓縮正成為一種訓練目標

每一場漫長的代理工作階段,結局都如出一轍。脈絡被填滿、摘要隨即觸發,接著整段執行便在對先前內容的壓縮記憶上繼續進行。在 Claude Code 裡,觸發點是 /compact,或是當你接近視窗上限時自動執行的那一道流程。操作者把這一刻當成需要管理的摩擦:保住重要的狀態、指望摘要能留住它,然後繼續往前。近期一連串的研究卻指出,這種直覺即將過時。壓縮正從一個你在外圍設法繞開的推論期修補,轉變為模型直接最佳化的訓練期目標。當模型因為產出能挺過自身壓縮的軌跡而獲得獎勵,脈絡管理就不再是你在旁照看的差事,而開始成為一種你可以主動挑選的特性。 {.answer-block}

TL;DR

  • 如今,脈絡壓縮發生在推論期。Anthropic 自己也把它定位為一種脈絡工程技術:把接近視窗上限的對話加以摘要,再用該摘要重新初始化。2 圍繞它建立的執行期工具組——/compact、自動壓縮、脈絡編輯、記憶工具——全都是包在一個並不知道自己正被壓縮的模型之外。34
  • CompactionRL 則訓練模型去預期壓縮。它以強化學習聯合最佳化任務執行與摘要產生,讓代理從壓縮後的軌跡中學習,而不是被壓縮打斷。1
  • 這些數字是真的。在 GLM-4.5-Air 上,它於 SWE-bench Verified 達到 66.8% 的 Pass@1,提升了 7.0 個百分點,並在 Terminal-Bench 2.0 上達到 24.5%。1 這些基準有爭議、也很新,並非玩具。89
  • 這不是單一一篇論文。Memory-R1 以強化學習訓練 ADD/UPDATE/DELETE 的記憶操作;MemAct 則把脈絡的策展視為策略所採取的動作,並端到端地加以最佳化。67 三個獨立團隊都伸手抓向了同一步棋。
  • 無論如何,給操作者的結論都成立。把壓縮的接縫當成一個設計面,而非意外:決定哪些內容存放於持久記憶、哪些屬於暫時脈絡,用 PreCompact hook 守住這條邊界,並開始把模型經過訓練的壓縮能力當成一條規格,而非一則註腳。5

一個大家早已在管理的修補

脈絡是一種有限的資源,每一位運行長時間工作階段的操作者,都學會了要精打細算地分配它。Anthropic 自家的工程文章精準地為這個失效模式命名:隨著 token 數攀升,回想能力隨之退化,他們把這種衰退稱為脈絡衰退(context rot)。2 同一篇文章也用淺白的語言定義了對策。壓縮,就是把一段接近脈絡視窗上限的對話取來、將其內容摘要,再用該摘要重新初始化一個新脈絡視窗的做法。2

再讀一次那個定義,並留意工作發生在哪裡。它發生在模型的外圍、在推論期,由模型無從參與的機制執行。Claude Code 把這套機制具體化了。/compact 指令藉由摘要目前為止的對話來釋出脈絡空間,而你可以傳入聚焦指示,引導摘要要留下什麼。4 自動壓縮會在脈絡接近上限時自動執行同一道流程;它透過 autoCompactEnabled 設定預設開啟,你可以用 CLAUDE_CODE_AUTO_COMPACT_WINDOW 設定它據以觸發的有效視窗,或用 DISABLE_AUTO_COMPACT 將它關閉。4 在平台端,脈絡編輯會在你接近 token 上限時自動清除陳舊的工具呼叫與結果,而一個以檔案為基礎的記憶工具,則讓模型能把資訊完全存放在視窗之外。3

這些都是好工具。Anthropic 指出,光是脈絡編輯就讓一項長程代理評測提升了 29%,而搭配記憶工具後,在一次上百輪的執行中把 token 消耗削減了 84%。3 重點不在於執行期做法有多弱,而在於它預設了什麼。這些技術每一項,都把脈絡當成工作階段的外部屬性來管理,套用在一個以未壓縮軌跡訓練、直到部署才首度遇上壓縮的模型上。模型一如既往地產出一段長軌跡。是別的東西在決定何時摘要、留下什麼、以及如何接續。接著,模型便在一段它並未撰寫、也從未受訓去預期的壓縮脈絡裡醒來。

模型受訓的方式與它被運行的方式之間的那道落差,正是新研究正在縫合的那條接縫。

CompactionRL 究竟改變了什麼

出自智譜 GLM 團隊的 CompactionRL,從同樣的問題陳述出發,卻把解法反轉過來。它不再把壓縮外掛到推論上,而是讓壓縮成為模型受訓內容的一部分。這套方法聯合最佳化任務執行與摘要產生,並運用 token 層級的損失正規化與跨軌跡的廣義優勢估計,好讓代理能從壓縮後的長程軌跡中學習,而不是被它們帶偏。1

撇開這些機制,這個轉變其實不難說清楚。在執行期做法裡,摘要器位於策略之外,模型只能承受它產出的任何東西。而在 CompactionRL 裡,摘要是由執行任務的同一個策略所產生,兩者一同獲得獎勵。模型被訓練去寫出自己能據以行動的摘要,也去在自己所寫的摘要上妥善行動。壓縮不再是一種打斷,而成為代理已經演練過的一步棋。

這些成果落在當前的基準上。建立於開源的 GLM-4.5-Air 模型之上,CompactionRL 在 SWE-bench Verified 上達到 66.8% 的 Pass@1,絕對值提升 7.0 個百分點,並在 Terminal-Bench 2.0 上達到 24.5%。1 在較小的 GLM-4.7-Flash 上,它在這兩項基準上分別再加了 5.5 與 6.8 個百分點。1 這兩項基準都真實而艱難:SWE-bench Verified 是一個經人工驗證、含 500 個問題的子集,用於解決真實的 GitHub issue;Terminal-Bench 2.0 則是 89 項經人工驗證的命令列任務,前沿代理在其上的得分仍不到三分之二。89 SWE-bench Verified 值得附上一個提醒:OpenAI 已於 2026 年初,因測試瑕疵與污染問題公開與它保持距離,因此宜將它視為最常被引用的代理式編碼基準,而非一項無可挑剔的基準。8 這些增益能挺過這個提醒,因為它們是模型內部的差值:同一個基礎模型,經訓練去壓縮,勝過了它自己。

論文裡最耐人尋味的一句話並不是某個基準數字。CompactionRL 已被部署到用於訓練下一代開源 GLM 模型的強化學習流程中。1 壓縮已經從一件你對模型做的事,變成了一件用來打造模型的事。

並非一次性的偶然

一篇論文是一項成果。三個獨立團隊都伸手抓向同一步棋,則是一個方向。除了 CompactionRL 之外,另有兩篇 2025 年的論文,把脈絡管理當成一件要去訓練的事,而非一件要去包裹的事。

Memory-R1 為代理配備了一個記憶管理器,透過強化學習學會結構化的操作——ADD、UPDATE、DELETE 與 NOOP——好讓「記住什麼、丟棄什麼」的決策,成為一項學習而來的策略,而非一條固定的啟發法則。6 它僅以 152 個訓練範例就達成其成果,這顯示這項能力比較接近潛藏,而非昂貴。6 MemAct 則更深入本文所談的這個框架。它把脈絡管理表述為就地編輯的操作——刪除與插入——並透過端到端的強化學習,聯合最佳化資訊保留與任務表現。7 用他們的話說,記憶即行動:對工作脈絡的策展並不是一個前處理步驟,而是策略的一部分。

合在一起讀,這三篇論文描述的是同一場遷移。執行期工具組——脈絡編輯、外部記憶、排程摘要——是對有限視窗的當前解答。而訓練期做法則讓同樣的行為內化到模型之中,並針對真正要緊的那個獎勵去學習,也就是把任務做完。當同一個想法在同一年內,於記憶操作、脈絡編輯與軌跡壓縮裡先後出現,個別論文的重要性,反而不如它們共同指向的那個向量。

這對你今天的建構方式意味著什麼

這一切明天都還不會進到你的框架裡,而操作者誠實的問題是:在它抵達之前該做些什麼。答案不是等待。這場遷移為你早已圍繞脈絡在做的工作重新定價,而有幾步棋能讓你為即將到來的那個版本卡好位置。

把壓縮的邊界當成一個設計面。眼下大多數操作者都是不小心才發現自己的壓縮行為,事後才注意到某段摘要把第三輪裡的一個決策給丟掉了。讓它成為有意為之。事先決定哪些內容屬於能撐過任何重置的持久記憶——你的規則、你的專案慣例、任務契約——又有哪些屬於摘要獲准壓縮的暫時脈絡。在 Claude Code 裡,持久層就是你的 CLAUDE.md 與規則檔案,它們會在壓縮後透過 InstructionsLoaded 事件重新載入,以及一個以檔案為基礎、用來存放必須比視窗更長壽之狀態的記憶儲存區。35 其餘的一切,摘要器都可以隨意處置。

用 hook 守住接縫,而不是靠指望。Claude Code 提供了一個 PreCompact hook,會在壓縮之前觸發,並能引導或阻擋它;以及一個用於事後清理的 PostCompact hook。5 如果某一類狀態絕不能被摘要抹去,PreCompact hook 正是你確定性地強制執行這件事的地方,而不是去指望一條聚焦指示會被遵守。這套紀律,跟讓 hook 成為「任何必須永遠執行之事」正確工具的那套,是同一回事:你把一項保證從提示詞裡挪出來,放進程式碼裡。

開始把經過訓練的壓縮能力當成一條規格來讀。隨著 CompactionRL 這個方向日漸成熟,各模型之間的差異,將不只在於脈絡視窗大小,也在於它們被訓練得多善於在壓縮狀態下工作。視窗大小當了兩年的頭條數字,就是那個定錨每一張模型卡的 200K 對比 1M 之爭。這個數字即將與一個更安靜的數字同台:當一個模型不得不摘要自己時,它退化得有多優雅。當你為長程工作評估一個模型時,把一項真正夠長的任務擺到它面前——一項至少會逼出一次壓縮的任務——然後看看有什麼留了下來。這種行為,正逐漸成為一項值得主動挑選的特性。

把長工作安排成讓接縫落在乾淨的位置上。即使是受過壓縮訓練的模型,跨越一個已完成的子任務時,也仍然比跨越一個寫到一半的子任務壓縮得更好。在訓練還沒到處跟上之前,你只要把工作塑造成讓自然的檢查點——一個通過的測試、一次已提交的變更、一個已收尾的子任務——對齊到壓縮很可能觸發之處,就能免費拿到大部分的好處。無論如何,這都是良好的框架設計,而它也正是那些受過訓練的模型正在學著去預期的結構。

立場

脈絡視窗大小,不再是定義框架架構的那道約束。兩年來,設計上的討論都是從 token 預算出發:能塞進多少、要驅逐什麼、何時摘要。這種框架把模型看成一只固定的容器,把脈絡看成一種你小心翼翼倒進去的資源。CompactionRL 這個方向,把容器給溶解了。當模型被訓練去管理自身的壓縮,視窗就不再是一道你設法對抗的硬牆,而成為一段模型被教會如何一路走下去的柔和梯度。

執行期工具組並不會消失。對於脈絡管理中真正屬於你的那些部分——哪些事實具權威性、哪些檔案是真相來源、任務到底是什麼——脈絡編輯、記憶工具與手動的 /compact,依然是正確的控制手段。這場遷移,比全面自動化更狹窄、也更耐人尋味。它把脈絡管理機械性的那一半,也就是摘要與接續的水電管路,搬進模型裡,而把編輯性的那一半,也就是判斷什麼要緊,留給你。脈絡工程一分為二:一邊是模型負責的,一邊是你仍然擁有的,而兩者之間的邊界,正是良好框架設計如今棲身的新地方。

跡象早已寫在 CompactionRL 那篇論文裡。壓縮在一個前沿模型的訓練流程中掙得了一席之地,就緊挨在編碼與推理的獎勵訊號旁邊。凡是進到訓練迴圈裡的能力,通常都不會再離開。贏得未來一年的操作者,是那些不再把壓縮當成要去撐過的意外,而開始把它當成一份要去設計的契約的人。

重點整理

  • 壓縮正從推論期遷移到訓練期。 CompactionRL、Memory-R1 與 MemAct 各自獨立地運用強化學習,把脈絡管理變成一種學習而來的行為,而非一層外部包裝。167
  • 執行期工具是當前的解答,而不是最終的解答。 /compact、自動壓縮、脈絡編輯與記憶工具,都是圍繞著一個未受訓去預期壓縮的模型在管理脈絡。34
  • 刻意把持久記憶與暫時脈絡分開。 把規則、慣例與任務契約放進能撐過重置的那一層;其餘的一切,就讓它們可被壓縮。35
  • PreCompact hook 強制守住這條邊界。 把任何「不得摘要」的保證,從聚焦指示裡挪出來,放進確定性的程式碼中。5
  • 把壓縮能力當成一條規格來讀。 用一項長到足以逼出一次壓縮的任務去測試候選模型,然後看看有什麼留了下來。視窗大小,不再是唯一要緊的數字。

常見問題

什麼是脈絡壓縮?

壓縮,就是把一段接近脈絡視窗上限的對話加以摘要,並從該摘要重新初始化一個新視窗,好讓長時間運行的代理能越過原始歷史本會溢位的那個點繼續下去。2 它以逐字歷史,換取一個塞得下的壓縮表示。

Claude Code 會自動壓縮脈絡嗎?

會。自動壓縮預設開啟,並會在脈絡接近上限時執行。你可以用 CLAUDE_CODE_AUTO_COMPACT_WINDOW 調整有效視窗、用 DISABLE_AUTO_COMPACT 將它停用,或用 /compact 手動觸發一道流程,並可選擇為摘要傳入聚焦指示。4

CompactionRL 是什麼?

這是出自 GLM 團隊的一種強化學習方法,藉由聯合最佳化任務執行與摘要產生,訓練長程代理去與壓縮共處,好讓模型從壓縮後的軌跡中學習。它在 SWE-bench Verified 上把 GLM-4.5-Air 提升了 7.0 個百分點,並已被部署到下一代 GLM 模型的訓練流程中。1

你能訓練一個模型去管理它自己的脈絡嗎?

近期的研究所展示的正是這件事。Memory-R1 以強化學習訓練明確的記憶操作,MemAct 把脈絡編輯視為策略的動作,而 CompactionRL 則直接訓練軌跡壓縮。這三者都讓脈絡管理內化為模型本身的一部分,而非一個執行期的附加元件。167

訓練一個模型去壓縮,會讓脈絡視窗變得無關緊要嗎?

不會,但它改變了這個數字的意義。更大的視窗仍然有幫助,然而一個被訓練得擅長壓縮的模型,能在任何視窗之內走得比一個直到部署才遇上壓縮的模型更遠。經過訓練的壓縮能力,成為與原始視窗大小並列的第二條軸線。

現在,我該為代理的脈絡壓縮做些什麼?

去設計壓縮的接縫,而不是碰巧發現它。決定哪些內容存放於持久記憶、哪些屬於暫時脈絡,用 PreCompact hook 守住這條邊界,把長任務安排成讓壓縮落在已完成的子任務之間,並用長到足以逼出一次摘要的任務去評估新模型。5

資料來源


  1. Yujiang Li、Zhenyu Hou、Yi Jing、Jie Tang、Yuxiao Dong。〈CompactionRL: Reinforcement Learning with Context Compaction for Long-Horizon Agents〉。arXiv:2607.05378,2026 年 7 月。https://arxiv.org/abs/2607.05378. 回報 GLM-4.5-Air 在 SWE-bench Verified 上的 Pass@1 為 66.8%(+7.0),在 Terminal-Bench 2.0 上為 24.5%,GLM-4.7-Flash 則為 +5.5/+6.8;並表示該方法已部署於訓練 GLM-5.2 的強化學習流程中。 

  2. Prithvi Rajasekaran、Ethan Dixon、Carly Ryan、Jeremy Hadfield。〈Effective context engineering for AI agents〉。Anthropic Engineering,2025 年 9 月 29 日。https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents. 定義了壓縮與「脈絡衰退」(context rot)這種退化,並把脈絡工程框定為在推論期間策展出最理想的一組 token。 

  3. 〈Managing context on the Claude Developer Platform〉。Anthropic,2025 年 9 月 29 日。https://claude.com/blog/context-management. 脈絡編輯會在接近 token 上限時「自動清除陳舊的工具呼叫與結果」;記憶工具則把資訊存放在脈絡視窗之外、以檔案為基礎的系統裡。回報單靠脈絡編輯即帶來 29% 的提升,與記憶結合則為 39%,並在一項 100 輪的網頁搜尋評測中減少了 84% 的 token。 

  4. Claude Code 文件:Commands、Settings 與 Environment variables。https://code.claude.com/docs/en/commands, https://code.claude.com/docs/en/settings, https://code.claude.com/docs/en/env-vars. /compact [instructions] 會摘要並繼續;autoCompactEnabled(預設為 true)掌管自動壓縮;CLAUDE_CODE_AUTO_COMPACT_WINDOW 設定觸發時所用的 token 視窗;DISABLE_AUTO_COMPACT 則將它關閉。 

  5. Claude Code Hooks 參考文件。https://code.claude.com/docs/en/hooks. PreCompact 會在壓縮之前觸發,並支援一項阻擋的決策;PostCompact 在壓縮之後觸發;InstructionsLoaded 則在 CLAUDE.md 或規則檔案載入時觸發,包括壓縮之後(matcher 值為 compact)。 

  6. Sikuan Yan、Xiufeng Yang、Zuchao Huang 等。〈Memory-R1: Enhancing Large Language Model Agents to Manage and Utilize Memories via Reinforcement Learning〉。arXiv:2508.19828,2025 年 8 月。https://arxiv.org/abs/2508.19828. 以強化學習訓練一個記憶管理器去學會 ADD、UPDATE、DELETE 與 NOOP 操作,僅使用了 152 個訓練範例。 

  7. Yuxiang Zhang、Jiangming Shu、Ye Ma、Xueyuan Lin、Shangxi Wu、Jitao Sang。〈Memory as Action: Autonomous Context Curation for Long-Horizon Agentic Tasks〉。arXiv:2510.12635,2025 年 10 月。https://arxiv.org/abs/2510.12635. 把脈絡管理表述為以強化學習端到端最佳化的就地編輯操作。 

  8. 〈Introducing SWE-bench Verified〉。OpenAI,2024 年 8 月 13 日。https://openai.com/index/introducing-swe-bench-verified/. 這是 SWE-bench 中一個經人工驗證、含 500 個實例的子集,用於解決真實的 GitHub issue。註:OpenAI 已於 2026 年 2 月,因測試瑕疵與污染問題,不再把這項基準當成前沿指標 (https://openai.com/index/why-we-no-longer-evaluate-swe-bench-verified/),因此最好將它讀作最常被引用的代理式編碼基準,而非一項決定性的基準。 

  9. Terminal-Bench。Stanford 與 Laude Institute。https://www.tbench.ai/. Terminal-Bench 2.0 是 89 項經人工驗證的命令列任務,涵蓋軟體工程、機器學習、資安與資料科學;前沿代理的得分約莫不到三分之二。 

相關文章

情境壓縮是一項決策,而非一道門檻

程式撰寫代理在計數器觸發時壓縮情境,而非在安全的停頓點。2026 年的一篇論文顯示,由模型決定的壓縮可削減 30 至 70% 的成本。

1 分鐘閱讀

先獎勵工具,再獎勵答案

當答案宣稱進行了從未發生的工具操作時,AI代理就會失敗。本文剖析四種失敗模式與一條能識破它們的規則,並對照工具監督式強化學習的研究。

1 分鐘閱讀

你的 AI 代理寫程式碼的速度比你閱讀的速度還快

本週有五個研究團隊發表了關於同一個問題的論文:AI 代理產生程式碼的速度遠超開發者理解它的速度。債務累積在你的腦中。

4 分鐘閱讀