压缩即记忆:上下文管理的本质
大多数人把”上下文压缩”理解成省 token 的优化手段。读完三个开源实现后我的结论是:压缩就是记忆处理本身。人不会记住每一句原话,只会留下”发生过什么、结论是什么”——压缩做的就是这件事。
四层记忆模型
| 层 | 对应物 | 载体 | 保真度 |
|---|---|---|---|
| 工作记忆 | 当前上下文窗口 | 每次请求的 messages | 原文 |
| 中期记忆 | 压缩摘要 | 历史被蒸馏成的一段要点 | 有损 |
| 短期记忆 | 尾部保留区 | 最近 N 个用户轮的原文 | 原文 |
| 长期记忆 | 磁盘知识库 | 用户显式”记住”的、导入的经验 | 原文+检索 |
压缩触发时(估算 token 超过窗口的某个比例,比如 85%),把较早的历史蒸馏成摘要(中期记忆),最近几轮原文保留(短期记忆),拼起来继续工作。
三条硬规则
- 切点必须落在用户消息前。绝不能把”assistant 调工具”和”工具结果”切开——孤儿 tool_call 会被模型端拒绝。
- 摘要有质量合同。蒸馏提示词必须要求保留:用户目标、关键事实与决定、已完成动作、未决事项。丢了这些,Agent 醒来就”失忆断片”。
- 压缩只动工作记忆,不动真相源。磁盘上的会话日志永远是全量原文,压缩是运行时的视图变换。恢复会话时重放全量,再按需重新压缩。
三家的实现档位
- OpenCode:最简单,超阈值一次性把旧历史换成一段摘要。
- Codex:仗着大窗口尽量不压,配合两阶段长期记忆管线在会话之间沉淀。
- grok-build:最完整——三种压缩风格可选,摘要质量有校验,甚至有”dream”机制在空闲时把会话记忆再蒸馏进长期库。
落地体会
我自己的实现选了 OpenCode 档位(阈值 + 安全切点 + 单段蒸馏),全部逻辑 70 行。但”压缩即记忆”这个视角改变了整个系统设计:长期记忆的写入(用户说”记住”)、中期记忆的生成(压缩)、短期记忆的保留(尾部窗口),三者用同一套心智模型统一起来,不再是三个孤立功能。
- 标题: 压缩即记忆:上下文管理的本质
- 作者: phenix-fledgling
- 创建于 : 2026-07-28 12:00:00
- 更新于 : 2026-07-29 02:35:18
- 链接: https://blog.xugua.xyz//post/压缩即记忆:上下文管理的本质.html
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论