信息核对于 2026-11-14,官方来源:ChatGPT Learn:Long-running work、Codex 斜杠命令、AGENTS.md 说明、Best practices、Troubleshooting、Config reference、Codex changelog、OpenAI 状态页。
让 Codex 做一个大一点的任务,比如重构一个模块、迁移一批接口,常见的情况是:它改了两三个文件,就停下来跟你汇报「已完成 xxx,接下来我会……」,然后等你回一句「继续」。来回几次,一个阶段要催好多遍。对话拉得很长以后,回复还会越来越慢,偶尔还会看到这样的报错:
Error running remote compact task: {"detail":"Bad Request"}
下面按官方文档讲清这几件事分别是怎么回事,以及怎么让 Codex 一口气把一个阶段做完。
先排除:是不是官方出故障了
打开 status.openai.com 看一眼。截至北京时间 11 月 14 日 9:00,状态页没有登记 11 月 13–14 日的 Codex 故障,唯一还在处理的事件是 Compliance API 的费用数据延迟,和 Codex 写代码无关。
所以这两天如果你也觉得 Codex 慢、爱停,大概率不是全局故障,而是下面几个原因,按顺序排查就行。
为什么会做一半就停
1. 没告诉它「做到什么算完」。 Codex 每一轮都在判断「这件事做完了没有」。如果你只说「帮我重构用户模块」,它改完一部分觉得可以给你看看了,就会结束这一轮。官方 Best practices 建议提示词里写清四件事:Goal(要改什么)、Context(看哪些文件)、Constraints(要遵守什么)、Done when(满足什么条件才算完成)。最后一项最容易漏。
2. 它在等你审批。 官方排查文档说,对话看起来卡住时,先看 Codex 是不是在等审批。跑测试、装依赖、联网这类操作,按你的审批设置可能需要你点一下确认。这种停顿看上去也像「停下来汇报」。
3. 对话太长,上下文快满了。 对话越长,Codex 每轮要带的上下文越多。快到上限时,Codex 会自动压缩:把早期对话换成一段摘要,腾出空间继续干。压缩本身要花时间,压缩后早期的细节也只剩摘要。输入 /status 可以看到当前对话的上下文用量。
方法一:用 /goal 给它一个带完成标准的目标
这是官方为长任务准备的功能。在 ChatGPT 桌面 App、Codex CLI、IDE 扩展里输入 /goal 就能启动 Goal 模式。官方说明里有两点很关键:
- 目标文字既是第一条提示,也是完成标准。 Codex 会对照它判断是否做完。
- 配置参考里写明
features.goals是「持久目标和自动继续」,稳定功能、默认开启。
写目标时包含三样东西:
| 要写的 | 例子 |
|---|---|
| 结果 | 把 src/user/ 下的回调写法全部改成 async/await |
| 约束 | 不改对外接口,不新增依赖 |
| 验证方式 | npm test 全部通过,npm run lint 无报错 |
/goal 完成重构计划的第 1 阶段:把 src/user/ 下所有回调写法改成 async/await,不改对外接口、不新增依赖。npm test 和 npm run lint 全部通过才算完成,完成后一次性汇报改动文件和测试结果。
几个用法:
- 输入
/goal查看当前目标,/goal edit修改,/goal pause、/goal resume、/goal clear暂停、恢复、清除。 - 目标最多 4,000 字符。计划很长就写进一个文件,让目标指向这个文件。
- 想中途了解进度又不想打断它,可以开一个
/side侧边对话问。 - Goal 模式不会放宽权限,沙箱和审批策略照旧,需要你做决定时它会暂停。所以审批设置也要和任务匹配。
目标还没想清楚?先用 /plan。 计划模式下 Codex 会先调研、问你问题、给出方案,不会直接动代码。官方建议计划定好后再用 /goal 启动。CLI 0.169.0 的更新说明还提到:计划完成后选 Yes, clear context and implement,会把完整计划交给一个新会话去执行,等于自带一个干净的上下文。
方法二:把规矩写进 AGENTS.md,不用每次重复
Codex 每次开工前都会读 AGENTS.md:全局的在 ~/.codex/AGENTS.md,项目的放在仓库根目录。项目里还没有的话,输入 /init 可以生成一个模板,再自己改。
把「怎么干长任务」写进去,以后每个新对话都生效:
## 长任务执行规则
- 多步骤任务先列计划,然后按计划连续执行,完成当前阶段的全部步骤后再汇报。
- 不要每改一两个文件就停下来汇报。只有遇到需要我做决定的问题、需要审批的操作或无法自行解决的错误时才暂停。
- 每个阶段结束前运行 npm test 和 npm run lint,全部通过后再汇报。
- 汇报只写三项:改了哪些文件、测试结果、下一阶段打算做什么。
测试命令换成你项目实际用的。官方建议 AGENTS.md 写得短而具体,比一大堆空泛规则有用;发现它反复犯同一个错,再加一条。
改完之后,在仓库根目录让 Codex 「总结一下当前加载的指令」,确认它读到了。
方法三:对话太长就换新对话,带上交接摘要
官方 Best practices 的建议是:一个连贯的工作单元用一个对话。一个阶段做完、要开始下一个阶段时,就是换对话的好时机。官方排查文档也写着,对话卡住时可以用更小、更聚焦的提示开新对话。
换对话前,先让 Codex 写一份交接摘要:
把目前的进度写成交接摘要:已完成的改动和文件、未完成的步骤、已知问题、下一步要做什么。写进 HANDOFF.md。
然后开新对话:
- CLI:输入
/new开新对话(/clear会顺便清屏);也可以/new 第二阶段直接给新对话命名。 - 桌面 App:新建一个对话即可;想保留原对话继续分岔试别的方案,用
/fork。
新对话第一句:
读 HANDOFF.md,接着完成第 2 阶段。全部步骤做完、测试通过后再汇报。
如果只是对话偏长、但还在同一个问题里,可以先手动输入 /compact,让 Codex 把前面的内容压成摘要,再继续。
遇到 Error running remote compact task 怎么办
从报错字面看,这一步是 Codex 在压缩对话历史时请求被拒绝了(Bad Request),压缩没完成,对话就没法顺利往下走。官方文档没有单独解释这条报错,下面是按官方提供的功能能做的处理:
升级到最新版 Codex CLI。最近几个版本的更新说明里有多条压缩相关的修复,比如压缩失败不再把半截摘要留在对话里、压缩失败时保留对话历史。
npm install -g @openai/codex@latest codex --version稍后手动输入
/compact再试一次。还不行就换新对话。按上一节让它写交接摘要,
/new开新对话接着做。之前的对话不会丢,以后想回去看可以用/resume。持续出现就反馈。输入
/feedback,可以附上日志提交给官方。
进阶一点:配置文件里的 model_auto_compact_token_limit 可以设置自动压缩的触发阈值,不设置时用模型默认值。一般不需要改,换对话通常更省事。
一张表总结
| 情况 | 怎么做 |
|---|---|
| 改几个文件就停下来汇报 | /goal 写清结果、约束、验证方式;AGENTS.md 写「做完整个阶段再汇报」 |
| 停住不动 | 先看是不是在等审批 |
| 任务复杂、方案不确定 | 先 /plan,定好再 /goal |
| 对话很长、越来越慢 | /status 看上下文用量;/compact 或带交接摘要开新对话 |
| remote compact 报错 | 升级 CLI,重试 /compact,不行就 /new,持续出现用 /feedback |
| 怀疑是官方故障 | 看 status.openai.com |
长任务跑得顺,Codex 额度消耗也更快。经常把 Plus 的 Codex 额度用完的话,可以考虑升级 Pro。AI Boxy 支持支付宝、微信付款,充到你本人账号,订单可查,售后有质保。