Administrator
Published on 2026-10-11 / 3 Visits
0
0

Agent 上下文压缩:决策等价测试框架

Agent 上下文压缩最容易测的是少了多少 Token,生产系统真正需要确认的是压缩后还能否作出等价决策。目标、约束、审批、证据和未完成动作只要丢掉一项,短 Prompt 反而会换来重复劳动或错误副作用。本文给出一套可执行的回归测试方法,把压缩从成本优化变成可验收的状态迁移。

阅读时间:约 9 分钟 · 约 3000 字

TL;DR

  • 把 Context Compaction 理解为有损状态迁移,压缩率只能说明空间变化。
  • 先跑两次完整上下文,测出模型自身随机性,再比较完整上下文与压缩上下文。
  • 发布门禁同时检查任务成功、约束、外部副作用、重复运行可靠性和单个成功任务成本。
  • 记录重复读文件、重新检索和额外工具调用。完成率没变,交互成本也可能已经翻倍。
  • 决策等价用于提前发现漂移,端到端任务结果仍是最终验收口径。

压缩的是工作状态,不是普通文本

OpenAI 的 Compaction 官方文档提供两种路径。服务端可以在上下文超过阈值时自动压缩,也可以通过 /responses/compact 显式生成下一轮使用的压缩窗口。返回的 compaction item 是加密且不透明的机器状态,人无法直接检查里面保留了什么。

不透明意味着验收方式必须改变。开发者无法靠阅读摘要确认目标、权限、决策和待办都还在,只能观察 Agent 后续是否仍按原状态行动。

OpenAI 的 GPT-6 工程指南要求在代表性任务上测成功率、延迟和单个成功任务成本。配套的 Memory 与 Compaction Cookbook进一步区分了三类东西:Compaction 维持当前长任务,Memory 保存跨任务可复用经验,经过审核的 Artifact 才承载案件事实和引用。

这条边界很重要。文件、事件日志、审批记录和业务数据库仍然是事实源,压缩上下文只是 Agent 继续工作的临时表示。

这个问题比Harness 本身就是评测对象更窄。前文比较的是完整 Provider 配置,本文则在固定 Harness 中把 Compaction 单独作为版本化变量检验。

Token 节省率只覆盖资源压力

压缩率回答历史缩短了多少,无法回答删掉的是否恰好是下一步决策所需的信息。

Factory 的厂商自评提供了一个有用但有限的观察。它从 36,611 条软件工程会话消息中构造 Recall、Artifact、Continuation 和 Decision 四类探针,用 GPT-5.2 盲评不同压缩方法。Factory 报告自己的结构化摘要总分为 3.70,Anthropic 为 3.44,OpenAI 为 3.35;所有方法的 Artifact 轨迹得分都偏低,只有 2.19 至 2.45 分。

这些结果能说明文件路径、修改记录和既有决策容易丢失。它仍属于厂商自评,公开材料缺少完整可复跑数据、置信区间和人工复核率,而且回答探针不等于真正完成任务。

只看完成率同样会漏掉成本。2026 年一篇研究压缩隐藏交互成本的预印本在预设的 5 倍压缩点发现,六组模型与任务组合的检索调用全部增加,但完成率变化均不显著。GPT-5.5 High 组的完成率从 80% 变成 85%,检索调用却从 21.0 次升到 63.9 次。

Agent 最终交付了结果,不代表压缩有效。它可能靠重新读取文件、重复调用工具和重建已经知道的状态,把省下的 Token 全部花了回去。

用 A/A 与 A/B 拆出压缩影响

评测时只改变 Compaction,其余变量全部冻结:模型、推理档位、系统提示、Skills、工具 Schema、权限、环境快照、任务输入、步数预算和超时。每个变量都要有版本,避免模型升级或 Prompt 修改混入结果。

至少运行三条分支:

分支 作用
完整上下文 A 生产基线
完整上下文 A' 测模型自身随机性
压缩上下文 B 测 Compaction 影响

同一上下文下,非确定性模型也可能选择不同但都合理的动作。A 与 A' 给出自一致性底噪,A 与 B 的差异再扣除这层底噪,才是更接近压缩造成的决策漂移。

决策签名至少包含下一动作、目标对象、权限等级和外部效果。两种搜索关键词可能语义等价,update_customer 与 send_refund 却属于不同权限级别。压缩后从请求审批变成直接退款,风险远高于检索词变化。

开源项目 Distil 在其项目方评测中采用了类似的 A/A 与 A/B 设计。更值得注意的是它公开的负结果:单步决策证书在激进压缩下没有迁移为端到端成功。结论很直接:决策等价是一枚传感器,任务结果才是发布判据。

固定一组会暴露失忆的真实任务

事实问答适合快速筛查,生产门禁需要有可执行结果的任务。优先从真实失败轨迹抽样,再补充只要忘记一个事实就会改变动作的对抗用例。

测试族 必须保留的状态 主要断言
Artifact 密集任务 读过、改过、验证过的文件 产物正确且测试通过
约束密集任务 范围、格式、禁止动作 硬约束零违规
事实纠正任务 推翻旧假设的新证据 以最新有效事实决策
延迟执行任务 多轮之前作出的承诺 在正确边界执行
故障恢复任务 失败路径和最后检查点 不重走死路,不重复副作用
审批任务 放行、询问、拒绝的权限边界 压缩前后审批行为一致

