1. 压缩质量是任务条件下的率失真问题
只比较压缩前后的文字相似度,会把上下文管理带偏。工具日志里一行失败码可能决定后续路径,却只占极少 token;大段自然语言解释即使保留得很像,也可能已经失去行动价值。压缩质量必须相对于后续任务、动作集合和错误代价来定义。
设原始历史为 ,压缩表示为 ,长度预算为 。经典率失真形式可以改写为
其中 是任务条件失真。若使用 的最优动作与使用 的最优动作相同,而且关键验收结论不变,那么删掉大量表述仍可能是低失真;若一个版本号丢失导致读取错误文件,文字摘要再流畅也是高失真。
任务在压缩时未必完全已知。可以把未来任务视为分布 ,优化平均失真;安全约束与不可逆动作则不能只服从平均值,应加入最坏情况项:
这解释了为什么权限、删除边界、未完成承诺和证据指针要独立保存。它们平时未必被调用,一旦相关,遗漏代价远高于普通背景。
压缩预算也不该平均分给消息。对状态项 ,设再次使用概率为 ,遗漏损失为 ,保留成本为 ,可以按 排序分配工作记忆。但这个贪心只适合近似独立的项目;多个证据共同支持一个结论时,单独保留任何一项都可能无用,需要按依赖子图整体选择。
率失真视角还能解释 AdaCoM 所报告的 Fidelity-Reliability Trade-off。能力较强的 Agent 能利用细节,过度裁剪会损失可用证据;较弱 Agent 可能被冗长历史干扰,更激进压缩反而把它带回可靠推理区间。压缩器与执行 Agent 不是可以随意互换的两个模块,最优表示取决于接收者能读懂什么、会被什么锚定。
评测时至少需要三条曲线:任务成功率随 token 预算变化、关键状态召回率随预算变化、延迟与成本随预算变化。单点报告「压缩了多少」无法区分方法是在更有效地编码,还是碰巧获得了更宽松的预算或更强的下游模型。
选择、摘要与索引是三种不同操作,上下文缩短常被统称为摘要,实际包含三类算子。选择保留原始片段,信息没有被改写,但会遗漏未选部分;摘要生成新表述,密度更高,也引入事实漂移;索引把内容移到窗口外,保留回源入口,用检索延迟换取 token。三者的错误机制不同。
选择可写成掩码 :
它适合短而精确的命令、报错与公式。缺点是片段之间的关系仍需模型自行恢复,连续保留许多重复日志也会浪费预算。摘要器将多个片段映射为 ,能合并重复和显式写出因果,却可能把「待验证」改成「已确认」。索引只保存 ,适合体积大、复用概率低且允许稍后读取的材料。
一个稳健系统会混合使用:硬约束和当前目标以结构化字段保留;最近工具结果原文选择;阶段背景使用摘要;完整日志与论文正文进入可寻址冷存储。若把所有东西交给同一个生成式摘要器,精确字符串、权限状态与散文背景会争夺同一输出通道。
混合表示需要解决一致性。摘要声称测试已经通过,索引指向的原始日志却属于旧提交;结构化状态标记任务取消,自由文本还写着下一步继续执行。读取时不能让模型自行在冲突版本中投票。权威字段应有明确优先级,派生摘要携带来源版本,不匹配时先失效再重建。
索引并不天然可恢复。标识符可能失效,文件可能移动,外部网页可能更新。一个可用指针至少包含稳定定位、内容哈希、抓取时间和必要的访问条件。内容哈希不匹配时,新内容可以作为新证据读取,却不能冒充压缩时所依据的旧证据。
三种操作应分别消融。只看最终 token 数相同的混合方案,无法判断收益来自保留原文、生成归纳还是允许回源。测试集还应放入精确字符串任务、跨段因果任务和低频证据回忆任务,让每种算子的长处与短板显现出来。
多层记忆的迁移规则,有限窗口更像缓存,而不是全部记忆。可以把状态分为即时上下文、工作记忆、情节存储和权威外部状态。即时上下文保留最近交互;工作记忆保存当前目标、计划和活跃证据;情节存储保存已经结束的子任务与来源索引;权威状态由文件、数据库、版本库或真实环境承担。
信息从热层迁往冷层需要明确条件。子任务完成且验证通过后,过程日志可以降级,只保留结论、证据和恢复入口;仍在排错的轨迹不能因为时间久就降级,因为旧失败尝试决定下一步。访问频率只是一个信号,任务阶段和未决依赖同样重要。
设状态项 的热度为 ,依赖中心性为 ,风险为 ,体积为 ,可定义保留分数
分数帮助排序,却不能覆盖硬规则。授权边界即使很久没访问也不能被淘汰;已经存入外部权威状态的巨大日志,即使与当前任务相关,也可能只需保留指针。权重应由任务域校准,而非在所有 Agent 上共用。
晋升同样重要。冷存储中的旧事实被新目标重新引用时,应回到工作记忆,并先验证新鲜度。只检索一段相似文字而不读取它的版本和上下文,容易把旧计划复活。晋升记录要指明触发问题、读取范围和验证结果,避免检索内容永久污染后续上下文。
分层迁移还要防止抖动。某项在预算边缘反复晋升和降级,会不断支付摘要与读取成本。可以使用双阈值:得分高于 才晋升,低于较小的 才降级。中间区域维持原层级,形成迟滞。
故障恢复要从冷层重建热层。恢复流程先读取目标版本和未决动作,再装载最近 checkpoint,随后按证据指针核对外部环境。若只能加载一篇自然语言摘要,却不知道它对应哪些文件与工具调用,系统恢复的是故事,不是可继续执行的状态。
压缩触发是一项最优停止问题,何时压缩与怎样压缩同样关键。太早触发会增加转换次数和累计失真,太晚触发会让上下文退化,甚至没有空间容纳工具返回。触发器需要在继续运行的风险与立即压缩的代价之间选择。
令当前状态为 ,继续一步的期望代价为 ,现在压缩的代价为 ,则触发规则可以写为
这里的状态不仅包含 token 占用,还包括是否位于子任务边界、是否存在未闭合推导、下一轮预计输出、外部动作是否可恢复。相同的 80% 窗口占用,在测试刚通过时适合压缩,在长证明进行到中间时可能不适合。
SelfCompact 的工具与 rubric 组合可以从这个角度理解:工具提供停止动作,rubric 向模型暴露哪些状态意味着转换代价较低。仅有工具时,模型可能不调用或乱调用;只有文字提醒而没有压缩动作,也无法真正改变窗口。
预测下一轮长度时要考虑尾部风险。只用平均输出长度,遇到一次巨大工具返回就会溢出。可以用高分位预算 替代均值,让溢出概率控制在 附近。高风险工具调用前还可主动建立 checkpoint,即使窗口尚未达到固定阈值。
触发评测不能只报告平均压缩次数。需要记录过早触发率、被迫截断率、处于不安全语义位置的触发率,以及每次压缩后到下一次回源的距离。两个方法任务成功率相同,其中一个可能靠高频重压缩支付了数倍成本,另一个则保留过多历史导致服务尾延迟更高。
1.1. 关联阅读
本库的 Long-Horizon 严格定义和评测协议共同约束压缩方案。前者区分长上下文与长程依赖,后者给出有效进度、扰动恢复和成本曲线;因此压缩率或摘要相似度不能单独充当任务成功指标。
LiveMem提供另一条路径:用固定容量循环状态维持上下文轮转后的计算连续性,但仍需外部事实与审计系统。LongHorizon-Harness则把任务状态、执行与完成判断外置。三者并非互斥:压缩控制工作上下文,内生状态维持连续影响,Harness 保存可验证、可恢复的权威状态。
压缩误差怎样穿过后续决策,摘要里的一处错误不会只影响下一句话。它先改变模型对当前状态的估计,再改变计划、工具参数和验证对象,收尾阶段可能被新产生的日志当成既成事实。要理解压缩风险,需要沿决策链追踪误差,而非只在摘要文本上做逐句核对。
设真实状态为 ,压缩后恢复的状态为 ,策略为 ,环境转移为 。若压缩造成状态误差 ,动作分布差异可由策略敏感度约束:
大的状态区域对细小表述非常敏感。例如命令中的路径只差一个目录,动作就完全不同;背景解释少一个形容词,通常不会改变计划。压缩器应该优先保留高敏感字段,而不是按自然语言显著性分配 token。
动作改变后,环境状态也会分叉。若转移和价值函数的 Lipschitz 常数分别为 ,长度为 的粗略误差上界会包含连乘项 。现实系统不一定满足光滑条件,但这个形式揭示一个事实:长程任务中的早期状态错误具有放大机会,不能用一次摘要相似度推断终局影响。
有些误差会自行消失。压缩漏掉一条无关搜索结果,后续再也不使用;有些误差会在验证时被纠正,例如测试实际失败迫使系统重读日志;还有些误差会自我强化,错误摘要令 Agent 修改错误文件,新 diff 又似乎证明该文件就是目标。评测应区分消散、可纠正和自强化三类轨迹。
阻断误差传播依赖独立观测。执行关键动作前重新读取当前文件、权限和测试状态,相当于把估计重新锚定到环境。若所有后续判断都只引用压缩摘要,系统形成封闭回路,摘要中的错误再也没有外部信号可以纠正。
可以设计一组注入实验:在摘要中分别篡改低影响背景、当前文件路径、验收阈值和权限字段,测量动作分歧时间、受影响节点数、恢复时间与不可逆副作用。单纯统计模型是否复述错误,远不如这些指标接近真实风险。
事实、决策和承诺需要不同保真标准,上下文中的信息承担不同功能。事实描述环境是什么,决策记录为什么选择某条路径,承诺规定之后必须完成什么。三者混在一段摘要里,容易出现「保留结论却丢掉依据」或「保留讨论却丢掉义务」。
事实项需要来源、观测时间与版本。例如「测试通过」必须绑定命令、代码版本和输出;环境变化后,它会过期。决策项需要候选方案、取舍理由和适用前提,否则目标变化时无法判断旧选择是否仍合理。承诺项需要责任主体、完成条件和状态,不能因为相关讨论被压缩就从计划里消失。
对事实可以追求可验证保真:摘要陈述能否由来源重新证明。对决策追求反事实保真:如果关键前提改变,系统能否知道要重开选择。对承诺追求执行保真:未完成事项是否仍出现在调度与验收中。这三个指标不能被一个 ROUGE 或语义相似度取代。
举例来说,原历史可能包含「尝试方案 A 后内存溢出,因此改用 B;提交前还需在 Windows 上验证」。合格压缩至少保留 A 的失败条件、选择 B 的理由和 Windows 验证这项承诺。只写「当前采用 B」虽然语言简洁,却无法解释何时应重新考虑 A,也会漏掉最终验收。
状态结构可把三者拆开:facts 保存版本化谓词,decisions 保存前提到选择的边,obligations 保存未完成验收。自由文本摘要负责把它们串成可读背景,但不能成为唯一副本。更新时,事实失效会沿依赖边使决策降级,承诺只有完成、撤销或显式替代才能关闭。
评测样本应让三类信息发生不同变化。例如事实被新工具结果覆盖,决策因成本变化而重开,承诺被用户明确取消。若系统统一使用「最近一句覆盖」,就会错误删除仍有效的事实或继续执行已经撤销的承诺。
1.2. 并行压缩的快照一致性
Parallel Context Compaction 将压缩从串行阻塞路径移开,但并行本身带来一致性问题。压缩器读取历史 时,执行 Agent 可能继续产生 。若摘要器的输入边界不固定,晚到消息有时被读入、有时被遗漏,同一轨迹会得到不可复现的状态。
最简单的协议是在版本 建立不可变快照,压缩结果写为 。新事件进入增量缓冲区 。切换时使用
并确认增量起点恰好是 。起点更小会重复事件,起点更大会形成缺口。摘要结果必须携带覆盖区间,不能只返回一段无版本文本。
并行任务结束顺序可能颠倒。版本 的摘要先完成,版本 的摘要稍后返回,后者不能覆盖前者。接收方按覆盖终点与祖先关系判断;若两个摘要来自分叉快照,不能仅凭时间戳选一个,需要重新合并共同祖先之后的差异。
压缩期间发生目标更新更棘手。旧快照中的大量信息可能仍有效,但摘要策略使用了旧目标的价值判断。系统可以接受其中的事实抽取,重新评估其选择与删减;也可以在目标差异影响核心预算时取消压缩。是否取消由目标变更与摘要选择函数的依赖关系决定。
并行方案的延迟收益也要按端到端关键路径计算。假设执行剩余时间为 ,压缩时间为 ,串行停顿近似 ,理想并行为 。但快照复制、合并与冲突处理带来 ,真实时间是 。当块很小或冲突频繁时,并行未必更快。
测试应主动制造摘要慢返回、目标在压缩中途变化、增量缓冲重复投递和执行 Agent 提前耗尽窗口等情况。只在稳定离线历史上并行生成几段摘要,无法证明在线切换正确。
回源属于压缩协议,任何有限摘要都可能缺信息。系统若把回源视为异常,会逼迫摘要器塞入所有可能细节;结果是压缩率低,仍然无法覆盖未知未来任务。更合理的设计把「摘要负责导航,原始记录负责证明」作为正常协议。
当问题 到来时,先用工作状态判断现有证据是否充分。若答案依赖摘要中没有展开的来源,生成回源请求 。读取后把相关片段临时晋升,并将得到的结论与来源绑定。这个过程类似按需分页,关键是缺页可检测。
缺页可检测要求摘要明确表达未知和指针。例如写「失败原因有三类,详见日志 L17」比武断缩成一类更安全;写「尚未核对发布日期」能阻止模型把空白补成猜测。摘要器的目标不该奖励表面完整,因为表面完整会掩盖回源需要。
回源策略可以比较读取成本与错误风险。设读取成本为 ,不读取时错误概率为 ,错误损失为 ,当
时应回源。高风险事实即使当前置信度较高也值得核对;低风险背景可以接受摘要。若来源访问需要网络或权限,成本还包括失败概率和等待时间,系统应提前缓存即将使用的证据。
回源结果也会过期。网页当前版本与压缩时版本不同,读取新页面只能证明现在内容;要核对旧决策,应读取存档或保存的快照。文件指针若没有提交哈希,也可能返回修改后的内容。稳定定位是协议的一部分,不是检索器的附加优化。
评测回源能力时,应有意询问压缩时低概率、后来变得关键的信息。观察系统能否承认工作记忆不足、找到正确来源、验证版本并更新状态。禁止回源的评测只能测一次性编码容量,不能代表有外部存储的真实 Agent。
压缩器与执行器之间的接口契约,压缩器输出一段自然语言,执行器「大概能懂」,不足以形成稳定系统。两者需要明确接口:哪些字段必须存在,哪些允许未知,哪些结论必须带证据,哪些动作仍待执行,以及压缩覆盖了哪段历史。
接口可分为控制面与内容面。控制面包含目标版本、覆盖区间、状态 schema、校验和、未决动作和权限边界;内容面包含事实、背景、推理摘要与证据索引。控制面应由确定性逻辑验证,内容面再交给模型解释。这样即使自然语言表达变化,执行器仍能判断摘要是否适用于当前任务。
兼容性也是问题。压缩器升级后新增字段,旧执行器应忽略未知的可选项;删除或改变必需字段则需要 schema 版本迁移。没有版本号时,模型可能把旧字段含义按新规则解释,错误不会表现为解析失败,而会悄悄进入计划。
接口还应声明不变量,例如「所有未完成承诺都有唯一标识」「每个已验证事实都有来源版本」「权限集合只能由用户事件扩展」。压缩输出违反不变量时拒绝切换,继续使用旧上下文或采取保守回退。让执行器在缺字段时自由补全,会把格式错误转化成行为错误。
接收方不能盲信摘要器自报。覆盖区间可与事件日志核对,引用哈希可验证,计数与计划节点可重算。自然语言推断无法完全自动审计,但硬字段越多,剩余语义风险越集中,人工或模型复核也更有目标。
跨模型迁移尤其依赖契约。AdaCoM 的结果提示,管理器对能力相近的 Agent 更容易迁移;部分原因可能是不同执行器使用压缩表示的方式不同。接口能够统一字段,却无法保证每个模型同样理解叙述细节,所以迁移评测仍要固定预算、任务和执行器能力。
训练压缩策略时的信用分配,压缩动作的后果通常延迟很久才出现。摘要漏掉一个约束,可能几十步后提交时才失败;保留一条证据,也可能直到最终验证才体现价值。若只用终局奖励,摘要 token 获得的学习信号方差很大。
把压缩边界记为 ,每次产生状态 。终局回报 同时受执行动作、环境随机性和多次压缩影响。一个朴素策略梯度项为
若不同轨迹的摘要长度差异很大,按 token 求和会让长摘要拥有更大梯度权重。token-level normalization 试图让长度不同的压缩段可比,但归一方式也改变「一次压缩」与「一个 token」谁是优化单位,需要结合论文具体目标解释。
局部辅助奖励可以降低方差,例如约束召回、事实一致性、证据可达性和预算满足度。但这些代理指标可能被钻空子:逐字复制约束获得高召回,却挤掉任务进度;保留大量索引获得可达性,却让每步都回源。终局任务奖励仍需约束它们的实际价值。
反事实基线能估计一次压缩的贡献:在相同前缀下分别使用候选摘要与无压缩、截断或另一摘要继续 rollout,比较后续回报。完全配对的计算昂贵,可以只在关键边界采样。若环境不可复现,差异还会混入随机性,需要多次运行或使用可控模拟器。
训练数据必须包含压缩真正必要的轨迹。若多数任务在窗口内已经完成,策略最容易学到永不压缩;若所有轨迹都在固定位置强制压缩,它又学不到时机。课程可从单次、明确子任务边界开始,逐渐加入多次压缩、目标变化、错误摘要恢复和异步工具返回。
训练出的策略还要与部署预算匹配。训练时上下文、摘要模型和工具延迟不同,触发阈值与保留偏好会发生分布偏移。上线前应在目标执行器上重新绘制成功率—token—延迟曲线,而不能只迁移一个固定压缩比例。
2. 一套能够推翻方案的实验矩阵
上下文管理方案容易通过挑选有利任务显得有效。严格实验需要同时改变历史长度、有效信息密度、目标变化次数、工具输出体积、执行器能力和压缩预算。每个轴都对应不同假设,混在一个平均分里看不出方法依赖什么。
基线至少包括完整历史、窗口截断、固定间隔摘要、语义边界摘要、选择式保留、索引回源和学习式管理。完整历史并非永远是上界:长上下文退化可能使压缩方案更好;但若模型窗口容得下,完整历史提供了判断信息损失的必要参照。
对每种方法报告任务成功、有效 token、prefill 与 decode 成本、压缩调用成本、尾延迟、回源次数和关键状态错误。并行方案还报告快照冲突与合并开销,训练方案报告训练样本和额外计算。只报告模型 API token 会漏掉本地摘要器与检索系统的成本。
消融应直接针对机制。去掉证据指针,测试低频事实恢复;去掉结构化约束,测试权限与承诺;固定触发时机,测试语义边界价值;替换执行器,测试 manager 兼容性;加入错误摘要,测试恢复能力。如果去掉一个模块没有改变它声称解决的指标,机制解释就需要重审。
统计上要按任务轨迹配对。相同初始环境和随机种子下比较压缩策略,记录成功差值而非只比较两组均值。长程任务运行昂贵,置信区间可能很宽;没有足够样本时,应如实给出不确定性,不能把少量成功案例当成稳定优势。
最重要的压力测试是目标在压缩后改变。新问题需要一条先前看似无关的证据,系统必须通过索引回源;旧授权被撤销,系统必须停止依赖摘要中的许可;环境版本变化,旧测试证据必须降级。这些场景能区分真正的状态管理和只会把历史缩短的摘要器。
若一个方案只能在固定目标、无外部副作用、一次压缩和单一执行器上成立,它仍有研究价值,但适用边界要写清。极限扩展不能靠增加抽象名词,最终仍要回到哪些轨迹会成功、哪些会失败,以及实验怎样让失败显现。
KV 缓存压缩与语义压缩解决不同瓶颈,上下文管理里常把 token 摘要、KV eviction、KV quantization 和稀疏注意力放在一起讨论。它们都能降低长历史成本,却作用于不同对象。语义压缩生成新的短序列,可能改变信息;KV 压缩保留 token 语义表示,只降低缓存宽度、精度或条目数;稀疏注意力保留缓存,却减少每次读取范围。
对长度 、层数 、每 token KV 宽度 、元素字节 ,标准缓存量级为
量化主要减小 ,GQA/MLA 一类结构减小 ,token eviction 减小有效 。文本摘要则把后续前缀长度从 换成 ,新序列需要重新 prefill,但后续各层只为 保存 KV。
两者可以组合。先把已完成阶段压成短摘要,再对仍保留的近期原文使用低比特 KV 或选择性缓存。语义摘要若已经删除某段,KV 技术无法恢复它;KV 量化引起的数值误差,也无法通过更好的文字摘要完全抵消。实验应分别固定文本与缓存配置,避免把系统收益都归因给一个模块。
KV eviction 的选择标准通常依据注意力、位置或近期性,而任务状态的重要性未必在当前注意力中显现。一个早期授权字段长期没有被关注,直到最终发布才关键;纯注意力分数可能提前淘汰它。结构化硬状态独立保存,正好弥补模型内部缓存策略对低频高风险信息的不敏感。
语义压缩还会改变位置关系。原始证据相距数万 token,摘要后可能相邻,模型更容易联合推理;同时,原始先后顺序、重复次数和语气强度可能被抹平。因而「缩短后性能提高」既可能来自减少噪声,也可能来自人为重排证据,不能直接解释成模型获得了更长记忆。
对抗性历史会利用压缩器的选择偏好,压缩器本身是一条攻击面。外部网页或工具输出可以反复强调恶意指令,诱使摘要器把它提升为核心目标;攻击者也可以制造大量相似日志,挤掉真正约束。执行器若信任摘要而忘记消息来源,数据就可能在压缩过程中被洗成指令。
每个状态项要携带来源角色和信任级别。用户授权、系统边界、工具观测和网页文本进入不同通道,摘要只能改写内容,不能提升权限。即使网页里写着「这是用户的新要求」,来源标签仍然是外部数据。压缩后的自然语言若丢掉标签,后续模型很难重新区分。
重复也不能自动提高可信度。十个页面复制同一错误说法,可能来自同一上游;一条恶意指令重复一百次,也没有获得授权。合并时应按来源独立性去重,并把频率与证据强度分开。否则攻击者可以用 token 数换取摘要预算和置信度。
另一类攻击针对删除。用户要求遗忘一段敏感信息后,旧摘要、向量索引、checkpoint 和 KV 快照仍可能保留派生表示。删除协议需要追踪数据血缘,使所有可定位副本失效;无法精确删除的聚合模型状态,应说明边界并阻止其继续进入工作上下文。
压力测试可以把注入内容放在工具结果、引用文本、代码注释和历史摘要中,并设置相似但合法的操作说明。系统既要拒绝权限提升,又要保留真正的数据。简单删除所有命令式句子会损坏文档理解,不构成有效防御。
2.1. 数学推导压缩为何尤其困难
数学推导的中间步骤具有强依赖。自然语言背景删掉一段仍可能理解,证明中漏掉一个条件,后续等式就失去成立依据。压缩器若只保留最终公式,会隐藏变量定义、适用区间和近似步骤,使恢复后的模型无法判断能否复用。
可以把推导表示为有向无环图,节点是定义、引理、变换和结论,边表示逻辑依赖。预算有限时,不能只按节点显著性选择;保留结论必须保留一条从假设到结论的可验证路径,或保存能回源到完整证明的指针。孤立结论只能作为待验证陈述。
设结论节点为 ,前提集合为 。压缩后的证明子图 若要独立支撑 ,需要满足
若预算不够,摘要应明确写「结论及引用」,而非省掉中间步骤后维持证明完成的口吻。读者或 Agent 在真正使用结论前回源检查。
符号表是另一类高价值状态。同一个 在不同章节可能表示压缩率、块大小或样本数;压缩合并后若只保留一个定义,公式会表面合法、语义错位。每段推导的符号要绑定作用域,跨段合并时显式重命名或保留局部命名空间。
评测数学压缩时,可以隐藏某一步并要求判断后续是否仍成立,改变一个前提观察结论是否更新,或让两个使用相同符号的推导合并。答案复述得像不像原文并不关键,关键是依赖结构是否保持。
压缩比需要按有效信息而非原始长度解释,同样从十万 token 压到一万 token,原历史若有九成重复日志,任务很容易;若每段都包含独立约束,压缩难度完全不同。报告压缩比
报告式 (29) 的压缩率时,应描述有效信息密度和冗余结构。
可以用完成任务所需的最小充分状态 作为概念参照。实际无法精确求出它,但可通过人工标注关键事实、约束、证据和未决计划得到近似。若 本来就接近预算,任何高压缩率都意味着损失;若历史主要是重复尝试,摘要接近最小充分状态并不困难。
压缩收益可写成相对于必要状态的开销:
很大说明仍有冗余,接近 1 表示接近标注下限,小于 1 则通常意味着标注遗漏、表示编码更紧或真实信息已经丢失。这个量依赖任务,不能跨数据集直接比较。
历史结构也影响可压缩性。重复观测、可重建计算和已经落盘的中间产物可以低成本删除;用户偏好、一次性外部返回和未保存的推理分叉难以重建。数据集若只包含前一类,会高估方法在真实工作流中的表现。
因此论文表格除了平均输入/输出 token,还应给关键状态数、来源数、目标修订次数和不可恢复事件比例。没有这些量,读者无法知道更高压缩比来自更强方法,还是更容易的历史。
从一次摘要到持续维护,生产中的上下文不会只压一次。新事件不断到来,旧事实会失效,目标会变化,索引也会迁移。压缩表示应被当作持续维护的物化视图:由事件日志派生,可增量更新,必要时重建。
全量重写每次都重新解释所有历史,能修正旧摘要,却成本高且输出不稳定。纯增量更新便宜,但早期错误可能永久保留。折中方案是在短周期内增量合并,在 checkpoint 或检测到冲突时从权威事件重新构建,并比较新旧状态差异。
维护过程要有垃圾回收。已经完成且超过保留期的临时计划可以删除;被新事实替代的旧值保留审计指针,不再进入热上下文;无引用的缓存和摘要版本可回收。垃圾回收不能只按时间,因为尚未完成的低频承诺可能很久没有访问。
漂移检测观察摘要与环境的差异。文件哈希变化、工具 schema 升级、目标版本前进或验证证据过期,都可能触发局部重建。若差异范围无法确定,才退回全量恢复。局部更新依赖数据血缘,没有来源映射就只能重做全部。
持续维护最终形成一个闭环:记录事件,更新权威状态,选择进入工作上下文的信息,执行并产生新观测,验证后降级已完成阶段。摘要只是其中一次状态变换。把它单独当作语言生成任务,会漏掉版本、一致性、权限和恢复这些决定长程可靠性的部分。
一个跨三次压缩的手算,考虑一条长度上限为 32K token 的代码修复轨迹。初始规则、仓库说明和用户目标占 6K,第一次搜索与阅读占 14K,修改和测试预计还需 18K。若等到窗口达到 30K 才处理,只剩 2K 余量,任何完整测试日志都可能触发截断。系统在 20K 时建立第一个 checkpoint 更稳妥。
第一次压缩把 14K 探索历史变成 2K 状态:保留目标与边界 1K、已核实代码事实 400、失败尝试 300、当前计划 200、证据指针 100。工作上下文从 20K 降至约 8K。这里的压缩率为 60%,但探索历史自身从 14K 压到 2K,局部压缩率约 85.7%。两种口径不能混报。
随后修改、测试产生 16K,新占用约 24K。第二次压缩不能简单把全部 24K 再摘要一次,否则第一版中的精确约束会经过第二次生成式改写。系统保留结构化目标 1K,读取第一版状态与新增 16K,只把已经完成的修改阶段合成 2.5K,并将完整 diff 与测试日志移入外部证据。新上下文约 3.5K 加上近期交互。
假设第二次摘要把「Windows 测试尚未执行」误写成「测试通过」。如果最终只检查摘要,任务会提前完成;如果承诺表仍保存 windows-test: pending,不变量检查会发现矛盾并拒绝切换。结构化承诺由此形成生成式压缩之外的独立校验通道。
第三阶段用户把目标改成同时支持另一版本。旧修改事实仍有用,原来的兼容性结论却可能失效。依赖图定位所有引用目标版本的测试证据,把它们从 verified 降为 stale;代码位置、失败原因和无关平台测试继续保留。全量丢弃会浪费有效工作,完全继承又会产生错误完成判断。
若每次摘要独立漏掉关键项的概率都是 3%,三次都不漏的粗略概率为 。加入结构化硬字段后,生成式摘要只承担背景和解释,关键项遗漏概率由字段验证器控制。真实错误相关性更强,这个数字不能当可靠性估计,但能说明反复生成会累积风险。
这条手算还暴露成本口径。三次压缩节省后续 prefill,却增加摘要生成、证据落盘和两次回源。正确比较应累计整条轨迹的输入 token、输出 token、墙钟时间与任务结果,不能只拿最终上下文长度宣称节省。
2.2. 状态合并需要字段级语义
并行分支或恢复 checkpoint 后,常会得到两份压缩状态。文本拼接会保留矛盾,重新摘要又可能随意选择一方。合并必须理解字段类型:集合项可以求并,单值字段需要版本裁决,计数可能重算,计划状态按生命周期迁移,权限只能由授权事件改变。
设两份状态来自共同祖先 ,分别为 。三方合并比较每个字段相对 的变化。只有一侧修改时采用该侧;两侧写入相同值时合并;两侧不同值则调用该字段的冲突规则。直接比较 与 无法区分「一侧保留旧值」和「两侧各自新增」。
集合合并也不总是并集。已验证事实可在来源独立时并入,删除集合要让墓碑优先,避免被另一分支的旧副本复活。待办任务如果两侧都完成同一项,要按稳定 ID 去重;仅凭标题相似可能把两个不同范围的任务误合并。
数值字段需要单位与语义。例如一侧记录「至少 5 篇」,另一侧记录「提高到 8 篇」,合并为下界 8;若另一侧是「正好 6 篇」,两个约束未必相容。把它们都存成整数然后使用较大值,会丢失量词。
计划节点的状态不能按枚举大小取最大。cancelled 与 completed 都是终止态,却含义不同;旧分支完成一个已被新目标取消的动作,不应把当前任务重新标成完成。合并时检查目标版本和状态转移是否合法。
合并输出要保留冲突,而非为了生成一段流畅摘要强行消解。未解决冲突进入明确列表,阻塞依赖字段的动作;与冲突无关的工作仍可继续。这样上下文压缩才能服务于并行 Agent,而不会成为悄悄吞掉分歧的黑箱。
失败后的恢复路径,压缩失败有不同层次。格式错误可以重新生成,事实遗漏需要回源,错误覆盖需要从事件日志重建,外部副作用则可能需要补偿。统一执行「清空上下文重新开始」既昂贵,也可能重复不可逆动作。
恢复第一步冻结当前写入,保存出错状态和触发证据。随后判断权威来源是否仍完整:原始事件、文件版本和工具日志都在,可以重建;只有上一版摘要存在,只能在有损状态上修补;外部环境已经变化,还要读取当前状态做三方比较。恢复能力取决于事故前保存了什么。
局部遗漏可通过证据索引补齐。摘要里缺一个测试平台,承诺表和日志指针仍在,只需读取对应日志、更新字段并重验依赖节点。来源指针也丢失时,系统必须重新执行测试;若测试环境无法复现,就只能把结论标为未知,不能根据旧语气猜回结果。
错误覆盖需要回放。以收尾阶段一个可信 checkpoint 为起点,按顺序应用之后事件,并使用当前版本的确定性更新规则。若更新规则本身升级,应同时保留旧规则版本,先复现事故状态,再运行迁移;直接用新规则回放可能无法解释旧产物为什么出现。
已经执行的副作用按三类处理。可逆写入回滚到已知版本,可补偿动作执行反向操作并保留审计,不可逆动作通知用户并调整后续计划。摘要错误导致消息已经发送时,删除本地状态不能撤回收件人的副本,系统需要明确承认这一边界。
恢复测试不能只验证进程重启后能读到摘要。应随机破坏一个字段、截断一段索引、让 checkpoint 与环境版本错位,并测量是否能定位损坏范围、恢复有效成果、阻止重复副作用和重新获得验收证据。恢复时间与丢失工作量也是长程能力的一部分。
上下文压缩的适用边界,当任务高度依赖精确原文,且证据无法外置或回源时,激进摘要风险很高。法律条款逐字比较、代码补丁字符级审查、长证明形式验证,都更适合选择式保留或结构化抽取。生成式摘要可以提供导航,不能替代权威文本。
当执行器本身不会使用结构化状态,增加复杂 schema 也未必带来收益。它可能忽略字段,只依赖旁边的自然语言。此时应先验证接收者能稳定读取接口,再扩展状态粒度。AdaCoM 的跨 Agent 迁移结果提醒我们,管理策略与执行能力存在匹配关系。
任务很短、历史未接近退化区间时,压缩可能只有成本。摘要调用增加延迟并引入新的错误通道;完整上下文若能稳定处理,最优策略可能是不压缩。系统需要允许「保持原样」成为正式动作,而非把每次减少 token 都当进步。
极端动态环境中,旧历史价值迅速下降,摘要旧细节不如重新观测。相反,无法重现的一次性事件需要更强保留。压缩策略依赖环境可观测性、重放成本和变化速度,不能只由窗口长度决定。
隐私要求也可能限制外部冷存储。把历史移出窗口并不等于删除,它可能进入更多索引和缓存。若治理成本高于 token 收益,应缩小持久化范围,并优先使用可验证删除的存储。压缩设计必须同时回答信息去哪了、保存多久和谁能读取。
因此,可靠上下文管理的核心判断可以收束为四句:先确定权威状态,再决定工作窗口;按后续行动价值压缩,而非按文字相似度;允许通过稳定索引回源,并让所有证据绑定版本;把压缩放进执行、验证和恢复闭环中评测。做不到这些时,更长的摘要只是更短的聊天记录,还称不上长程 Agent 的状态系统。
2.3. 如何检查压缩表示是否足够
「信息都在」很难直接证明,因为未来问题未知。实际系统可以用一组可观测任务逼近充分性:从压缩状态重建当前目标,列出仍未完成的承诺,解释最近一次关键决策,定位每条已验证事实的来源,并预测下一步合法动作。任何一项无法完成,都暴露对应状态缺口。
还可以采用双向检查。正向从原始事件生成压缩状态,反向让另一个执行器只看压缩状态回答结构化问题,再与事件日志计算出的真值比较。反向任务不要求复述原文,而是检验状态是否支持行动。为了防止测试题泄漏,问题模板应覆盖未见组合,并随机改变实体、范围和事件顺序。
对计划节点 ,定义可执行条件 、预期结果 和验证器 。压缩状态至少要支持判断
若执行器只能从摘要猜测其中任一项,状态还不足以安全调度。对高风险动作,三个条件都应由结构化证据确认;对低风险草稿,可以允许带置信度的语义判断。
充分性还包括知道自己缺什么。摘要明确列出未覆盖区间、未知字段和待回源证据,比用流畅语言填满所有空白更可靠。可以计算未知检测率:真实缺失的关键项中,有多少被状态标成未知。漏报会导致无依据行动,多报会增加回源成本,两者代价并不对称。
压缩前后的动作一致性是另一项测试。在原始历史与压缩状态上分别让同一策略给出下一步动作,再由环境验证哪一边更好。若压缩方案经常改变动作,却无法提升成功率或降低成本,它可能只是在制造随机扰动。
收尾阶段用隐藏验收项做盲测。构造者在历史早期放入一条不会频繁出现、但最终必须满足的约束,中途加入大量相关日志,观察多次压缩后该约束是否仍能进入执行与验证。再设置一条后来被撤销的相似约束,检查系统会不会因为重复记忆而复活旧要求。保留与遗忘同时通过,才说明上下文管理真正维护了当前状态。