Browse this library

Chinese source article

2.2.2 · 率失真与可证伪实验

从任务条件下的率失真出发,设计能检验压缩、合并与恢复能力的实验。

View original Markdown ↗

1. 压缩质量是任务条件下的率失真问题

只比较压缩前后的文字相似度,会把上下文管理带偏。工具日志里一行失败码可能决定后续路径,却只占极少 token;大段自然语言解释即使保留得很像,也可能已经失去行动价值。压缩质量必须相对于后续任务、动作集合和错误代价来定义。

设原始历史为 HH,压缩表示为 ZZ,长度预算为 BB。经典率失真形式可以改写为

min⁡q(Z∣H) E[DT(H,Z)]s.t.E[∣Z∣]≤B,(18)\min_{q(Z\mid H)}\ \mathbb E[D_T(H,Z)] \quad\text{s.t.}\quad \mathbb E[|Z|]\le B, \tag{18}

其中 DTD_T 是任务条件失真。若使用 HH 的最优动作与使用 ZZ 的最优动作相同,而且关键验收结论不变,那么删掉大量表述仍可能是低失真;若一个版本号丢失导致读取错误文件,文字摘要再流畅也是高失真。

任务在压缩时未必完全已知。可以把未来任务视为分布 p(T∣H)p(T\mid H),优化平均失真;安全约束与不可逆动作则不能只服从平均值,应加入最坏情况项:

D(H,Z)=ET[DT(H,Z)]+λmax⁡T∈TriskDT(H,Z).(19)D(H,Z)=\mathbb E_T[D_T(H,Z)] +\lambda\max_{T\in\mathcal T_{risk}}D_T(H,Z). \tag{19}

这解释了为什么权限、删除边界、未完成承诺和证据指针要独立保存。它们平时未必被调用,一旦相关,遗漏代价远高于普通背景。

压缩预算也不该平均分给消息。对状态项 ii,设再次使用概率为 pip_i,遗漏损失为 LiL_i,保留成本为 bib_i,可以按 piLi/bip_iL_i/b_i 排序分配工作记忆。但这个贪心只适合近似独立的项目;多个证据共同支持一个结论时,单独保留任何一项都可能无用,需要按依赖子图整体选择。

率失真视角还能解释 AdaCoM 所报告的 Fidelity-Reliability Trade-off。能力较强的 Agent 能利用细节,过度裁剪会损失可用证据;较弱 Agent 可能被冗长历史干扰,更激进压缩反而把它带回可靠推理区间。压缩器与执行 Agent 不是可以随意互换的两个模块,最优表示取决于接收者能读懂什么、会被什么锚定。

评测时至少需要三条曲线:任务成功率随 token 预算变化、关键状态召回率随预算变化、延迟与成本随预算变化。单点报告「压缩了多少」无法区分方法是在更有效地编码,还是碰巧获得了更宽松的预算或更强的下游模型。

选择、摘要与索引是三种不同操作,上下文缩短常被统称为摘要,实际包含三类算子。选择保留原始片段,信息没有被改写,但会遗漏未选部分;摘要生成新表述,密度更高,也引入事实漂移;索引把内容移到窗口外,保留回源入口,用检索延迟换取 token。三者的错误机制不同。

选择可写成掩码 mi∈{0,1}m_i\in{0,1}:

Zsel=⨁imihi,∑imi∣hi∣≤B.(20)Z_{sel}=\bigoplus_i m_i h_i, \qquad \sum_i m_i|h_i|\le B. \tag{20}

它适合短而精确的命令、报错与公式。缺点是片段之间的关系仍需模型自行恢复,连续保留许多重复日志也会浪费预算。摘要器将多个片段映射为 z=f(hi:j)z=f(h_{i:j}),能合并重复和显式写出因果,却可能把「待验证」改成「已确认」。索引只保存 (id,hash,description)(id,hash,description),适合体积大、复用概率低且允许稍后读取的材料。

一个稳健系统会混合使用:硬约束和当前目标以结构化字段保留;最近工具结果原文选择;阶段背景使用摘要;完整日志与论文正文进入可寻址冷存储。若把所有东西交给同一个生成式摘要器,精确字符串、权限状态与散文背景会争夺同一输出通道。

混合表示需要解决一致性。摘要声称测试已经通过,索引指向的原始日志却属于旧提交;结构化状态标记任务取消,自由文本还写着下一步继续执行。读取时不能让模型自行在冲突版本中投票。权威字段应有明确优先级,派生摘要携带来源版本,不匹配时先失效再重建。

索引并不天然可恢复。标识符可能失效,文件可能移动,外部网页可能更新。一个可用指针至少包含稳定定位、内容哈希、抓取时间和必要的访问条件。内容哈希不匹配时,新内容可以作为新证据读取,却不能冒充压缩时所依据的旧证据。

