首页 / AI工具 / Codex Context Compaction 真相:Agent 压缩后为什么还能接着干活?
AI工具

Codex Context Compaction 真相:Agent 压缩后为什么还能接着干活?

Codex Context Compaction 真相:Agent 压缩后为什么还能接着干活?

长程 Agent 的记忆困境

用代码 Agent 做复杂任务时,很多人都会遇到同一个问题:前面花了半小时查仓库、跑测试、处理冲突,上下文一被压缩,Agent 就突然“失忆”。它只记得正在处理一个项目,却忘了具体分支、PR 编号和刚才失败的测试用例。

这种崩坏通常不是发生在第一轮,而是在上下文压缩之后。过去大家习惯手动写交接文档,或者干脆新开会话来规避风险。现在 Codex 把这套流程交给系统自动处理,压缩后还能继续执行任务,背后到底靠什么机制?

Codex CLI 的压缩思路:把对话改写成交接摘要

Codex CLI 采用最直接的方式:先总结,再替换。它把压缩前的完整对话交给模型,让模型整理成一份“接班人能继续干活”的摘要,然后用这份摘要接管原有上下文。

这种做法不是简单截断,而是让模型自己完成信息提炼。被压缩的内容虽然从窗口消失,但模型对项目上下文的理解依然保留。

两条压缩路径的区别

Codex 把压缩实现分成客户端和服务端两条路线。

客户端路径由本地客户端组织 Prompt 并调用模型生成摘要,能适配不同模型提供商。服务端路径则直接调用 OpenAI 内部的 responses/compact 端点,把摘要生成交给服务器处理,目前主要面向 OpenAI 自家模型。

两条路径都需要模型参与,核心区别在于摘要生成这一步由谁来编排。客户端路径会读取内置的压缩模板 prompt.md,服务端路径则直接走远程接口。

压缩前已经做的预处理

真正触发 full compact 之前,Codex 已经先把一批容易撑爆窗口的内容处理掉。它不是等窗口快满才动手,而是提前通过入口截流和工具结果修剪,减少需要压缩的原始信息量。

这样做的好处是,压缩后的摘要更聚焦关键状态,而不是把所有历史一股脑塞进去。

AGENTS.md 与 Prompt Cache 的配合

Codex 通过 AGENTS.md 提供稳定的项目规则,这份文件在启动时加载,能显著提升 Prompt Cache 的命中率。只要前缀精确匹配,模型就可以复用之前的计算结果,只对新增部分做推理。

工具列表、沙箱配置、工作目录等变化都可能导致缓存失效,因此保持 AGENTS.md 的稳定,对长程任务的性能优化非常关键。

压缩后的状态如何延续

Codex 的 /responses/compact 端点返回的不是普通摘要,而是包含加密 compaction 项的消息列表。这个设计让模型保留了对原始对话的潜在理解。

被压缩的内容虽然从窗口移除,但分支名、stash、构建结果、用户确认等低层事实依然能被模型记<|eos|>

分享到: 微博