学会遗忘:Codex、Claude Code 与 OpenCode 的上下文压缩术怎么用?
在使用 AI Agent 深度参与编程任务时,你一定遇到过这种窘境:起初 AI 反应敏捷,指哪打哪;但随着对话轮次增加,它似乎开始变得越来越笨。上下文快用完的时候,AI 会着急完成导致效果不佳,社区中称作 Context Anxiety(上下文焦虑)。和我们人一样,着急就容易出错。
为了维持对话,Agent 必须丢掉一部分记忆(压缩 – Compact)。但怎么丢、丢掉谁、丢掉后怎么补救,成了衡量一个 Agent 运行时是否成熟的分水岭。
为什么 Agent 需要学会遗忘
Codex 像一个保留底稿的归档员:先把旧消息隐藏起来,空间还不够时再总结,而且会把用户最后一句话重新放回现场。说到底,2026 年的上下文管理,重点已经不是把窗口无限做大,而是让 Agent 学会有选择地遗忘。该丢掉的是噪音和重复结果,该留下的是任务状态、用户意图和下一步判断依据。一个什么都带着走的 Agent,反而最容易被自己的记忆拖慢。
Codex 的压缩机制
OpenAI 的 Codex 在 compact.rs 中实现了分层处理。它先通过入口层控制工具输出和历史膨胀,避免窗口太快被噪声吃掉。当触发 CompactionTrigger 时,服务端会把任务状态交给远程处理,用 encrypted_content 承载比明文 summary 更强的恢复能力。压缩后,Prompt scaffold 会重建系统规则,让 summary 不必背负所有环境约束。多次 compact 后,Codex 依然能接着干活,正是因为它把“现场”保存得足够完整。
Claude Code 的缓存与管理策略
Claude Code 则依靠 cache_edits 和 context_management 能力。它会优先保留用户意图和当前任务状态,对重复的搜索结果或已验证的代码片段进行快速裁剪。社区逆向研究显示,其 compaction engine 在处理长程对话时,会把非关键的工具返回结果转为 opaque state,减少明文占用。遇到登录 Bug 这类场景,它能快速丢弃早期无效的 grep 结果,只保留 auth.ts 的关键逻辑和用户最后一次确认的修复方向。
OpenCode 的实际落地方式
OpenCode 在开源实现中更注重外部存储。它鼓励用户把决策过程记录到外部文件或仓库,避免每次新开对话都重新解释背景。通过这种方式,上下文断裂问题被大幅缓解。Agent 不用在每轮都重新认识项目结构,而是直接读取已保存的状态继续推进。
怎么在日常中应用这些压缩术
当你修复一个 401 Unauthorized 的登录接口时,先让 Agent 做一次有针对性的 grep 和 read_file,而不是无脑全量扫描。遇到上下文压力时,主动触发 compact,并把关键意图用一句话重新确认。Codex、Claude Code 和 OpenCode 都支持这种“先隐藏、再总结”的流程,区别只在于服务端处理细节和恢复能力强弱。
掌握这些遗忘技巧后,你会发现 Agent 的表现不再随对话长度线性下降,而是始终保持在高效区间。