V · MemoryEmerging

上下文压缩Context Compaction

也称为 Conversation Summarisation Checkpoint, 压实, Rolling Context Digest

当上下文窗口接近其限制时,用模型生成的摘要替换较旧的对话片段,该摘要保留决策、承诺和活动约束,同时丢弃噪声,以便代理能够继续运行而不失去线索。

上下文

一个长期运行的代理会积累回合——工具调用、原始观察、中间推理——直到对话接近模型的上下文窗口限制。代理正在执行任务,不能简单停止,但也无法将完整的历史记录放入下一个请求中。大多数较旧的回合都是过程噪声:被取代的计划、大量工具输出、被放弃的分支。这些回合产生的决策和结论仍然重要。

问题

固定的上下文窗口限制了代理可以携带的历史量,但一个长任务生成的历史超出了适合的范围。盲目截断最旧的回合会丢失代理仍依赖的决策和承诺;保留所有内容会导致窗口溢出或在每次后续调用中增加成本和延迟。代理需要减少令牌数量,而不丢失该数量产生的结论。

影响因素

  • 上下文窗口是有限的;长时间的任务不是。
  • 较早的回合大多是过程噪声,但其中埋藏的决策是承重的。
  • 过早总结会丢弃仍在使用的细节;过晚总结则有风险在步骤中溢出。
  • 一个有损的摘要可能会丢弃一个代理随后会默默违反的约束。
  • 每次回合重新总结是昂贵的;很少总结会让窗口填满并溢出。

示例

一个编码代理在进行多小时的重构,积累了数十次文件读取、测试运行和差异。当对话接近模型的上下文限制时,运行时将会话的最早三分之二总结成一个摘要——将身份验证模块迁移到新的API,同意不触碰计费测试,仍有三个文件未完成——并丢弃原始文件转储。代理从摘要及其最后几轮继续,始终保持约定的约束,即使原始消息已消失。

图表

解决方案

因此:

跟踪上下文窗口的利用率。当它超过一个阈值(例如窗口的80%)时,进行压缩处理:将较旧的对话片段输入模型,并指示生成一个密集的摘要,保留目标、决策、开放承诺和代理必须遵守的任何约束,同时丢弃原始工具输出、被取代的计划和无果的推理。用摘要替换工作上下文中的该片段,逐字保留最近的回合,以便保持局部连续性,然后继续。将必须永远不被压缩的内容——原始任务声明和硬约束——固定在不可压缩区域之外。Anthropic在Claude Code和Agent SDK中将其作为自动压缩发布;中国的上下文工程文献称之为压实。

此模式禁止的内容。 代理不得通过盲目截断来缩小较旧的上下文;减少必须通过总结处理,该处理被指示保留决策、开放承诺和活动约束。固定内容——任务声明和硬约束——必须排除在可压缩区域之外,绝不能被总结掉。

与之并列或对立的模式——

  • 补充上下文窗口打包★★根据固定的令牌预算选择每次回合中适合放入上下文窗口的内容。
  • 补充睡眠时间计算·在空闲或停机期间,离线运行模型以用户的现有上下文进行预计算密集摘要和可能的未来答案,以便在用户实际提问时降低测试时间的延迟和成本。
  • 补充工具结果驱逐一旦工具的原始输出被消耗,在实时上下文窗口中用一个简短的标记替换它,回收令牌而不失去调用发生的记录。

邻域

点击任何邻居以跟随语言。滚动以缩放,拖动以平移。