三种操作应分别消融。只看最终 token 数相同的混合方案,无法判断收益来自保留原文、生成归纳还是允许回源。测试集还应放入精确字符串任务、跨段因果任务和低频证据回忆任务,让每种算子的长处与短板显现出来。

多层记忆的迁移规则,有限窗口更像缓存,而不是全部记忆。可以把状态分为即时上下文、工作记忆、情节存储和权威外部状态。即时上下文保留最近交互;工作记忆保存当前目标、计划和活跃证据;情节存储保存已经结束的子任务与来源索引;权威状态由文件、数据库、版本库或真实环境承担。

信息从热层迁往冷层需要明确条件。子任务完成且验证通过后,过程日志可以降级,只保留结论、证据和恢复入口;仍在排错的轨迹不能因为时间久就降级,因为旧失败尝试决定下一步。访问频率只是一个信号,任务阶段和未决依赖同样重要。

设状态项 xix_i 的热度为 aia_i,依赖中心性为 did_i,风险为 rir_i,体积为 bib_i,可定义保留分数

si=αai+βdi+γri−δbi.(21)s_i=\alpha a_i+\beta d_i+\gamma r_i-\delta b_i. \tag{21}

分数帮助排序,却不能覆盖硬规则。授权边界即使很久没访问也不能被淘汰;已经存入外部权威状态的巨大日志,即使与当前任务相关,也可能只需保留指针。权重应由任务域校准,而非在所有 Agent 上共用。

晋升同样重要。冷存储中的旧事实被新目标重新引用时,应回到工作记忆,并先验证新鲜度。只检索一段相似文字而不读取它的版本和上下文,容易把旧计划复活。晋升记录要指明触发问题、读取范围和验证结果,避免检索内容永久污染后续上下文。

分层迁移还要防止抖动。某项在预算边缘反复晋升和降级,会不断支付摘要与读取成本。可以使用双阈值:得分高于 θup\theta_{up} 才晋升,低于较小的 θdown\theta_{down} 才降级。中间区域维持原层级,形成迟滞。

故障恢复要从冷层重建热层。恢复流程先读取目标版本和未决动作,再装载最近 checkpoint,随后按证据指针核对外部环境。若只能加载一篇自然语言摘要,却不知道它对应哪些文件与工具调用,系统恢复的是故事,不是可继续执行的状态。

压缩触发是一项最优停止问题,何时压缩与怎样压缩同样关键。太早触发会增加转换次数和累计失真,太晚触发会让上下文退化,甚至没有空间容纳工具返回。触发器需要在继续运行的风险与立即压缩的代价之间选择。

令当前状态为 sts_t,继续一步的期望代价为 Ccontinue(st)C_{continue}(s_t),现在压缩的代价为 Ccompact(st)C_{compact}(s_t),则触发规则可以写为

compact at t  ⟺  Ccompact(st)≤E[Ccontinue(st+1)+V(st+1)].(22)\text{compact at }t \iff C_{compact}(s_t) \le \mathbb E[C_{continue}(s_{t+1})+V(s_{t+1})]. \tag{22}

这里的状态不仅包含 token 占用,还包括是否位于子任务边界、是否存在未闭合推导、下一轮预计输出、外部动作是否可恢复。相同的 80% 窗口占用,在测试刚通过时适合压缩,在长证明进行到中间时可能不适合。

SelfCompact 的工具与 rubric 组合可以从这个角度理解:工具提供停止动作,rubric 向模型暴露哪些状态意味着转换代价较低。仅有工具时,模型可能不调用或乱调用;只有文字提醒而没有压缩动作,也无法真正改变窗口。

预测下一轮长度时要考虑尾部风险。只用平均输出长度,遇到一次巨大工具返回就会溢出。可以用高分位预算 Q1−ϵ(Gt+1∣st)Q_{1-\epsilon}(G_{t+1}\mid s_t) 替代均值,让溢出概率控制在 ϵ\epsilon 附近。高风险工具调用前还可主动建立 checkpoint,即使窗口尚未达到固定阈值。

触发评测不能只报告平均压缩次数。需要记录过早触发率、被迫截断率、处于不安全语义位置的触发率,以及每次压缩后到下一次回源的距离。两个方法任务成功率相同,其中一个可能靠高频重压缩支付了数倍成本,另一个则保留过多历史导致服务尾延迟更高。

1.1. 关联阅读

本库的 Long-Horizon 严格定义和评测协议共同约束压缩方案。前者区分长上下文与长程依赖,后者给出有效进度、扰动恢复和成本曲线;因此压缩率或摘要相似度不能单独充当任务成功指标。

LiveMem提供另一条路径:用固定容量循环状态维持上下文轮转后的计算连续性,但仍需外部事实与审计系统。LongHorizon-Harness则把任务状态、执行与完成判断外置。三者并非互斥:压缩控制工作上下文,内生状态维持连续影响,Harness 保存可验证、可恢复的权威状态。

