上下文压缩是什么?长会话怎样缩短历史并保留任务状态
用持续改代码的会话解释上下文压缩,区分摘要、删除和缓存,说明保留约束、出处与恢复线索的方法,以及不同接口返回形式的差别。
先理解这个概念
上下文压缩把较长的历史转换为较短表示,用来继续任务并控制窗口占用,常见方式是总结已发生的内容。具体服务也可能返回不可直接阅读的压缩状态,不能全部当作普通文字摘要。压缩会改变后续可用信息,不保证逐字保留原文;它也不是提示缓存,不能让模型永久保存所有细节。
压缩需要保留仍在生效的任务约束
假设一段代码修改会话已经讨论许多文件,下一步仍需知道目标分支和用户禁止修改的路径。摘要只写已经修好几处问题,就可能丢失这些约束。应保留当前目标和未完成事项,并说明已通过的检查对应哪个版本。
这里是状态设计例子,没有对真实会话进行压缩实验。保存出处位置有助于重新读取细节,例如文件路径和文档章节。不要把助手先前的猜测整理成已确认事实,也不要因为摘要写着完成,就跳过产物与验证记录核对。
不同接口的压缩返回方式需要分别处理
OpenAI压缩接口可以返回包含加密压缩项的上下文,官方要求按返回窗口继续使用,不应随意裁剪。Anthropic则提供不同压缩模式和摘要配置。两者都不能简单替换成删除前面所有消息,只留下最后一句要求。
压缩后有些近期内容可能仍按原文保留,具体规则由服务模式决定。应用需要检查返回对象与角色结构。内部状态不是用户新指令,不可解释的压缩项也不应被手动翻译或重写。版本变更后需重新核对兼容要求。
缩短上下文与复用缓存具有不同作用
压缩减少后续需要携带的信息量,缓存则复用未变化输入的计算状态。改写历史可能降低原来的缓存命中,所以不能只比较词元数量。应核对实际延迟和用量,同时用包含旧约束的问题检查压缩后的回答是否退化。
如果压缩丢掉关键日期或参数,回到原始记录恢复,比继续让模型凭摘要猜测更合适。长期任务还应有外部文件保存必要证据。本文解释机制与核查方法,没有保证摘要无损,也没有给出任意会话都适用的固定压缩比例。
核对来源
以下资料用于核对概念和方法。文中的示例与测试范围分别注明,实际使用时请核对所用工具的版本。