摘要压缩 上下文与记忆
别名:
compactHistory
把中间段旧历史发给一个便宜的辅助模型,让它产出结构化摘要,用一条摘要消息替换整段旧历史——「换一种更短的表示」而非删除。代价是信息衰减:摘要是「有损压缩」,多轮压缩后模型可能连「还剩哪些文件没读」都不知道。
它是什么
摘要压缩(compactHistory)是滑动窗口的升级:把中间段旧历史发给一个便宜的辅助模型,让它产出结构化摘要,用一条摘要消息替换整段旧历史——「换一种更短的表示」而非删除。原文进文件柜(持久层),桌面上只留便签。
三个工程决策
- 用辅助模型,不用主模型:压缩是系统操作,不该花贵模型的预算做「整理桌面」的脏活;
summarize是注入式回调,测试与 demo 注入确定性脚本; - 给摘要一个固定模板:目标 / 进度 / 关键决定 / 改过的文件 / 下一步,五要素齐了换谁读都能接上活;
- 摘要消息带
[Compacted]前缀:让模型知道这是系统生成的上下文,不是用户又下了一条新指令——否则它可能以为用户重新规划任务,把已经做完的事重做一遍。
代价:信息衰减
摘要是「有损压缩」,多轮压缩后信息熵指数衰减(「已读 s01、s02、s03」→「已读若干文件」→「已读部分文件」),模型可能连「还剩哪些文件没读」都不知道。所以「目标与进度」这类连续性关键信息要搬进永远不会被压缩的区域(TaskState,每轮注入 system prompt),摘要只当中间段的备忘。完整实践见第 09 章,把完整历史落盘是第 10 章的事。