压缩是在内存中完成的交接:先总结上一会话的历史,再用摘要为新会话提供起点。它在设计上就是有损的:对话记录属于一手来源,摘要属于二手来源——用细节换取可用空间。压缩可以由用户手动触发,也可以通过自动压缩触发。
工作机制如下:上下文窗口容量有限,长会话最终会把它填满——每个工具结果、每次文件读取和每条错误路径都会留在历史中。当历史变得沉重时,运行框架要求模型总结会话,丢弃原始历史,再以摘要启动全新会话。任何没有进入摘要的内容都会从上下文中消失。有些运行框架会把旧对话保存在磁盘上,并在摘要中留下指向它的上下文指针,从而缓解信息损失——二手来源链接回一手来源,摘要遗漏的细节仍可通过重读原始内容恢复。
摘要由模型编写,因此可以通过提示词加以引导。“保留 schema 决策”会让生成的产物更有针对性。时机同样重要——应在阶段边界、计划已经敲定后进行压缩,而不是任务进行到一半时。
与清空相比,清空会丢弃全部内容,从冷启动开始;压缩尝试把核心信息带过去,而清空则假设这些信息已经被写在更合适的位置。
用法:
“上下文越来越沉重,但我还得完成测试通过阶段。”
“开始前先压缩——在摘要提示词中明确哪些内容必须保留,让新会话留下 schema 决策,丢弃探索过程。”