Context left 测量的是什么
每个 Codex 对话都有一个上下文窗口:模型可以同时考虑的对话量、工具输出和指令量。Codex 的配置参考将窗口设置描述为“活动模型可用的上下文窗口 token”。
Context left 数值显示了当前对话中该窗口仍未使用的部分。随着对话的增长,它会下降。当对话被压缩或你开始新对话时,它会回升。
这是一个针对每个对话的数字。另一个终端中的第二个对话有它自己的数值,开始一个新对话会给你一个全新的窗口。
它不是什么
它不是你的账户使用量。Codex 会单独跟踪该项,其命令参考列出了 /usage 来“查看账户 token 使用情况或使用速率限制重置”。状态栏有其自己的速率限制项目。一个对话可能还有剩余空间,而你的账户却接近限制,反之亦然。
Codex 如何计算该数字
Codex 的终端客户端是开源的,计算方式就在其代码中。两个细节解释了为什么它可能会令人困惑。
预留了固定基准
计算时预留了 12,000 个 token 的固定基准。Codex 在计算百分比之前,会从窗口和已使用的 token 中减去这部分。效果是对话的前 12,000 个 token 不会引起数值变动。
这就是为什么即使新对话在你的第一条消息之前就已经包含了一些内容,它仍然从顶部开始。Codex 在执行任何工作之前都会读取 AGENTS.md 文件及其自身的指令。文档指出“Codex 在进行任何工作之前都会读取 AGENTS.md 文件”。这些材料占用空间,但在基准范围内,它们不会显示为已使用。
所以这个数字是相对的。它测量的是基准之上那部分窗口的剩余空间,而不是整个窗口的原始比例。
它跟随活动模型的窗口
百分比是根据你正在使用的模型的上下文窗口来测量的。更大的窗口会使相同的对话占用更小的比例。这就是为什么在你切换模型或默认值更改后,该数值看起来会有所不同的原因。
当客户端没有百分比可显示时,它会显示已使用的 token 计数。
什么会填满窗口
每当有新内容进入对话时,该数值就会下降,包括那些不是你亲自输入的内容。
- 工具输出。 测试运行、日志、文件读取和命令输出都会进入上下文。一次漫长的调试会话从工具输出中添加的内容可能比从你自己的消息中添加的还要多。
- Codex 读取的文件。 Codex 为了理解你的代码而打开的每个文件都会占用空间。
- 对话内容。 你的消息和 Codex 的回复,包括计划。
- 推理(Reasoning)。 进行推理的模型会使用 token 来实现,这些也是核算的一部分。
随着它下降会发生什么
压缩 (Compaction)
当对话接近其限制时,Codex 会对其进行压缩:它会总结之前的轮次,以便对话可以继续。你也可以手动运行它。命令参考将 /compact 描述为“总结可见对话以释放 token”,预期结果为“Codex 用简明的摘要替换之前的轮次,在保留关键细节的同时释放上下文”。
压缩后,数值会回升。之前的轮次现在变成了摘要。
压缩可能在到达底部之前发生
自动压缩运行的点是一个独立于窗口的设置。Codex 的配置参考将 model_auto_compact_token_limit 描述为“触发自动历史记录压缩的 token 阈值(未设置则使用模型默认值)”。
文档并未说明该阈值与页脚读取为零的点相匹配。将该数值视为剩余空间的指南,而不是压缩的精确倒计时。如果你在等待数字触底后再采取行动,压缩可能已经发生了。
还有一个关于如何计算阈值的相关设置。参考说明 model_auto_compact_token_limit_scope “控制自动压缩阈值是计算完整的活动上下文(total,默认值),还是仅计算携带的压缩窗口前缀之后的增长(body_after_prefix)”。
最近的核算修复
2026 年 10 月 29 日发布的 Codex 0.166.0 包含了一个针对该领域的修复。其发布说明称,它“在恢复(resume)和分叉(fork)时保留了推理 token 的核算,以避免过早压缩”。如果你在早期版本上看到恢复或分叉的对话比预期更早压缩,更新是第一步。
更详细地检查数字
/status
页脚给你一个数字。/status 给你更多。命令参考说它显示“会话配置和 token 使用情况”,并列出其用途为确认“活动模型、审批策略、可写根目录以及剩余上下文容量”。
当页脚让你感到意外时,请运行它。它还会确认哪个模型处于活动状态,这解释了数值的许多突然变化。
/statusline
你可以选择页脚显示的内容。/statusline 命令会打开一个选择器,文档列出了其中的项目:“可用的状态栏项目包括模型、模型+推理、上下文统计、速率限制、git 分支、token 计数器、会话 ID、当前目录/项目根目录以及 Codex 版本。”你的选择会保存到 config.toml 中的 tui.status_line。
如果你进行长时间的会话,请将上下文统计项和模型项并排放在一起。这样,数字的跳变就能在旁边找到解释。
在空间不足之前该做什么
数值下降本身不是问题。风险在于当对话压缩时,哪些细节会被总结掉:即那些你没有写下来的细节。
写下对话得出的结论
决策、背后的原因以及你发现的约束条件是摘要可能会压缩的内容。在长对话压缩之前,如果这些内容适用于仓库,请将它们放入 AGENTS.md,或者放入你在别处保存的笔记中。
导出副本
/export 保存对话。文档称“Codex 将完整的对话导出为 Markdown”。你可以将其复制到剪贴板或保存到文件中。我们关于导出 Codex 对话的指南涵盖了之后如何处理转录稿。
在不压缩的情况下回顾
如果你想在不改变对话的情况下为自己获取一份摘要,请使用 /recap。命令参考将其描述为一种“在不压缩上下文的情况下了解对话进度”的方法。
在自然中断点进行压缩
在步骤结束时自己运行 /compact 比让它在步骤中途发生要好。你可以选择一个重要部分已经确定的时刻。
分叉或重新开始
对于新的方向,/fork 将对话复制到一个新对话中;我们关于分叉 Codex 对话的指南涵盖了哪些内容会被继承。对于不应增加主对话负担的快速提问,/side 会启动一个临时的侧边对话。对于无关的工作,使用 /new 开始一个新对话。
如果你正在跟踪一个长任务,/goal 会在对话移动时保持目标附着;我们关于 Codex 目标模式的指南解释了它包含的内容。
人们首先尝试的做法
将数值误读为使用限制。 它是该对话窗口中的空间。账户使用量在 /usage 下查看。
期望新对话显示指令的成本。 基准隐藏了前 12,000 个 token,因此新对话从顶部开始。
等待归零后再行动。 压缩在它自己的阈值运行。在还有空间时就采取行动。
跨模型比较数字。 它是根据每个模型的窗口测量的,因此同一个对话在不同模型上的读数不同。
将所有内容放在一个对话中。 每个任务一个对话可以保持数值的意义并使摘要保持专注。
解决方案:将 context left 视为保存工作的提示
第 1 步:将上下文统计放在可见位置
运行 /statusline 并在页脚保留上下文统计和模型项。当数字意外变动时,检查 /status。
第 2 步:在压缩前保存决策
当数值变低或在步骤结束时,写下对话确定的内容:决策、原因和约束。将仓库规则放入 AGENTS.md。如果你想要完整记录,请导出对话。
第 3 步:有目的地压缩或重新开始
在自然中断点运行 /compact,而不是等待自动压缩。对于新任务,开始新对话。保持每个对话只处理一件工作。
在 MemoryLake 中设置
Context left 数值测量的是单个对话。当对话压缩或结束时,留下的是你写下来的内容。适用于单个仓库之外的决策,或者你在另一个工具中需要的决策,需要一个位于对话之外且位于任何单个 AGENTS.md 之外的地方。
MemoryLake 是一个记忆层,用于将这些决策保存在你维护的一个列表中,可供 Codex 以及你连接的其他助手(如 ChatGPT 和 Claude Code)使用。
你自己用自己的语言编写条目。不会从你的 Codex 对话、你的 AGENTS.md 文件、Codex 的本地记忆或任何供应商的存储中读取、写入或删除任何内容。压缩和 context left 数值将继续按照 OpenAI 描述的方式工作。
第 1 步:创建 API 密钥
登录并从仪表板生成密钥。该密钥属于你的 MemoryLake 工作区,与你的 ChatGPT 和 Codex 登录是分开的。

