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 重放,定位哪一次状态替换真正改变了结果。
把隐含状态写成断言
每个测试用例在运行前声明六类状态:
- 目标:最终产物和完成定义。
- 约束:范围、格式、隐私规则和禁止动作。
- 决策:已经选择的方案、被否决的替代项和理由。
- 产物:权威文件、版本、来源链接和验证状态。
- 未完成工作:开放问题、失败尝试、后台调用和承诺事项。
- 权限:可自主执行、必须询问和必须拒绝的动作。
能用确定性检查的部分尽量不用 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 标识、已定决策、失败路径和待完成副作用。这些信息会直接改变下一步允许做什么。
决策等价可以替代任务级测试吗?
决策等价适合提前发现行为漂移。端到端结果、重复运行可靠性、约束与副作用检查共同承担最终发布验收。
下一步
先选十条近期长任务轨迹,冻结环境,并在调整压缩策略之前写完状态断言。每条轨迹跑两次完整上下文和一次压缩上下文。第一份有价值的结果应是一张差异表:哪些决策、约束和恢复成本发生了变化,而不是一条压缩率曲线。
参考资料
- OpenAI API:Compaction
- OpenAI:GPT-6 模型工程指南
- OpenAI API 部署检查清单
- OpenAI Cookbook:Building Reliable Agents with Memory and Compaction
- An Empirical Study of Harness Design for Coding Agents
- What Does Context Compression Cost an Agent?
- Adapting Context Compression for Long-Horizon Agents with Counterfactual Continuations
- Factory:Evaluating Context Compression for AI Agents
- Distil 项目评测