AI Daily · 深度学习文档 · 2026-07-22
长时程 Agent 的上下文退化 (Context Rot)与自压缩 (Self-Compaction)
任务越长,Agent 的上下文越臃肿,表现反而越差——这不是玄学,是已被系统测量的现象。本文讲清它为什么发生、长什么样、有哪几类解法,以及 2026 年 6 月两篇新论文给出的最新答案:让模型自己决定什么时候「清理大脑」。
上下文:干净
臃肿 → 退化
调研时间:2026-07-22 · 全部关键事实来自文末来源清单,论文数据以 arXiv 原文为准
30 秒速览
先给结论,细节后面慢慢讲:
现象 :LLM 的表现随上下文变长而持续下降,远在触及上下文窗口上限之前就开始了。这叫 Context Rot(上下文退化) 。Chroma 团队 2025 年测了 18 个前沿模型,无一幸免。
新发现 (上交/复旦 SII-GAIR,2026-06):在真实的长时程搜索任务里,退化的典型表现不是「答错」,而是模型直接放弃 (「无法确定」)或心虚作答 (明知没验证完就交卷)。而且瓶颈不是窗口大小,是模型在窗口内的行为。
解法分三类 :压缩(把历史改写成摘要)、裁剪(直接丢掉旧内容)、隔离(交给子 Agent,只回传结论)。SII-GAIR 系统评测七种方法后的结论:压缩 + 裁剪组合的性价比最高 ;子 Agent 隔离上限高但严重依赖模型能力。
最新思路 (JHU + Apple 的 SelfCompact,2026-06):固定阈值触发的压缩会在错误的时机「格式化」正在进行的推理。让模型自己按一份小评分规则(rubric)决定何时压缩 ,不用微调,数学任务最多 +18.1 分,搜索任务 +5~9 分,成本反而降 30–70%。
背景:为什么这个问题「现在」变得要命
两年前,一次模型调用几千个 token,上下文管理基本等于「别超窗口」。今天完全不同了——Agent 的任务时长在指数级拉长 ,单次任务的上下文规模已经不是「窗口够不够放」的问题,而是「放进去之后模型还清不清醒」的问题。SelfCompact 论文开篇给了几个当前的量级:
8M
Qwen3-Coder-Next 在 SWE-rebench 上单题平均消耗 token 数
96k
Kimi-K2.5 单道竞赛数学题的思考 token 上限量级
数百次
深度搜索 Agent 单个查询的工具调用次数(BrowseComp 类任务)
以上数字均引自 SelfCompact 论文(arXiv:2606.23525)第 2 节,原始出处为各模型技术报告。
与此同时,工程侧的所有新基建都在鼓励「跑得更久」:Claude Code 的后台 Agent 可以自主完成整个 PR,MCP 2026-07-28 新规范把「长时任务(Tasks)」转正为核心特性,云端 Agent 运行时让任务脱离本机长期运行。任务越长,上下文退化的代价越大 ——这就是这个 2023 年就有苗头的问题(「lost in the middle」)在 2026 年夏天被两篇论文同时正面攻坚的原因。
🗂️ 一个类比
办公桌理论:项目刚开始时桌面干净,随手就能找到要用的文件。三周后,桌上堆满了废弃草稿、过期便签、走了弯路的计算纸。问题不是桌子不够大,而是
每次找东西都会被旧纸误导 ——你甚至会顺着三天前已被否定的思路重新走一遍。「压缩」是把有效结论抄到一张新纸上然后清桌;「裁剪」是直接扔掉最旧的纸;「隔离」是让同事在他自己桌上算完、只递给你一行结果。
Context Rot 是什么:定义与机制
Context Rot(上下文退化)
大白话:塞给模型的内容越多,它的表现越差——哪怕远没塞满窗口。而且不是到某个点突然崩,而是持续、渐进地变差 。
正式表述:模型输出质量随输入上下文长度增加而出现的可测量退化。Chroma 2025 年的技术报告测试了 18 个主流模型(含 GPT-4.1、Claude 4、Gemini 2.5、Qwen3),全部随输入变长而性能下降;部分任务在远未到达标称窗口上限时,准确率就下跌 30–50%。
为什么会这样?综合 Chroma 报告与后续研究综述,主要有三个相互叠加的机制:
机制一:两头清楚,中间模糊(Lost in the Middle)
模型对上下文开头和结尾的内容注意力最好,中间部分最容易被忽略。这是 2023 年就被 Liu 等人量化过的经典现象,在部分测试中造成 30% 以上的准确率下降。对 Agent 来说尤其致命:长任务里最关键的中间结论恰恰位于「中间」 。
机制二:注意力被稀释
Transformer 的注意力要在所有 token 两两之间分配。上下文从 1 万 token 涨到 10 万,需要处理的成对关系涨了 100 倍——每个真正重要的信号分到的「注意力预算」被大幅摊薄。
机制三:干扰项主动误导(Distractor Interference)
比「没注意到」更糟的是「注意到了错的」:语义上相似但实际无关的内容会主动把模型带偏。Agent 场景里这类干扰项特别多——被否定的旧假设、已过时的搜索结果、失败的代码尝试,都和当前任务「长得很像」。SelfCompact 论文把这点说得很直白:旧内容不是躺在那不动,它会「锚定」(anchor)后续所有生成 ——同一个模型,从干净上下文出发能解出的题,把它自己之前的错误推理喂回去反而解不出来。
🔑 关键认知
Context Rot 不是「窗口不够大」的问题。SII-GAIR 论文在 20 万~25.6 万窗口的模型上实测:绝大多数任务在窗口内就能完成(No Answer 比例接近 0),但准确率仍随轨迹变长而大幅下滑。
买更大的窗口治不了这个病 ——2M 窗口的模型同样退化,只是退化得更晚、成本更高。
退化的样子:不是答错,是「放弃」和「心虚」
过去研究 Context Rot 多用「大海捞针」这类单轮长输入测试,和真实 Agent 场景(多轮、多来源、逐步累积)差别很大。上海交大/复旦 SII-GAIR 团队 2026 年 6 月底的论文《Diagnosing and Mitigating Context Rot in Long-horizon Search》第一次在真实长时程搜索任务 上系统解剖了这件事。
实验设置
四个旗舰开源模型(GLM-4.7、GLM-5.0、Qwen3.5-397B-A17B、MiniMax-2.5,窗口 200K–256K),三个基准(BrowseComp、BrowseComp-Plus、xbench-DeepSearch),ReAct 框架,最多 100 轮交互,每组实验重复五次。他们给 Agent 的「终局状态」建了一个四分类:
三个核心发现
窗口大小不是瓶颈 :BrowseComp 与 xbench-DeepSearch 上 No Answer 比例为 0——所有题都能在窗口内答完,但答得越来越差。约束在于模型在窗口内的表现,而非窗口本身。
轨迹越长,「放弃」和「心虚作答」越多 :早期错误以「自信答错」为主;随轨迹变长,Give Up 和 Uncertain Incorrect 迅速上升,成为后期主要错误类型。比如 GLM-4.7 在 BrowseComp 上有 38.6% 的题直接放弃。
祸根是「内容」而非单纯的长度 :剪枝实验(pruning)显示,退化不只取决于轨迹长度或轮数,还取决于累积上下文里装了什么;把累积上下文整个删掉,退化现象几乎完全消失 ——但代价是大量任务半途而废。这说明「删」是有效的,难的是删得恰到好处。
💬 换个说法:这个发现为什么重要? 它改变了「治什么病」的判断。如果退化表现是「答错」,你会去优化检索质量、提示词;但实际表现是「不敢答/不想答了」——模型被自己一大堆失败尝试的历史压垮,产生了类似「习得性无助」的行为。对症的药就变成:及时清掉那些失败记录,让模型别一直盯着自己的挫折史。
缓解手段全景图:三类七种方法怎么选
SII-GAIR 论文最有工程价值的部分,是把散落各处的上下文管理方法收进一个框架里,统一评测了性能、成本、对退化的抑制效果 三个维度。三大类如下:
评测结论(可直接抄的选型指南)
压缩 + 裁剪的组合,是成本与抑制退化之间的最优平衡 ——这是论文明确给出的推荐默认项。
子 Agent 隔离严重依赖底座模型 :配强模型时可以超过其他所有方法,配弱模型时反而拖后腿。别在小模型上迷信 multi-agent。
提高触发频率能进一步抑制退化,但成本上升 :压缩/裁剪这类被动方法,触发越勤效果越好、钱包越痛,需要按任务价值权衡。
论文还提出一个不改架构的补充手段:rot-aware 拒绝采样 ——采样多条轨迹后,过滤掉带明显退化特征(放弃/心虚)的那些再聚合,三种聚合方式下平均提升 2.6%–4.9%,且可与上下文管理叠加。
SelfCompact:让模型自己决定何时「清理大脑」
上一节的方法有个共同盲区:触发时机全是「内容盲」的 。现有系统要么等 token 逼近预算才被动压缩(Claude 的 auto-compact / 用户手动 /compact),要么每 k 轮/k token 固定周期压缩(Cursor 等),要么设个百分比阈值(如 MiniMax-M2.5 在「token 用量超过最大上下文 30%」时触发)。这些规则不知道模型此刻在干嘛——可能正好在推导到一半时把它的草稿纸抽走 。
JHU 与 Apple 的《Self-Compacting Language Model Agents》(arXiv:2606.23525,2026-06-22)用一个数据点量化了这个伤害:固定间隔压缩下,压缩前后答案发生变化的案例中,40.4% 是「由对变错」 (1009 次对→错 vs 1486 次错→对)。压缩总体有净收益,但四成的翻车率说明时机选择有巨大提升空间。
机制:一个工具 + 一份评分规则
SelfCompact 的设计极简,全程不需要微调、不需要外部裁判模型:
压缩工具(compaction tool) 把「总结当前轨迹」做成一个模型可调用的内联工具。模型发出 <summarize>,脚手架就用同一个模型 把已有轨迹压成摘要,然后从「原始问题 + 摘要」继续生成——相当于换了张干净草稿纸,有效结论都抄上去了。
评分规则(rubric) 每隔 N 个 token(数学)或 N 次工具调用(搜索),脚手架追加一段简短的 rubric 提示,让模型对照轨迹给出二元判断:COMPRESS 或 CONTINUE。规则内容一句话概括:「一个子任务刚收尾、或轨迹正在收敛时→压;正在推导中途、或卡死时→不压」 ,且每个条件都要求从轨迹中引用原文作为证据。
KV 缓存复用 rubric 探针和压缩指令都是「追加」而非「替换」消息,已有轨迹的 KV 缓存全程复用——判断几乎免费,压缩才是唯一真实开销。论文给出盈亏平衡点:轨迹长度/摘要长度 > 10 倍时压缩就划算 (搜索场景实测 20–80 倍)。
🔑 为什么两个组件缺一不可
消融实验发现:只给工具不给 rubric,七个开源模型的表现参差不齐——有的乱压(在不该压的时候反射性调用),有的从来不压。
模型天生不能可靠察觉自己的上下文正在腐坏 (论文称之为 meta-cognitive gap,元认知缺口),但一段轻量的 rubric 就能补上这个缺口。这个结论很有启发性:「何时压缩」可以作为一种
推理时由脚手架供给的元认知能力 ,不必训练进权重里。
效果数字
+18.1
竞赛数学最大提升(Qwen3.5-9B,HMMT Feb 26,对比不压缩基线)
11/12
数学基准 12 个模型×任务组合中拿下最优的格数(同等 token 预算)
+5~9 分
Agentic 搜索(BrowseComp 等)提升幅度
-30~70%
搜索场景单题 token 成本相对不压缩基线的降幅
还有一个值得记住的分析:如果有一个「先知策略」(oracle),仅仅在当前答案已正确时跳过压缩、其余照旧,准确率能到 52.9%,比固定间隔再高 11.5 分——说明自适应压缩策略还有大量未兑现的上界 ,这个方向不会止步于 rubric。
💬 换个说法:和 Claude Code 的 /compact 有什么本质区别? Claude Code 的 /compact 把「什么时候该压缩」这个判断交给了用户,auto-compact 则交给了 token 阈值;Cursor 等交给固定周期。SelfCompact 交还给模型本人 ——因为只有它「知道」自己此刻是刚验证完一个事实(可以安全存档),还是推导进行到一半(存档就等于毁尸灭迹)。rubric 的作用是把这种时机感从「模型时灵时不灵的直觉」变成「可核对的检查清单」。
工程实践现状:各家都在怎么做
把研究放回产品语境,可以看到一条清晰的演化线——触发机制越来越「懂内容」:
各家机制均引自对应论文/官方博客/文档,见文末来源清单;产品行为迭代快,以官方最新文档为准。
另一个值得注意的合流:MCP 2026-07-28 新规范把 Tasks(长时任务) 转正——服务器可返回任务句柄、客户端轮询驱动。这意味着「跑几小时的 Agent」正在成为协议层的一等公民,上下文退化管理会从「高级技巧」变成「基础必修」。
怎么用到自己的 Agent 上:实操建议
综合两篇论文的结论,如果你在搭建长时程 Agent,可以按这个顺序落地:
先测量,别猜 给你的 Agent 加终局状态打点:区分「自信答对/自信答错/心虚作答/放弃/没答完」。如果「放弃+心虚」随任务时长明显上升,你就有了 Context Rot 的确诊证据(SII-GAIR 的分类法可直接抄,其代码在 GitHub: GAIR-NLP/ContextRot)。
默认组合:裁剪 + 压缩 先做便宜的:旧工具返回(尤其是大段网页/日志)在用过之后裁掉或截断;再叠加周期性压缩。这是评测中性价比最高的组合。
把压缩时机从「阈值」升级为「rubric 自判」 参考 SelfCompact:暴露一个总结工具 + 每 N 步用一段 rubric 提示让模型自己判断 COMPRESS/CONTINUE(子任务收尾才压、推导中途不压、要求引用轨迹原文作证据)。不需要微调,任何支持工具调用的模型都能上。
强模型才上子 Agent 隔离 如果底座模型较强,把搜索、浏览这类「上下文污染大户」交给子 Agent,只回传结论;弱模型则慎用,评测显示可能负收益。
摘要要「保事实」,不要「保气氛」 固定间隔压缩四成翻车的教训:摘要必须显式保留已验证的事实、当前假设、下一步计划,而不是一段模糊的意图复述。在压缩提示里明确列出这三项。
高价值任务再加一层拒绝采样 并行采样多条轨迹,丢弃出现「放弃/心虚」特征的,再做聚合——与上下文管理正交,可叠加。
常见坑与限制
⚠️ 这些坑都有实验数据背书
「窗口更大就没事了」 ——错。退化在远未满窗时就发生,且是渐进的;大窗口只是把退化摊到更贵的账单上。
压缩不是免费午餐 :固定间隔压缩的答案变化中 40.4% 是负向的。压缩时机不对 = 主动删除模型正在用的工作记忆。
「让模型自己决定就好」也不成立 :没有 rubric 约束时,开源模型要么乱压要么不压——工具必须配规则。
子 Agent 不是万能药 :隔离效果强依赖底座能力,弱模型上可能不如简单裁剪。
全清上下文最抑制退化,但会造成大量任务半途而废 ——「删多少」是精细活,不是越狠越好。
研究本身的限制 (诚实说明):两篇论文的结论主要建立在开源模型 上(闭源模型因加密推理轨迹无法做同类分析);SelfCompact 的 rubric 是任务定制的(数学与搜索用词不同),迁移到新任务需要自己写 rubric;两篇均为 2026 年 6 月的预印本,尚在评审中,数字有待同行复核。此外,「自压缩」在生产系统的大规模验证案例目前公开资料还很少。
学习资源清单
SelfCompact 论文 (JHU + Apple,2026-06-22):Self-Compacting Language Model Agents — arxiv.org/abs/2606.23525
SII-GAIR 论文 (上交/复旦,2026-06-30):Diagnosing and Mitigating Context Rot in Long-horizon Search — arxiv.org/abs/2606.29718;代码 github.com/GAIR-NLP/ContextRot
Chroma 技术报告 (2025):Context Rot: How Increasing Input Tokens Impacts LLM Performance — trychroma.com/research/context-rot;复现工具包 github.com/chroma-core/context-rot
Google Developers Blog (2026-07):Architecting efficient context-aware multi-agent framework for production — developers.googleblog.com
Anthropic 文档 :Claude Code 的 compact 机制与上下文管理 — code.claude.com/docs
综述型解读 :Morph《Context Rot: Why LLMs Degrade as Context Grows》— morphllm.com/context-rot;Understanding AI《Context rot: the emerging challenge》— understandingai.org
调研时间:2026-07-22 · 本文档由 AI Daily 定时任务生成。关键事实均来自当日实际检索并阅读的以下来源;论文均为预印本,结论以正式发表版本为准;各产品的压缩机制迭代较快,以官方最新文档为准。
Self-Compacting Language Model Agents(arXiv:2606.23525)— https://arxiv.org/pdf/2606.23525(已读全文前 5 节)
Diagnosing and Mitigating Context Rot in Long-horizon Search(arXiv:2606.29718)— https://arxiv.org/pdf/2606.29718(已读全文前 4 节)
Context Rot(Chroma Research)— https://www.trychroma.com/research/context-rot
Context Rot: Why LLMs Degrade as Context Grows(Morph)— https://www.morphllm.com/context-rot
Context rot: the emerging challenge(Understanding AI)— https://www.understandingai.org/p/context-rot-the-emerging-challenge
Architecting efficient context-aware multi-agent framework(Google Developers Blog)— https://developers.googleblog.com/architecting-efficient-context-aware-multi-agent-framework-for-production/
Claude Code changelog — https://code.claude.com/docs/en/changelog
The 2026-07-28 MCP Specification Release Candidate — https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/