第 2 步:上传你的第一条记忆
从你在解决方案第 2 步中写下的适用于单个仓库之外的内容开始:决策、原因和约束。每个条目一个要点,注明日期。

第 3 步:连接你的 AI 和代理
连接 Codex 和你使用的其他助手。这些决策在下一次对话中、压缩后以及在其他工具中都可用。

我们关于 Codex 记忆 v2 的指南涵盖了 Codex 本身在你的机器上保留的内容,它可以与你维护的列表协同工作。
这在实践中改变了什么
第一个区别是这个数字不再令人担忧。你知道它测量的是单个对话中、基准之上、相对于活动模型窗口的空间。
第二个区别是压缩不再让你损失决策。你在自然中断点保存重要的内容,因此摘要不必承载它。
第三个区别是对话变得更短、更专注。每个对话一个任务可以保持数值的意义,并使工作易于重新开始。
Codex 中 context left 的最佳实践
在页脚显示上下文统计。 使用 /statusline。
当数值跳变时检查 /status。 模型更改是首先要排除的因素。
不要将其与使用量混淆。 账户限制在 /usage 下查看。
在数值变低前采取行动。 自动压缩有其自己的阈值。
在自然中断点保存决策。 仓库规则使用 AGENTS.md,其余使用笔记。
导出你以后想要的长对话。 /export 将完整的对话保存为 Markdown。
更新 Codex。 0.166.0 版本修复了可能导致恢复或分叉后过早压缩的核算问题。
结论
Codex 中的 Context left 是对当前对话上下文窗口中剩余空间的估计。开源客户端在预留固定基准后,根据活动模型的窗口对其进行测量,因此新对话从顶部开始,且不同模型之间的数值不同。
随着它下降,压缩越来越近,自动压缩在它自己的阈值运行,而不是在零点运行。将该数字视为一个提示:保存对话已做出的决策,如果你想要记录则将其导出,并在你选择的时刻进行压缩或重新开始。