乐于分享
好东西不私藏

Codex App 上下文容易爆的解决方法

Codex App 上下文容易爆的解决方法

我是sillyrabbit,喜欢AI知识分享,用AIGC做创意视觉的搞怪兔子。

Silly,but it works.

Silly Rabbit 以前习惯用 Codex CLI。操作很直观:cd 进项目目录,运行 codex,当前文件夹就是工作区,AGENTS.md 放在根目录就行,清清楚楚。

后来开始用 Codex App,反而有点不适应。Project 是什么?Thread 又是什么?Worker 怎么开?上下文为什么老是爆掉、压缩老是卡死?

折腾了一段时间之后,本兔子逐渐理解了:这不全是产品问题,更多是 AI Agent 的上下文机制本身有结构性限制。Codex App 和 Codex CLI 的心智模型也不一样。搞清楚这两件事,很多坑就能避开。

以下是Silly折腾出来的一套工作流,供参考。

✅先理解问题本质:杯子和水

每一个对话,都像一个有限的杯子。

你和 Codex 聊的内容、它读取的文件、它输出的代码,都是往这个杯子里倒水。任务越复杂、对话越长,水就越多,杯子就越满。

压缩上下文(compact),相当于把水浓缩——体积小了,但可能丢细节,也可能在浓缩过程中卡住。

所以,更可靠的办法,不是寄希望于杯子更大、压缩更聪明,而是:把水存到杯子外面——也就是存到项目文件里。(这个弯本兔转了一会儿才绕过来。)

说清楚一点:不是模型没有记忆,而是模型不适合被当成可靠的长期项目记忆。当前对话里的上下文它确实能看到,但一旦对话变长、压缩发生、或者你换了对话,这些"记忆"就靠不住了。

真正可靠的记忆,是文件。

✅Codex CLI 和 Codex App,心智模型不一样

用 CLI 时,逻辑是"目录优先":你在哪个目录运行 codex,那里就是工作区。

用 App 时,逻辑是"Project / Thread 优先":

  • Project:绑定到你电脑上某个真实的文件夹,是长期项目的容器

  • Project Thread:在这个项目里开的对话,能访问项目文件夹,适合长期做项目

  • Standalone Thread:临时开的独立对话,不一定绑定真实项目,更像随手问问

简单说:Project Thread = 在项目里干活;Standalone Thread = 随手开的临时聊天。

如果你想让 Codex 管理真实项目、维护 AGENTS.md、更新日志文件,建议先在 App 里创建一个 Project,并绑定真实项目文件夹,不要在 Standalone Thread 里长期做项目。否则文件读写关系会很混乱。

✅第一层:给 Codex 建一本"工作手册"

文件名:AGENTS.md

这是 Codex 每次开工前会读取的文件。把稳定的规则写进去,以后就不用每次重新交代。

适合写进去的内容:

  • 项目结构说明(哪个文件夹放什么)

  • 代码规范(用什么框架、命名风格、不允许的操作)

  • 构建和测试命令(比如 npm run test 怎么跑)

  • 协作约定(不随意修改无关文件、不跳过测试、有疑问先问)

  • 每轮工作结束后,必须更新 LOG.md 和 STATUS.md(这条很关键)

注意:AGENTS.md 适合放稳定规则,不适合放当前任务进度。任务进度放在后面说的几个文件里。

✅第二层:用文件代替对话记忆

Silly Rabbit 的项目里,一般会维护这样一套文件:

各自的职责:

  • PLAN.md:这次要做什么,分几个阶段,每个阶段的目标和范围

  • LOG.md:每轮对话或 Worker 完成后,记录做了什么、改了哪些文件、测试结果如何

  • STATUS.md:现在做到第几步、谁在执行、下一步是什么、有没有阻塞

为什么这样做有效?

哪怕对话变长、压缩效果不理想、换了模型或者换了对话,新的 Thread 只要读这几个文件,就能快速接手。损失的只是上一次对话的"聊天记录",而不是整个项目的状态。

✅第三层:大活拆开,主对话只做"导演"

不太理想的做法是:一个对话里,从需求讨论到设计、实现、调试、测试、修复,全走一遍。对话越来越重,最后要么压缩、要么爆掉。

更可行的做法,是把角色拆开:

主对话负责:

  • 理解需求

  • 制定计划并写入 PLAN.md

  • 拆分任务,分配给 Worker

  • 收集阶段总结

  • 做最终 review

Worker 负责:

  • 执行某一个阶段

  • 只改明确范围内的文件

  • 跑测试

  • 更新 LOG.md / STATUS.md

  • 汇报改动、测试结果和风险点

这样主对话保持"轻量",Worker 处理具体执行,任务边界清楚,互不干扰。

一个小提醒:Worker 不是越多越好。多个 Worker 同时改同一块代码,很容易互相冲突。更适合拆成边界清晰、互不重叠的任务。

✅如何在 Codex App 里开启子 Worker

有两种方式,都不复杂:

方式一:在主对话里直接描述

方式二:在同一个 Project 里手动新建一个 Thread

这个新 Thread 就充当手动 Worker。给它的开场提示词可以是:

关键不是有没有某个按钮,而是工作边界要说清楚。Worker 最好知道:做哪个阶段、允许改哪些文件、完成标准是什么、结果写回哪个日志。

✅第四层:上下文快爆时,怎么应急

按严重程度来:

如果平时日志维护得好,即使换对话,损失也会小很多。这就是第二层文件系统很关键的原因——它是整套方法的兜底机制。

✅第五层(进阶):用状态机的思路管理项目

普通用法是:我盯着 Agent 干活。

更系统的用法是:我盯着任务状态流转。

任务不只活在某个聊天窗口里,而是有明确的生命周期:

每个任务最好都有:

  • 当前状态

  • 下一步动作

  • 完成标准

  • 阻塞原因(如果有)

  • 产出证据(PR 链接、测试结果、日志截图)

OpenAI 在 2026 年 4 月 27 日发布的开源项目 Symphony,就是这个思路的完整实现——用 Linear 任务看板作为"状态机",每个 ticket 自动分配一个 Agent 去执行,Agent 崩了自动重启,人只负责 review 结果。据 OpenAI 官方介绍,这种工作流让内部团队的合并 PR 数量在数周内有明显提升。

对普通用户来说,不需要部署复杂系统,只要让 STATUS.md 持续记录任务状态,就已经是在用状态机思维辅助 Agent 工作了。

✅行动清单

如果你想从今天开始调整,可以按这个顺序来:

  • 在 Codex App 里创建一个 Project,绑定真实项目文件夹

  • 在项目根目录建 AGENTS.md,写入项目规范和"每轮更新日志"的约定

  • 建 PLAN.md、LOG.md、STATUS.md,开始任何大任务前先填写计划

  • 做大任务时,主 Thread 写计划、分配任务,另开 Thread 或启动 Worker 执行

  • 感觉对话变重时,及时 /compact,或 Fork 到干净节点继续

  • 对话换了、模型换了,让新 Thread 先读文件,再开工

信息存文件,对话只指挥,大活拆小块,状态随时存。

这不一定是使用 Codex App 的唯一方式,但在本兔的实践里,是目前最稳的一种。

#codex#chatgpt #agents #claudecode #上下文 #workflow #llm #AI工具

相关学习资料