为什么 Codex 会遗忘您的项目上下文
Codex 目前如何处理上下文
Codex 在启动会话时会进行探索:读取文件、追踪依赖关系,并在其上下文窗口中构建代码库的工作模型。该模型即为会话状态。随着对话的增加,较旧的内容会被压缩——总结并丢弃——以腾出空间。这种理解并没有存储在任何地方;当会话结束或窗口填满时,它就会蒸发,而下一个任务又需要重新开始探索。
无法持久保留的技术原因
压缩机制在设计上就是有损的,而且它不会考虑您认为重要的事情。Codex 仓库中的一个 GitHub issue 记录了压缩机制在任务中途丢弃 AGENTS.md 规则的情况,据报告,由于智能体丢失了它一直在遵循的需求,进度从 97% 倒退回 42%。另一个 issue 记录了在会话中途切换模型时上下文丢失的情况。随着默认输入窗口缩减了大约四分之一,这些压缩事件现在在任务中发生得比以前更早。AGENTS.md 确实有帮助——它在启动时被读取——但它是一个需要您手动维护的静态文件,并且它像其他任何内容一样,可能会被压缩出活动窗口。
这给您带来的代价
每次会话都以重新发现开始:架构、关键文件、依赖关系以及您已经做出的决策。开发者们在 OpenAI 自己的论坛上正是这样描述的,询问如何在大型代码库中跨 Codex 会话保留项目上下文。然后是任务中途失败的模式:一个在完成度达到 80% 时忘记您需求的智能体,会产生您必须逐行审查的工作——而更小的窗口让这种情况发生的概率增加,而不是减少。
Codex 的内置权宜之计(以及它们的局限性)
AGENTS.md
存放稳定指令的理想场所:规范、命令、约束。然而,它有两个限制。它是手动维护的,因此动态知识——做出的决策、被否决的方法、已解决的 bug——永远无法写入其中。而且它也无法免受压缩机制的影响,这正是报告中 97%→42% 进度倒退所说明的问题。
压缩与重新读取
压缩机制通过避免硬性失败来维持长会话的运行,这确实很有用。但它是用细节换空间:具体的命令、特定的需求、先前的决策都是被总结掉的内容。然后,智能体重新读取文件以恢复丢失的内容,消耗 tokens 来重建它本已知道的信息。
启动新会话
解决会话质量下降的常用方法是重新启动——这通过丢弃该会话学到的所有内容来恢复窗口空间。您用上下文作为代价换取了清晰度。
共同的瓶颈:这些方法都不是持久的、可查询的项目知识库,无法跨越会话边界或上下文窗口的变化——这也是 Claude Code 为什么会遗忘项目上下文 背后的根本缺陷。
解决方案:给 Codex 一个持久的项目记忆
持久的解决方案是在会话之外建立一个记忆层,保存压缩机制不断丢弃的内容:架构、决策、约束和已解决的问题。MemoryLake 会一次性存储它们——支持搜索,采用类似 Git 的版本控制,以便您可以追踪决策何时发生变化,并且端到端加密,确保您的代码和基础设施细节始终属于您。因为知识存在于窗口之外,更小的上下文窗口不再意味着更小的记忆。
步骤 1:创建 API 密钥
登录 MemoryLake,生成密钥,并发送您的第一个请求——这大约需要 30 秒。

步骤 2:上传您的第一批记忆
放入会话不断重新发现的项目知识:架构说明、决策记录、API 和数据流文档,以及长任务绝不能丢失的需求——文档、图像和其他文件都可以。当会话确定了值得保留的内容时,将其捕获为单行记忆。

步骤 3:连接您的 AI 和智能体
通过 MCP 并使用您的 API 密钥将 MemoryLake 添加到 Codex,这样智能体就可以按需检索需求和过去的决策,而不是将它们保留在会被压缩的窗口中。同样的记忆也可以通过 MCP 或 API 提供给 Claude、OpenClaw 和其他智能体——在您编写代码的每个工具中实现统一的项目记忆。

重新发现和压缩的实际代价
窗口缩减税
更小的默认窗口不仅会更早截断,还会使智能体更频繁地重新读取以恢复压缩丢弃的内容,而每次重新读取都是在消耗 tokens 来重建已知的上下文,而不是在干活。在大型代码库上,这种重新发现是会话中最昂贵的部分,而且现在发生得更早了。
检索而非重新总结
有了持久层,Codex 可以拉取任务所需的特定决策或需求,而不是试图将整个项目保留在无法容纳它的窗口中。更小的压缩压力、更少的中途任务倒退、更低的支出——MemoryLake 的 Token 节省计算器(Token Saving Calculator)可以根据您的使用情况预测效果。
Codex 项目记忆的最佳实践
将需求放在压缩机制无法触及的地方
如果一个需求必须在长任务中存活,它应该属于可检索的记忆,而不仅仅存在于提示词或 AGENTS.md 中。这就是能够完成工作的智能体与在 80% 进度时倒退的智能体之间的区别。
在做出决策的瞬间捕获它们
写下一行带有日期的记录——决策、原因、被否决的替代方案——胜过永远不会进行的事后清理,并且它能阻止智能体重新提出您已经排除的方案。
按仓库划分范围
每个仓库一个记忆范围可以保持检索的精准度,并让每个项目的 Codex 会话仅拉取适用于它们的内容。
结论
Codex 变得更容易健忘并非偶然——更小的默认窗口意味着压缩更早到来,而压缩一直以来都是需求和决策悄然消失的地方。AGENTS.md 无法承载动态知识,而重新启动会话只是用上下文换取清晰度。将您项目的真实记忆放在窗口之外,窗口大小就不再决定您的智能体知道多少。上下文可以缩减,但您的记忆不必。