管理主页分类

拖动分类调整顺序,并选择是否在主页显示。设置仅保存在当前浏览器。

  • 微服务课件 31
  • Java 基础 28
  • Java Web 开发 25
  • 多来买 18
  • LeetCode 题解 8
  • 开发工具 8
  • 网络工具 2
  • 黑马头条 2
  • Java 记忆恢复 1

Codex 上下文压缩问题与解决教程

1434 字
7 分钟
Codex 上下文压缩问题与解决教程

Codex 上下文压缩问题与解决教程#

1. 问题现象#

Codex 长时间执行任务后,会自动压缩较早的对话内容。

压缩后可能出现以下问题:

  • 把已经废弃的旧要求重新拿出来执行;
  • 混淆新需求和旧需求;
  • 把助手提出的建议当成用户已经确认的决定;
  • 忘记哪些步骤已经完成,导致重复修改;
  • 丢失文件路径、接口地址、版本号和参数;
  • 把尚未验证的推测写成确定结论。

例如:

最初要求使用方案 A,后来明确改成方案 B。

压缩后可能被错误总结成:

项目可以使用方案 A 或方案 B。

正确状态应该是:

方案 A 已废弃,当前只使用方案 B。

2. 解决方法#

可以给 Codex 设置自定义上下文压缩 Prompt,让它在压缩时重点保留:

  • 当前有效需求;
  • 已废弃的旧方案;
  • 已完成和未完成的工作;
  • 尚未确认的建议;
  • 文件路径、命令、版本和参数;
  • 已验证事实和未验证推测;
  • 下一步需要执行的操作。

Codex 可使用以下配置项:

experimental_compact_prompt_file = "压缩Prompt文件的绝对路径"

也可以直接写入:

compact_prompt = """
自定义压缩 Prompt
"""

建议使用独立文件,后续修改和备份更方便。


3. 创建压缩 Prompt 文件#

Windows#

创建文件:

D:\Codex\prompts\context-compaction.md

Linux 或 macOS#

创建目录和文件:

Terminal window
mkdir -p ~/.codex/prompts
nano ~/.codex/prompts/context-compaction.md

将下面的内容保存到文件中:

Create a high-fidelity handoff summary for the model that will continue this
conversation after earlier context is removed.
Accuracy and task continuity are more important than brevity.
Include:
1. Current objective
- Record the user's current objective and current task.
- When instructions conflict, follow the latest explicit user correction.
2. Active requirements
- Preserve all current requirements, constraints, exclusions, and acceptance criteria.
- Clearly mark requirements that were rejected or superseded.
3. Decisions and status
- Separate accepted decisions, rejected options, superseded plans,
unconfirmed proposals, unresolved questions, failed attempts,
work in progress, and completed work.
- Never treat a suggestion or unanswered question as an accepted decision.
4. Exact technical details
- Preserve exact file paths, URLs, API routes, function names, versions,
commands, values, counts, identifiers, and important state changes.
- Do not replace precise identifiers with general descriptions.
5. Evidence
- Distinguish user-provided facts, assistant suggestions, tool results,
inferences, and verified conclusions.
- Keep uncertain information marked as uncertain.
6. Work history
- Record what has been completed, partially completed, failed, or not started.
- Record which completed steps must not be repeated.
- Preserve useful files, logs, patches, outputs, and references.
7. Next steps
- List the next concrete actions in dependency order.
Remove repeated discussion, routine narration, and unnecessary raw logs.
Use enough detail to preserve the correct task state.

4. 修改 Codex 配置文件#

Codex 用户配置文件通常位于:

~/.codex/config.toml

Windows 示例#

experimental_compact_prompt_file = "D:/Codex/prompts/context-compaction.md"

Windows 路径建议使用 /,避免反斜杠转义问题。

也可以使用单引号:

experimental_compact_prompt_file = 'D:\Codex\prompts\context-compaction.md'

Linux 或 macOS 示例#