压缩误差怎样穿过后续决策,摘要里的一处错误不会只影响下一句话。它先改变模型对当前状态的估计,再改变计划、工具参数和验证对象,收尾阶段可能被新产生的日志当成既成事实。要理解压缩风险,需要沿决策链追踪误差,而非只在摘要文本上做逐句核对。

设真实状态为 sts_t,压缩后恢复的状态为 s^t\hat s_t,策略为 π(a∣s)\pi(a\mid s),环境转移为 P(s′∣s,a)P(s'\mid s,a)。若压缩造成状态误差 δt=d(st,s^t)\delta_t=d(s_t,\hat s_t),动作分布差异可由策略敏感度约束:

TV⁡ ⁣(π(⋅∣st),π(⋅∣s^t))≤Lπδt.(23)\operatorname{TV}\!\left(\pi(\cdot\mid s_t), \pi(\cdot\mid\hat s_t)\right) \le L_\pi\delta_t. \tag{23}

LπL_\pi 大的状态区域对细小表述非常敏感。例如命令中的路径只差一个目录,动作就完全不同;背景解释少一个形容词,通常不会改变计划。压缩器应该优先保留高敏感字段,而不是按自然语言显著性分配 token。

动作改变后,环境状态也会分叉。若转移和价值函数的 Lipschitz 常数分别为 LP,LVL_P,L_V,长度为 HH 的粗略误差上界会包含连乘项 (LPLπ)H(L_PL_\pi)^H。现实系统不一定满足光滑条件,但这个形式揭示一个事实:长程任务中的早期状态错误具有放大机会,不能用一次摘要相似度推断终局影响。

有些误差会自行消失。压缩漏掉一条无关搜索结果,后续再也不使用;有些误差会在验证时被纠正,例如测试实际失败迫使系统重读日志;还有些误差会自我强化,错误摘要令 Agent 修改错误文件,新 diff 又似乎证明该文件就是目标。评测应区分消散、可纠正和自强化三类轨迹。

阻断误差传播依赖独立观测。执行关键动作前重新读取当前文件、权限和测试状态,相当于把估计重新锚定到环境。若所有后续判断都只引用压缩摘要,系统形成封闭回路,摘要中的错误再也没有外部信号可以纠正。

可以设计一组注入实验:在摘要中分别篡改低影响背景、当前文件路径、验收阈值和权限字段,测量动作分歧时间、受影响节点数、恢复时间与不可逆副作用。单纯统计模型是否复述错误,远不如这些指标接近真实风险。

事实、决策和承诺需要不同保真标准,上下文中的信息承担不同功能。事实描述环境是什么,决策记录为什么选择某条路径,承诺规定之后必须完成什么。三者混在一段摘要里,容易出现「保留结论却丢掉依据」或「保留讨论却丢掉义务」。

事实项需要来源、观测时间与版本。例如「测试通过」必须绑定命令、代码版本和输出;环境变化后,它会过期。决策项需要候选方案、取舍理由和适用前提,否则目标变化时无法判断旧选择是否仍合理。承诺项需要责任主体、完成条件和状态,不能因为相关讨论被压缩就从计划里消失。

对事实可以追求可验证保真:摘要陈述能否由来源重新证明。对决策追求反事实保真:如果关键前提改变,系统能否知道要重开选择。对承诺追求执行保真:未完成事项是否仍出现在调度与验收中。这三个指标不能被一个 ROUGE 或语义相似度取代。

举例来说,原历史可能包含「尝试方案 A 后内存溢出,因此改用 B;提交前还需在 Windows 上验证」。合格压缩至少保留 A 的失败条件、选择 B 的理由和 Windows 验证这项承诺。只写「当前采用 B」虽然语言简洁,却无法解释何时应重新考虑 A,也会漏掉最终验收。

状态结构可把三者拆开:facts 保存版本化谓词,decisions 保存前提到选择的边,obligations 保存未完成验收。自由文本摘要负责把它们串成可读背景,但不能成为唯一副本。更新时,事实失效会沿依赖边使决策降级,承诺只有完成、撤销或显式替代才能关闭。

评测样本应让三类信息发生不同变化。例如事实被新工具结果覆盖,决策因成本变化而重开,承诺被用户明确取消。若系统统一使用「最近一句覆盖」,就会错误删除仍有效的事实或继续执行已经撤销的承诺。

1.2. 并行压缩的快照一致性

Parallel Context Compaction 将压缩从串行阻塞路径移开,但并行本身带来一致性问题。压缩器读取历史 H1:tH_{1:t} 时,执行 Agent 可能继续产生 Ht+1:t+kH_{t+1:t+k}。若摘要器的输入边界不固定,晚到消息有时被读入、有时被遗漏,同一轨迹会得到不可复现的状态。

最简单的协议是在版本 tt 建立不可变快照,压缩结果写为 Z(t)Z^{(t)}。新事件进入增量缓冲区 ΔH(t+1:u)\Delta H^{(t+1:u)}。切换时使用

Cu=Z(t)⊕ΔH(t+1:u),(24)C_u=Z^{(t)}\oplus\Delta H^{(t+1:u)}, \tag{24}

并确认增量起点恰好是 t+1t+1。起点更小会重复事件,起点更大会形成缺口。摘要结果必须携带覆盖区间,不能只返回一段无版本文本。

并行任务结束顺序可能颠倒。版本 t+20t+20 的摘要先完成,版本 tt 的摘要稍后返回,后者不能覆盖前者。接收方按覆盖终点与祖先关系判断;若两个摘要来自分叉快照,不能仅凭时间戳选一个,需要重新合并共同祖先之后的差异。

压缩期间发生目标更新更棘手。旧快照中的大量信息可能仍有效,但摘要策略使用了旧目标的价值判断。系统可以接受其中的事实抽取,重新评估其选择与删减;也可以在目标差异影响核心预算时取消压缩。是否取消由目标变更与摘要选择函数的依赖关系决定。

并行方案的延迟收益也要按端到端关键路径计算。假设执行剩余时间为 TeT_e,压缩时间为 TcT_c,串行停顿近似 Te+TcT_e+T_c,理想并行为 max⁡(Te,Tc)\max(T_e,T_c)。但快照复制、合并与冲突处理带来 TmT_m,真实时间是 max⁡(Te,Tc)+Tm\max(T_e,T_c)+T_m。当块很小或冲突频繁时,并行未必更快。

测试应主动制造摘要慢返回、目标在压缩中途变化、增量缓冲重复投递和执行 Agent 提前耗尽窗口等情况。只在稳定离线历史上并行生成几段摘要,无法证明在线切换正确。

回源属于压缩协议,任何有限摘要都可能缺信息。系统若把回源视为异常,会逼迫摘要器塞入所有可能细节;结果是压缩率低,仍然无法覆盖未知未来任务。更合理的设计把「摘要负责导航,原始记录负责证明」作为正常协议。

当问题 qq 到来时,先用工作状态判断现有证据是否充分。若答案依赖摘要中没有展开的来源,生成回源请求 r=(q,id,span,version)r=(q,id,span,version)。读取后把相关片段临时晋升,并将得到的结论与来源绑定。这个过程类似按需分页,关键是缺页可检测。

缺页可检测要求摘要明确表达未知和指针。例如写「失败原因有三类,详见日志 L17」比武断缩成一类更安全;写「尚未核对发布日期」能阻止模型把空白补成猜测。摘要器的目标不该奖励表面完整,因为表面完整会掩盖回源需要。

回源策略可以比较读取成本与错误风险。设读取成本为 crc_r,不读取时错误概率为 pep_e,错误损失为 LeL_e,当

peLe>cr(25)p_eL_e>c_r \tag{25}

时应回源。高风险事实即使当前置信度较高也值得核对;低风险背景可以接受摘要。若来源访问需要网络或权限,成本还包括失败概率和等待时间,系统应提前缓存即将使用的证据。

回源结果也会过期。网页当前版本与压缩时版本不同,读取新页面只能证明现在内容;要核对旧决策,应读取存档或保存的快照。文件指针若没有提交哈希,也可能返回修改后的内容。稳定定位是协议的一部分,不是检索器的附加优化。

评测回源能力时,应有意询问压缩时低概率、后来变得关键的信息。观察系统能否承认工作记忆不足、找到正确来源、验证版本并更新状态。禁止回源的评测只能测一次性编码容量,不能代表有外部存储的真实 Agent。

压缩器与执行器之间的接口契约,压缩器输出一段自然语言,执行器「大概能懂」,不足以形成稳定系统。两者需要明确接口:哪些字段必须存在,哪些允许未知,哪些结论必须带证据,哪些动作仍待执行,以及压缩覆盖了哪段历史。

接口可分为控制面与内容面。控制面包含目标版本、覆盖区间、状态 schema、校验和、未决动作和权限边界;内容面包含事实、背景、推理摘要与证据索引。控制面应由确定性逻辑验证,内容面再交给模型解释。这样即使自然语言表达变化,执行器仍能判断摘要是否适用于当前任务。

兼容性也是问题。压缩器升级后新增字段,旧执行器应忽略未知的可选项;删除或改变必需字段则需要 schema 版本迁移。没有版本号时,模型可能把旧字段含义按新规则解释,错误不会表现为解析失败,而会悄悄进入计划。

接口还应声明不变量,例如「所有未完成承诺都有唯一标识」「每个已验证事实都有来源版本」「权限集合只能由用户事件扩展」。压缩输出违反不变量时拒绝切换,继续使用旧上下文或采取保守回退。让执行器在缺字段时自由补全,会把格式错误转化成行为错误。

接收方不能盲信摘要器自报。覆盖区间可与事件日志核对,引用哈希可验证,计数与计划节点可重算。自然语言推断无法完全自动审计,但硬字段越多,剩余语义风险越集中,人工或模型复核也更有目标。

跨模型迁移尤其依赖契约。AdaCoM 的结果提示,管理器对能力相近的 Agent 更容易迁移;部分原因可能是不同执行器使用压缩表示的方式不同。接口能够统一字段,却无法保证每个模型同样理解叙述细节,所以迁移评测仍要固定预算、任务和执行器能力。

训练压缩策略时的信用分配,压缩动作的后果通常延迟很久才出现。摘要漏掉一个约束,可能几十步后提交时才失败;保留一条证据,也可能直到最终验证才体现价值。若只用终局奖励,摘要 token 获得的学习信号方差很大。

把压缩边界记为 c1,…,cmc_1,\ldots,c_m,每次产生状态 zjz_j。终局回报 RR 同时受执行动作、环境随机性和多次压缩影响。一个朴素策略梯度项为

∇J=E[∑j=1m∑t∈zjAt∇log⁡πθ(zj,t∣hj,t)].(26)\nabla J=\mathbb E\left[ \sum_{j=1}^{m}\sum_{t\in z_j} A_t\nabla\log\pi_\theta(z_{j,t}\mid h_{j,t}) \right]. \tag{26}

若不同轨迹的摘要长度差异很大,按 token 求和会让长摘要拥有更大梯度权重。token-level normalization 试图让长度不同的压缩段可比,但归一方式也改变「一次压缩」与「一个 token」谁是优化单位,需要结合论文具体目标解释。

局部辅助奖励可以降低方差,例如约束召回、事实一致性、证据可达性和预算满足度。但这些代理指标可能被钻空子:逐字复制约束获得高召回,却挤掉任务进度;保留大量索引获得可达性,却让每步都回源。终局任务奖励仍需约束它们的实际价值。

反事实基线能估计一次压缩的贡献:在相同前缀下分别使用候选摘要与无压缩、截断或另一摘要继续 rollout,比较后续回报。完全配对的计算昂贵,可以只在关键边界采样。若环境不可复现,差异还会混入随机性,需要多次运行或使用可控模拟器。

训练数据必须包含压缩真正必要的轨迹。若多数任务在窗口内已经完成,策略最容易学到永不压缩;若所有轨迹都在固定位置强制压缩,它又学不到时机。课程可从单次、明确子任务边界开始,逐渐加入多次压缩、目标变化、错误摘要恢复和异步工具返回。

训练出的策略还要与部署预算匹配。训练时上下文、摘要模型和工具延迟不同,触发阈值与保留偏好会发生分布偏移。上线前应在目标执行器上重新绘制成功率—token—延迟曲线,而不能只迁移一个固定压缩比例。

2. 一套能够推翻方案的实验矩阵

上下文管理方案容易通过挑选有利任务显得有效。严格实验需要同时改变历史长度、有效信息密度、目标变化次数、工具输出体积、执行器能力和压缩预算。每个轴都对应不同假设,混在一个平均分里看不出方法依赖什么。

基线至少包括完整历史、窗口截断、固定间隔摘要、语义边界摘要、选择式保留、索引回源和学习式管理。完整历史并非永远是上界:长上下文退化可能使压缩方案更好;但若模型窗口容得下,完整历史提供了判断信息损失的必要参照。

对每种方法报告任务成功、有效 token、prefill 与 decode 成本、压缩调用成本、尾延迟、回源次数和关键状态错误。并行方案还报告快照冲突与合并开销,训练方案报告训练样本和额外计算。只报告模型 API token 会漏掉本地摘要器与检索系统的成本。

消融应直接针对机制。去掉证据指针,测试低频事实恢复;去掉结构化约束,测试权限与承诺;固定触发时机,测试语义边界价值;替换执行器,测试 manager 兼容性;加入错误摘要,测试恢复能力。如果去掉一个模块没有改变它声称解决的指标,机制解释就需要重审。

统计上要按任务轨迹配对。相同初始环境和随机种子下比较压缩策略,记录成功差值而非只比较两组均值。长程任务运行昂贵,置信区间可能很宽;没有足够样本时,应如实给出不确定性,不能把少量成功案例当成稳定优势。

最重要的压力测试是目标在压缩后改变。新问题需要一条先前看似无关的证据,系统必须通过索引回源;旧授权被撤销,系统必须停止依赖摘要中的许可;环境版本变化,旧测试证据必须降级。这些场景能区分真正的状态管理和只会把历史缩短的摘要器。

若一个方案只能在固定目标、无外部副作用、一次压缩和单一执行器上成立,它仍有研究价值,但适用边界要写清。极限扩展不能靠增加抽象名词,最终仍要回到哪些轨迹会成功、哪些会失败,以及实验怎样让失败显现。

KV 缓存压缩与语义压缩解决不同瓶颈,上下文管理里常把 token 摘要、KV eviction、KV quantization 和稀疏注意力放在一起讨论。它们都能降低长历史成本,却作用于不同对象。语义压缩生成新的短序列,可能改变信息;KV 压缩保留 token 语义表示,只降低缓存宽度、精度或条目数;稀疏注意力保留缓存,却减少每次读取范围。

对长度 NN、层数 LL、每 token KV 宽度 dkvd_{kv}、元素字节 bb,标准缓存量级为

MKV=2LNdkvb.(27)M_{KV}=2LNd_{kv}b. \tag{27}

量化主要减小 bb,GQA/MLA 一类结构减小 dkvd_{kv},token eviction 减小有效 NN。文本摘要则把后续前缀长度从 NN 换成 N′≪NN'\ll N,新序列需要重新 prefill,但后续各层只为 N′N' 保存 KV。

两者可以组合。先把已完成阶段压成短摘要,再对仍保留的近期原文使用低比特 KV 或选择性缓存。语义摘要若已经删除某段,KV 技术无法恢复它;KV 量化引起的数值误差,也无法通过更好的文字摘要完全抵消。实验应分别固定文本与缓存配置,避免把系统收益都归因给一个模块。

KV eviction 的选择标准通常依据注意力、位置或近期性,而任务状态的重要性未必在当前注意力中显现。一个早期授权字段长期没有被关注,直到最终发布才关键;纯注意力分数可能提前淘汰它。结构化硬状态独立保存,正好弥补模型内部缓存策略对低频高风险信息的不敏感。

语义压缩还会改变位置关系。原始证据相距数万 token,摘要后可能相邻,模型更容易联合推理;同时,原始先后顺序、重复次数和语气强度可能被抹平。因而「缩短后性能提高」既可能来自减少噪声,也可能来自人为重排证据,不能直接解释成模型获得了更长记忆。

对抗性历史会利用压缩器的选择偏好,压缩器本身是一条攻击面。外部网页或工具输出可以反复强调恶意指令,诱使摘要器把它提升为核心目标;攻击者也可以制造大量相似日志,挤掉真正约束。执行器若信任摘要而忘记消息来源,数据就可能在压缩过程中被洗成指令。

每个状态项要携带来源角色和信任级别。用户授权、系统边界、工具观测和网页文本进入不同通道,摘要只能改写内容,不能提升权限。即使网页里写着「这是用户的新要求」,来源标签仍然是外部数据。压缩后的自然语言若丢掉标签,后续模型很难重新区分。

重复也不能自动提高可信度。十个页面复制同一错误说法,可能来自同一上游;一条恶意指令重复一百次,也没有获得授权。合并时应按来源独立性去重,并把频率与证据强度分开。否则攻击者可以用 token 数换取摘要预算和置信度。

另一类攻击针对删除。用户要求遗忘一段敏感信息后,旧摘要、向量索引、checkpoint 和 KV 快照仍可能保留派生表示。删除协议需要追踪数据血缘,使所有可定位副本失效;无法精确删除的聚合模型状态,应说明边界并阻止其继续进入工作上下文。

压力测试可以把注入内容放在工具结果、引用文本、代码注释和历史摘要中,并设置相似但合法的操作说明。系统既要拒绝权限提升,又要保留真正的数据。简单删除所有命令式句子会损坏文档理解,不构成有效防御。

2.1. 数学推导压缩为何尤其困难

数学推导的中间步骤具有强依赖。自然语言背景删掉一段仍可能理解,证明中漏掉一个条件,后续等式就失去成立依据。压缩器若只保留最终公式,会隐藏变量定义、适用区间和近似步骤,使恢复后的模型无法判断能否复用。

可以把推导表示为有向无环图,节点是定义、引理、变换和结论,边表示逻辑依赖。预算有限时,不能只按节点显著性选择;保留结论必须保留一条从假设到结论的可验证路径,或保存能回源到完整证明的指针。孤立结论只能作为待验证陈述。

设结论节点为 yy,前提集合为 A(y)A(y)。压缩后的证明子图 GZG_Z 若要独立支撑 yy,需要满足

A(y)⊆V(GZ),∀a∈A(y), a⇝y.(28)A(y)\subseteq V(G_Z),\qquad \forall a\in A(y),\ a\leadsto y. \tag{28}

若预算不够,摘要应明确写「结论及引用」,而非省掉中间步骤后维持证明完成的口吻。读者或 Agent 在真正使用结论前回源检查。

符号表是另一类高价值状态。同一个 mm 在不同章节可能表示压缩率、块大小或样本数;压缩合并后若只保留一个定义,公式会表面合法、语义错位。每段推导的符号要绑定作用域,跨段合并时显式重命名或保留局部命名空间。

评测数学压缩时,可以隐藏某一步并要求判断后续是否仍成立,改变一个前提观察结论是否更新,或让两个使用相同符号的推导合并。答案复述得像不像原文并不关键,关键是依赖结构是否保持。

压缩比需要按有效信息而非原始长度解释,同样从十万 token 压到一万 token,原历史若有九成重复日志,任务很容易;若每段都包含独立约束,压缩难度完全不同。报告压缩比

ρ=1−∣Z∣∣H∣(29)\rho=1-\frac{|Z|}{|H|} \tag{29}

报告式 (29) 的压缩率时,应描述有效信息密度和冗余结构。

可以用完成任务所需的最小充分状态 ST(H)S_T(H) 作为概念参照。实际无法精确求出它,但可通过人工标注关键事实、约束、证据和未决计划得到近似。若 ∣ST(H)∣|S_T(H)| 本来就接近预算,任何高压缩率都意味着损失;若历史主要是重复尝试,摘要接近最小充分状态并不困难。

压缩收益可写成相对于必要状态的开销:

η=∣Z∣∣ST(H)∣.(30)\eta=\frac{|Z|}{|S_T(H)|}. \tag{30}

η\eta 很大说明仍有冗余,接近 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%,三次都不漏的粗略概率为 0.973≈91.3%0.97^3\approx91.3%。加入结构化硬字段后,生成式摘要只承担背景和解释,关键项遗漏概率由字段验证器控制。真实错误相关性更强,这个数字不能当可靠性估计,但能说明反复生成会累积风险。

这条手算还暴露成本口径。三次压缩节省后续 prefill,却增加摘要生成、证据落盘和两次回源。正确比较应累计整条轨迹的输入 token、输出 token、墙钟时间与任务结果,不能只拿最终上下文长度宣称节省。

2.2. 状态合并需要字段级语义

并行分支或恢复 checkpoint 后,常会得到两份压缩状态。文本拼接会保留矛盾,重新摘要又可能随意选择一方。合并必须理解字段类型:集合项可以求并,单值字段需要版本裁决,计数可能重算,计划状态按生命周期迁移,权限只能由授权事件改变。

设两份状态来自共同祖先 S0S_0,分别为 Sa,SbS_a,S_b。三方合并比较每个字段相对 S0S_0 的变化。只有一侧修改时采用该侧;两侧写入相同值时合并;两侧不同值则调用该字段的冲突规则。直接比较 SaS_a 与 SbS_b 无法区分「一侧保留旧值」和「两侧各自新增」。

集合合并也不总是并集。已验证事实可在来源独立时并入,删除集合要让墓碑优先,避免被另一分支的旧副本复活。待办任务如果两侧都完成同一项,要按稳定 ID 去重;仅凭标题相似可能把两个不同范围的任务误合并。

数值字段需要单位与语义。例如一侧记录「至少 5 篇」,另一侧记录「提高到 8 篇」,合并为下界 8;若另一侧是「正好 6 篇」,两个约束未必相容。把它们都存成整数然后使用较大值,会丢失量词。

计划节点的状态不能按枚举大小取最大。cancelled 与 completed 都是终止态,却含义不同;旧分支完成一个已被新目标取消的动作,不应把当前任务重新标成完成。合并时检查目标版本和状态转移是否合法。

合并输出要保留冲突,而非为了生成一段流畅摘要强行消解。未解决冲突进入明确列表,阻塞依赖字段的动作;与冲突无关的工作仍可继续。这样上下文压缩才能服务于并行 Agent,而不会成为悄悄吞掉分歧的黑箱。

失败后的恢复路径,压缩失败有不同层次。格式错误可以重新生成,事实遗漏需要回源,错误覆盖需要从事件日志重建,外部副作用则可能需要补偿。统一执行「清空上下文重新开始」既昂贵,也可能重复不可逆动作。

恢复第一步冻结当前写入,保存出错状态和触发证据。随后判断权威来源是否仍完整:原始事件、文件版本和工具日志都在,可以重建;只有上一版摘要存在,只能在有损状态上修补;外部环境已经变化,还要读取当前状态做三方比较。恢复能力取决于事故前保存了什么。

局部遗漏可通过证据索引补齐。摘要里缺一个测试平台,承诺表和日志指针仍在,只需读取对应日志、更新字段并重验依赖节点。来源指针也丢失时,系统必须重新执行测试;若测试环境无法复现,就只能把结论标为未知,不能根据旧语气猜回结果。

错误覆盖需要回放。以收尾阶段一个可信 checkpoint 为起点,按顺序应用之后事件,并使用当前版本的确定性更新规则。若更新规则本身升级,应同时保留旧规则版本,先复现事故状态,再运行迁移;直接用新规则回放可能无法解释旧产物为什么出现。

已经执行的副作用按三类处理。可逆写入回滚到已知版本,可补偿动作执行反向操作并保留审计,不可逆动作通知用户并调整后续计划。摘要错误导致消息已经发送时,删除本地状态不能撤回收件人的副本,系统需要明确承认这一边界。

恢复测试不能只验证进程重启后能读到摘要。应随机破坏一个字段、截断一段索引、让 checkpoint 与环境版本错位,并测量是否能定位损坏范围、恢复有效成果、阻止重复副作用和重新获得验收证据。恢复时间与丢失工作量也是长程能力的一部分。

上下文压缩的适用边界,当任务高度依赖精确原文,且证据无法外置或回源时,激进摘要风险很高。法律条款逐字比较、代码补丁字符级审查、长证明形式验证,都更适合选择式保留或结构化抽取。生成式摘要可以提供导航,不能替代权威文本。

当执行器本身不会使用结构化状态,增加复杂 schema 也未必带来收益。它可能忽略字段,只依赖旁边的自然语言。此时应先验证接收者能稳定读取接口,再扩展状态粒度。AdaCoM 的跨 Agent 迁移结果提醒我们,管理策略与执行能力存在匹配关系。

任务很短、历史未接近退化区间时,压缩可能只有成本。摘要调用增加延迟并引入新的错误通道;完整上下文若能稳定处理,最优策略可能是不压缩。系统需要允许「保持原样」成为正式动作,而非把每次减少 token 都当进步。

极端动态环境中,旧历史价值迅速下降,摘要旧细节不如重新观测。相反,无法重现的一次性事件需要更强保留。压缩策略依赖环境可观测性、重放成本和变化速度,不能只由窗口长度决定。

隐私要求也可能限制外部冷存储。把历史移出窗口并不等于删除,它可能进入更多索引和缓存。若治理成本高于 token 收益,应缩小持久化范围,并优先使用可验证删除的存储。压缩设计必须同时回答信息去哪了、保存多久和谁能读取。

因此,可靠上下文管理的核心判断可以收束为四句:先确定权威状态,再决定工作窗口;按后续行动价值压缩,而非按文字相似度;允许通过稳定索引回源,并让所有证据绑定版本;把压缩放进执行、验证和恢复闭环中评测。做不到这些时,更长的摘要只是更短的聊天记录,还称不上长程 Agent 的状态系统。

2.3. 如何检查压缩表示是否足够

「信息都在」很难直接证明,因为未来问题未知。实际系统可以用一组可观测任务逼近充分性:从压缩状态重建当前目标,列出仍未完成的承诺,解释最近一次关键决策,定位每条已验证事实的来源,并预测下一步合法动作。任何一项无法完成,都暴露对应状态缺口。

还可以采用双向检查。正向从原始事件生成压缩状态,反向让另一个执行器只看压缩状态回答结构化问题,再与事件日志计算出的真值比较。反向任务不要求复述原文,而是检验状态是否支持行动。为了防止测试题泄漏,问题模板应覆盖未见组合,并随机改变实体、范围和事件顺序。

对计划节点 pp,定义可执行条件 pre(p)pre(p)、预期结果 post(p)post(p) 和验证器 v(p)v(p)。压缩状态至少要支持判断

ready⁡(p)=1[pre(p) 已满足]1[权限有效]1[依赖版本一致].(31)\operatorname{ready}(p)= \mathbf 1[pre(p)\text{ 已满足}] \mathbf 1[\text{权限有效}] \mathbf 1[\text{依赖版本一致}]. \tag{31}

若执行器只能从摘要猜测其中任一项,状态还不足以安全调度。对高风险动作,三个条件都应由结构化证据确认;对低风险草稿,可以允许带置信度的语义判断。

充分性还包括知道自己缺什么。摘要明确列出未覆盖区间、未知字段和待回源证据,比用流畅语言填满所有空白更可靠。可以计算未知检测率:真实缺失的关键项中,有多少被状态标成未知。漏报会导致无依据行动,多报会增加回源成本,两者代价并不对称。

压缩前后的动作一致性是另一项测试。在原始历史与压缩状态上分别让同一策略给出下一步动作,再由环境验证哪一边更好。若压缩方案经常改变动作,却无法提升成功率或降低成本,它可能只是在制造随机扰动。

收尾阶段用隐藏验收项做盲测。构造者在历史早期放入一条不会频繁出现、但最终必须满足的约束,中途加入大量相关日志,观察多次压缩后该约束是否仍能进入执行与验证。再设置一条后来被撤销的相似约束,检查系统会不会因为重复记忆而复活旧要求。保留与遗忘同时通过,才说明上下文管理真正维护了当前状态。