上下文压缩正在成为一种训练目标
每一次漫长的智能体会话都以相同的方式收尾。上下文被填满,一段摘要随之触发,运行便基于此前经历的压缩记忆继续下去。在 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钩子守住这条边界,并开始把一个模型经过训练的压缩能力当作规格中的一行、而非一条脚注来看待。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%,而将其与记忆工具搭配使用,在一次百轮运行中削减了 84% 的 token 消耗。3 关键不在于运行时方案孱弱,而在于它所假设的前提。这些技术无一例外,都把上下文当作会话的一种外部属性来管理,作用于一个在未经压缩的轨迹上训练、只在部署时才遭遇压缩的模型。模型一如既往地产出一条长轨迹。何时摘要、保留什么、如何续接,由别的东西来决定。随后,模型在一个并非自己撰写、也从未被训练去预期的压缩上下文中醒来。
模型的训练方式与运行方式之间的这道鸿沟,正是这批新研究要弥合的接缝。
CompactionRL 究竟改变了什么
来自智谱 GLM 团队的 CompactionRL,从同样的问题陈述出发,却把解法反了过来。它不再把压缩硬拴到推理上,而是让压缩成为模型被训练去做的事情的一部分。该方法联合优化任务执行与摘要生成,采用 token 级损失归一化以及跨轨迹的广义优势估计,使智能体得以从被压缩的长程轨迹中学习,而非被它们带偏。1
剥去这些机制,这一转变便一目了然。在运行时方案里,摘要器位于策略之外,模型只能容忍它产出的任何东西。在 CompactionRL 中,摘要由执行任务的同一个策略生成,二者共同获得奖励。模型被训练去撰写自己能据以行动的摘要,也去在自己撰写的摘要上行动得当。压缩不再是一次打断,而成了智能体演练过的一步棋。
这些结果落在当下的基准上。CompactionRL 构建于开放的 GLM-4.5-Air 模型之上,在 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 议题;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 其余的一切,摘要器都可以放手处理。
用钩子守住接缝,而不是用祈祷。Claude Code 提供了一个 PreCompact 钩子,它在压缩之前触发,能够引导或阻止压缩;还有一个 PostCompact 钩子,用于压缩之后的清理。5 如果某一类状态绝不能被摘要抹去,PreCompact 钩子就是你确定性地强制执行这一点的地方,而不必寄望某条聚焦指令会被遵守。这套纪律,与令钩子成为处理任何必须始终执行之事的正确工具的那套纪律如出一辙:你把一项保证从提示词里挪出来,放进代码里。
开始把经过训练的压缩能力当作规格中的一行来看待。随着 CompactionRL 这一方向走向成熟,模型之间的差异将不只在于上下文窗口大小,还在于它们被训练得在压缩状态下工作得有多好。两年来,窗口大小一直是那个抢眼的数字——每张模型卡都以 200K 对 1M 的比较来锚定。这个数字即将与一个更安静的数字同台:当一个模型不得不为自己做摘要时,它退化得有多优雅。当你为长程工作评估一个模型时,把一项真正漫长、足以迫使至少发生一次压缩的任务摆到它面前,看看什么幸存了下来。那种行为,正在成为一种值得为之筛选的属性。
把漫长的工作组织好,让接缝落在干净的位置。一个经训练学会压缩的模型,在一个已完成的子任务上做压缩,仍然好过在一个写到一半的子任务上。在训练尚未处处赶上之前,你只需塑造工作,让自然的检查点——一个通过的测试、一次已提交的改动、一个已收尾的子任务——与压缩可能触发的位置对齐,就能几乎免费地拿到大部分好处。无论如何这都是良好的框架设计,而它恰恰是那些受过训练的模型正在学着去预期的结构。
立场
上下文窗口大小不再是那个定义框架架构的约束。两年来,设计层面的讨论都从一份 token 预算出发:能装下多少、该逐出什么、何时做摘要。这套框架把模型视作一只固定的容器,把上下文视作一种你小心翼翼往里倒的资源。CompactionRL 这一方向溶解了这只容器。当模型被训练去管理自身的压缩,窗口便不再是一堵你围着它做工程的硬墙,而成了一道模型被教会去缓步走下的柔和梯度。
运行时工具集不会消失。对于上下文管理中真正属于你的那些部分——哪些事实具有权威性、哪些文件是真相之源、任务究竟是什么——上下文编辑、记忆工具以及手动的 /compact 仍是恰当的控制手段。这场迁移比全面自动化更狭窄,也更有意思。它把上下文管理中机械的那一半——摘要与续接的管道工程——挪进模型,而把编辑性的那一半——决定什么要紧——留给你。上下文工程一分为二:模型负责的部分,与你仍然掌握的部分;而二者之间的边界,正是良好框架设计所栖居的新去处。
这一征兆已然写在 CompactionRL 的论文里。压缩在一个前沿模型的训练流水线中赢得了一席之地,紧挨着编码与推理的奖励信号。那些进入训练循环的能力,通常不会再离开。在接下来的一年里胜出的操作者,是那些不再把压缩当作一场需要幸存下来的意外、而开始把它当作一份需要设计的契约来对待的人。
关键要点
- 压缩正从推理期迁往训练期。 CompactionRL、Memory-R1 与 MemAct 各自独立地用强化学习,把上下文管理变成一种习得的行为,而非一层外部包装。167
- 运行时工具是当下的答案,而非最终的答案。
/compact、自动压缩、上下文编辑和记忆工具,都在一个未被训练去预期压缩的模型周围管理上下文。34 - 有意识地把持久记忆与瞬态上下文区分开。 把规则、约定和任务契约放进能挺过重置的那一层;让其余一切都可被压缩。35
- 用
PreCompact钩子来强制这条边界。 把任何“绝不可摘要”的保证从聚焦指令里挪出来,放进确定性的代码中。5 - 把压缩能力当作规格中的一行来看待。 用一项足够漫长、足以迫使发生一次压缩的任务去测试候选模型,看看什么幸存了下来。窗口大小,不再是唯一要紧的数字。
常见问题
什么是上下文压缩?
压缩,就是对接近上下文窗口上限的对话做摘要,再用该摘要重新初始化一个新窗口,好让长时间运行的智能体越过原始历史本会溢出的那个点继续下去。2 它用一份放得下的压缩表示,换取逐字逐句的历史。
Claude Code 会自动压缩上下文吗?
会。自动压缩默认开启,并在上下文接近上限时运行。你可以用 CLAUDE_CODE_AUTO_COMPACT_WINDOW 来引导有效窗口,用 DISABLE_AUTO_COMPACT 将其禁用,或用 /compact 手动触发一遍处理,并可选择为摘要传入聚焦指令。4
什么是 CompactionRL?
这是来自 GLM 团队的一种强化学习方法,它通过联合优化任务执行与摘要生成,训练长程智能体在压缩之下工作,从而让模型从被压缩的轨迹中学习。它使 GLM-4.5-Air 在 SWE-bench Verified 上提升了 7.0 个百分点,并已被部署到下一代 GLM 模型的训练流水线中。1
能训练一个模型来管理它自己的上下文吗?
这正是近期研究所证明的。Memory-R1 用强化学习训练显式的记忆操作,MemAct 把上下文编辑当作策略动作,而 CompactionRL 则直接训练轨迹压缩。三者都让上下文管理成为模型的内在属性,而非一项运行时的附加组件。167
训练模型去压缩,会让上下文窗口变得无关紧要吗?
不会,但它改变了那个数字的含义。更大的窗口仍有帮助,然而一个被训练得善于压缩的模型,在任何窗口之内都能比一个只在部署时才遭遇压缩的模型走得更远。经过训练的压缩能力,成了与原始窗口大小并列的第二根轴。
现在我该如何应对智能体的上下文压缩?
去设计压缩的接缝,而不是碰巧发现它。决定什么留在持久记忆里、什么留在瞬态上下文中,用 PreCompact 钩子守住边界,把长任务组织得让压缩落在已完成的子任务之间,并在足够漫长、足以迫使发生一次摘要的任务上评估新模型。5
参考来源
-
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 上 66.8% 的 Pass@1(+7.0)与 Terminal-Bench 2.0 上的 24.5%,以及 GLM-4.7-Flash 的 +5.5 / +6.8;指出该方法已部署于训练 GLM-5.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 集合。 ↩↩↩↩
-
“Managing context on the Claude Developer Platform.” Anthropic,2025 年 9 月 29 日。https://claude.com/blog/context-management 上下文编辑在接近 token 上限时“自动清除陈旧的工具调用与结果”;记忆工具则把信息存储在上下文窗口之外的一个基于文件的系统中。报告称,仅上下文编辑一项即带来 29% 的提升,与记忆结合则为 39%,在一次 100 轮的网络搜索评测中削减了 84% 的 token。 ↩↩↩↩↩↩
-
Claude Code documentation: Commands, Settings, and 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将其关闭。 ↩↩↩↩↩ -
Claude Code Hooks reference. https://code.claude.com/docs/en/hooks
PreCompact在压缩之前触发,并支持一个阻止性的决定;PostCompact在压缩之后触发;InstructionsLoaded在CLAUDE.md或规则文件加载时触发,包括压缩之后(匹配器值为compact)。 ↩↩↩↩↩↩ -
Sikuan Yan, Xiufeng Yang, Zuchao Huang, et al. “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 训练一个 Memory Manager,通过强化学习学会 ADD、UPDATE、DELETE 和 NOOP 操作,仅使用 152 个训练样本。 ↩↩↩↩↩
-
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 把上下文管理表述为通过强化学习端到端优化的就地编辑操作。 ↩↩↩↩
-
“Introducing SWE-bench Verified.” OpenAI,2024 年 8 月 13 日。https://openai.com/index/introducing-swe-bench-verified/ 一个经人工验证、含 500 个实例的 SWE-bench 子集,用于解决真实的 GitHub 议题。注:OpenAI 已于 2026 年 2 月因测试缺陷与污染问题,不再把该基准作为前沿指标 (https://openai.com/index/why-we-no-longer-evaluate-swe-bench-verified/),因此最好将它读作被引用最多的智能体编码基准,而非一个盖棺定论的基准。 ↩↩↩
-
Terminal-Bench。斯坦福大学与 Laude Institute。https://www.tbench.ai/ Terminal-Bench 2.0 是 89 项经人工核验的命令行任务,横跨软件工程、机器学习、安全与数据科学;前沿智能体的得分大约不足三分之二。 ↩↩