experimental_compact_prompt_file = "/home/用户名/.codex/prompts/context-compaction.md"

不要直接照抄 用户名,需要替换成自己的实际用户目录。

也可以先执行:

Terminal window
echo $HOME

然后将输出路径写入配置。


5. 重新启动 Codex#

配置保存后:

  1. 关闭当前 Codex CLI 或 IDE 会话;
  2. 重新启动 Codex;
  3. 建议新建一个会话测试;
  4. 不要只询问 Codex“配置是否生效”,应通过实际压缩结果判断。

6. 测试是否生效#

可以在测试对话中依次输入:

当前先使用方案 A。

然后输入:

废弃方案 A,最终改用方案 B,后续不要再执行方案 A。

再输入:

步骤 1 已完成。
步骤 2 执行失败。
步骤 3 尚未开始。
文件 config.json 不要再次修改。
方案 C 只是建议,我还没有确认。

当上下文发生压缩后,让 Codex输出:

请列出:
1. 当前有效方案;
2. 已废弃方案;
3. 已完成、失败和未开始的步骤;
4. 尚未确认的建议;
5. 禁止再次修改的文件。
不要执行任何修改。

正确结果应该包含:

  • 当前方案是 B;
  • 方案 A 已废弃;
  • 步骤 1 已完成;
  • 步骤 2 失败;
  • 步骤 3 未开始;
  • 方案 C 尚未确认;
  • config.json 不得再次修改。

7. 常见问题#

配置没有生效#

检查以下内容:

  • 是否修改了正确的 config.toml
  • Prompt 文件是否真实存在;
  • 是否使用绝对路径;
  • 路径是否写错;
  • TOML 引号是否正确;
  • 修改后是否重启 Codex;
  • 当前 Codex 版本是否支持该配置项。

Windows 路径报错#

不要优先使用:

experimental_compact_prompt_file = "D:\Codex\prompts\context-compaction.md"

双引号中的反斜杠可能被当成转义字符。

改为:

experimental_compact_prompt_file = "D:/Codex/prompts/context-compaction.md"

或者:

experimental_compact_prompt_file = 'D:\Codex\prompts\context-compaction.md'

压缩后仍然重复旧任务#

可以在 Prompt 中补充:

Do not restore superseded requirements unless the user explicitly reactivates them.
Mark completed work that must not be repeated.

正常对话中也应尽量明确表达:

方案 A 已废弃,后续禁止再次执行。

不要使用过于模糊的说法:

方案 A 暂时不用。

Prompt 太长#

压缩 Prompt 不需要写得非常长。

重点保留:

  • 当前任务;
  • 有效需求;
  • 已废弃需求;
  • 已完成和未完成状态;
  • 精确路径和参数;
  • 未确认建议;
  • 下一步操作。

重复说明和大量示例可以删除。


8. 长任务的额外建议#

对于持续时间较长的项目,可以在项目中增加:

PROJECT_STATE.md

示例:

# 当前任务状态
## 当前目标
完成用户登录接口。
## 当前方案
使用 JWT。
## 已废弃方案
Session 登录方案已废弃。
## 已完成
- 数据库表已创建;
- 登录接口已完成;
- 单元测试已通过。
## 未完成
- 刷新 Token;
- 退出登录接口。
## 禁止重复修改
- `src/config/database.ts`
## 下一步
实现刷新 Token 接口。

这样即使聊天上下文压缩不完整,Codex 也可以从项目文件重新读取当前状态。


9. 参考地址#

原帖:

https://linux.do/t/topic/2686152

Codex 配置参考:

https://developers.openai.com/codex/config-reference

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Codex 上下文压缩问题与解决教程
https://firefly-mu-weld.vercel.app/posts/codex-context-compaction-guide/
作者
Daisy
发布于
2026-08-01
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Daisy
Hello, I'm Daisy.
公告
欢迎来到我的博客!这是一则示例公告。
分类
标签

文章目录