同一任务要覆盖零次、一次和多次压缩。首次摘要可能保留了某个限制,摘要再次被摘要时才丢失,单轮测试看不到这种漂移。

每个分支还需要多次独立运行。除了 pass@1,再报告连续三次都成功的概率。平均成功率变化不大时,跨运行可靠性可能已经明显下降。

一篇 2026 年的反事实续跑预印本解释了如何定位问题。研究者在同一 Agent 与环境状态下,分别从压缩前和压缩后继续执行。82 条轨迹的 197 个压缩边界中,151 个增加了后续步数,但只有 12 个增加超过五步。轻微负担很常见,严重伤害往往集中在少数边界。

工程上可以先跑任务级回归。发现退化后,再从每个压缩边界前后的 Checkpoint 重放,定位哪一次状态替换真正改变了结果。

把隐含状态写成断言

每个测试用例在运行前声明六类状态:

  1. 目标:最终产物和完成定义。
  2. 约束:范围、格式、隐私规则和禁止动作。
  3. 决策:已经选择的方案、被否决的替代项和理由。
  4. 产物:权威文件、版本、来源链接和验证状态。
  5. 未完成工作:开放问题、失败尝试、后台调用和承诺事项。
  6. 权限:可自主执行、必须询问和必须拒绝的动作。

能用确定性检查的部分尽量不用 LLM Judge。仓库 Hash、数据库对象数、审批事件、来源 ID、测试结果和结构化最终状态都可以直接比较。只有开放式决策和语义等价需要模型辅助判定。

这份状态合同也会反向校正架构。审批或引用如果必须穿过每次压缩,它更适合进入持久 Artifact 或事件日志,而不是只留在模型工作区里。

持久层的设计可以继续参考Agent 机构记忆需要来源绑定的声明,把原始证据、派生声明、检索索引和当前工作上下文分开。

发布门禁要看五组指标

指标组 记录内容
结果 任务成功率、pass@1、重复运行可靠性、最终状态 Diff
行为 超出 A/A 底噪的决策变化、约束违规、审批分歧、重复副作用
恢复 重新检索、重复读文件、展开原文、重走失败路径的次数
效率 峰值上下文、累计输入输出、压缩调用、缓存、P50/P95 延迟
经济性 总成本、单个成功任务成本、人工返修时间

在评测前写清门槛。例如:任务成功率的非劣效界限为绝对下降不超过两个百分点;不得增加硬约束违规或重复副作用;单个成功任务成本需要真实下降;P95 延迟和状态重取增幅不得超过业务预算。

门槛随风险变化。只读调研 Agent 可以接受更宽的决策差异,支付、权限和数据修改 Agent 需要更严格的非劣效界限与确定性权限断言。

统计上也要避免一个常见错误:差异不显著不等于两者等价。应预先声明非劣效界限,使用配对置信区间或非劣效检验,并按模型、任务类型、上下文预算和压缩次数分层报告。

从 Shadow Replay 推进到小流量发布

第一阶段使用冻结轨迹离线重放,建立完整上下文与压缩上下文的差异清单。

第二阶段做 Shadow Replay。生产分支照常运行,压缩分支只提出动作,不产生外部副作用。系统分别记录 A/A 自身波动和 A/B 决策漂移。

第三阶段只给低风险任务放少量真实流量。每次压缩写入事件:Session 版本、模型、Prompt、工具 Schema、阈值、压缩器版本、父事件范围和 Artifact 引用。保留重建压缩前状态的能力,策略才能回滚。

任何硬断言失败、决策变化的置信上界超过预算、重复运行可靠性下降,或单个成功任务成本上升时,立即退回完整上下文或更保守的压缩策略。Token 节省不能覆盖这些失败。

FAQ

Agent 的 Context Compaction 是什么?

它用更小的表示替换一部分跨轮历史,让 Agent 在有限上下文里继续工作。它负责当前工作状态,不等同于长期记忆、业务数据库或审计日志。

应该在什么时候压缩上下文?

可以按 Token 阈值触发,也可以放在需求确认、证据收集结束、代码修改完成等阶段边界。具体阈值应由真实任务回归决定,因为模型、工具和任务变化都会改变最佳点。

上下文压缩一定省钱吗?

总成本取决于完整工作流。压缩调用、缓存失效、重复读取、重试和失败都会增加成本。应比较完整任务的累计成本和单个成功任务成本。

最危险的丢失信息是什么?

硬约束、审批、纠正后的新事实、Artifact 标识、已定决策、失败路径和待完成副作用。这些信息会直接改变下一步允许做什么。

决策等价可以替代任务级测试吗?

决策等价适合提前发现行为漂移。端到端结果、重复运行可靠性、约束与副作用检查共同承担最终发布验收。

下一步

先选十条近期长任务轨迹,冻结环境,并在调整压缩策略之前写完状态断言。每条轨迹跑两次完整上下文和一次压缩上下文。第一份有价值的结果应是一张差异表:哪些决策、约束和恢复成本发生了变化,而不是一条压缩率曲线。

参考资料


Comment