规划与长任务:
先想清楚,再盯着做完
改个按钮文字,一句话就够。可要是一件事得改十几个文件、做上一个小时,直接开工,它只能猜你没说清的地方,做完你才发现不是想要的。这一课学三件事:先让它把方案想清楚,再让它朝一个能验收的目标一直做完,长任务跑起来以后怎么照看、怎么中途改方向。
时间紧就先看"入门"和"实战":会用 /plan 和 /goal,大任务就不容易跑偏。"原理"讲推理强度和上下文,决定长任务能不能稳稳做完。
什么时候该先规划
换个灯泡,不用画图纸;重新装修厨房,得先量尺寸、出图纸、跟你确认,再开工。交给 Codex 的活也一样。
三种信号:该先规划了
官方最佳实践的原话大意是:任务复杂、模糊,或者很难描述清楚时,先让 Codex 规划,再让它写代码。
官方列的新手常见错误里,就有一条是"多步骤、复杂的任务跳过了规划"。另一方面,官方也说提示词不完美时 Codex 常常照样做得不错,所以小改动不必每次都规划。
这一课的三件工具
| 工具 | 怎么用 | 解决什么 |
|---|---|---|
| 计划模式 | 输入框里输入 /plan | 怎么做还没想好:它先调研、问你、出计划(第 2 节) |
| 让它采访你 | 在提示词里说"先问我问题" | 要什么还没想好:它一个个问,帮你把想法变具体(第 2 节) |
| 目标模式 | 输入框里输入 /goal 加目标 | 活很长:它一直推进到完成标准达成(第 4 节) |
计划模式:先出方案,再动手
就像装修前先请师傅上门量尺寸、出图纸。在输入框里输入 /plan,打开计划模式(Plan mode):Codex 先读相关代码、问你几个要拍板的问题、写出一份分步计划;你们把计划谈妥了,它再开始改。
官方的描述是:计划模式让 Codex 先收集上下文、问澄清问题,在动手实现之前把计划做扎实。对大多数人来说,这是"先规划"最省事也最有效的办法。/plan 是个开关,再输入一次就关掉。
- db/schema.ts:订单加退款字段
- src/api/refunds.ts:新增退款接口,只能全额退
- 订单详情页:加"退款"按钮和确认弹窗
- 补测试,npm test 全部通过
- 1打开计划模式输入 /plan,再写任务。这里画的 Plan mode 标记是示意,样子以你的 App 为准。
- 2它先问你读完相关代码,把要你拍板的事摆出来。开着系统通知(或桌宠)的话,它需要你回答时会提醒你。
- 3交出计划分步骤的方案。不满意就直接说"第 2 步改成……",改到满意再开工。
界面示意,以你的 App 为准。文档没写"同意计划"的按钮叫什么,所以这里画成用对话回复。
还有一招:让它先采访你
有时候卡住的不是"怎么做",而是"要什么"你自己都没想好。官方建议这时让 Codex 先采访你:让它先提问,挑战你的假设,把模糊的想法变成具体的东西,然后再写代码。这不需要什么命令,一段提示词就行:
我想给订单后台加退款功能,但细节还没想清楚。 先别写代码,一次问我一个问题,帮我把需求想具体: - 挑战我的假设,指出我没考虑到的情况 - 问完后整理成一个目标:要做成什么、有哪些约束、怎么验证做完了
| 计划模式 | 让它采访你 | |
|---|---|---|
| 谁主导 | 它去读代码,问实现上要拍板的事 | 它来问你,追问需求本身 |
| 产出 | 一份分步执行计划 | 一个说清楚的需求或目标 |
| 适合 | 要什么大致清楚,怎么做要商量 | 要什么都还模糊 |
官方在长任务页里推荐的顺序正是这样:结果还不清楚时,先 /plan,在里面让它采访你、理出约束,把结果写成一个有可衡量完成标准的目标,然后用 /goal 开跑。第 4 节讲目标。
同一件事,四种交法
order-admin 里三件大小不同的事。先选一件,再换着用四种交法,看 Codex 会怎么做、划不划算。交法按钮上的小圆点是这件事配这种交法的评价。
对话内容是教学示意:文件名、行数、测试数量都是虚构的;四种交法的行为依据官方文档。
速查:四种交法
| 交法 | 怎么开始 | Codex 会 | 适合 |
|---|---|---|---|
| 直接做 | 直接写任务 | 读、改、验证,一轮做完 | 小而清楚的改动 |
| 计划模式 | /plan,再写任务 | 先调研、问关键问题、出计划,谈妥再开工 | 要商量做法的大任务 |
| 先采访 | 提示词里说"先问我问题" | 一个个追问,把模糊的想法变成具体目标 | 你还没想清楚要什么 |
| 目标模式 | /goal 加目标文字 | 一直朝目标推进,做完、被暂停或要你拍板时才停 | 结果清楚、步骤多、能验证的长活 |
目标模式:盯着它做完
在输入框里输入 /goal 加一段目标,就打开了目标模式(Goal mode)。这是一个持久的目标:Codex 会一直朝它推进,直到做完、你暂停它,或者需要你补充信息。
目标模式怎么运转
- 1目标文字就是你 /goal 后面写的那段。
- 2进度正在做、等你决定、已暂停、已完成。用时的显示是示意。
- 3三个按钮暂停 / 继续、编辑目标、清除目标。
界面示意,以你的 App 为准。
写一个它能自己验收的目标
官方建议目标里写三样东西(用得上的都写):
| 要素 | 写什么 | 退款的例子 |
|---|---|---|
| 结果 Outcome | 你要的结果,不只是它该做的动作 | 已退货的订单可以全额原路退款 |
| 约束 Constraints | 必须用的工具、不能碰的边界、兼容要求、要避开的做法 | 不改现有订单接口的返回格式,不引入新依赖 |
| 验证 Verification | 测试、可以测量的指标、审查标准,证明确实做完了 | 补上正常退款、重复退款的测试,npm test 全部通过 |
/goal 实现订单退款:已退货的订单可以全额原路退款,退款后订单状态变成"已退款"。 约束:不改现有订单接口的返回格式,不引入新依赖。 验证:补上正常退款、重复退款两个测试,npm test 全部通过。
结果对应"目标",验证对应"完成标准",约束还是约束。上下文(相关文件在哪)照样可以写进去。区别只在于:目标模式下,"怎样算做完"由它自己反复检查,所以验证那一条最不能省。
练一练:这个目标能直接用吗
6 个目标,判断每个能不能直接交给 /goal,不能的话缺了什么。
演练:订单退款流程
从计划模式开始:回答它的问题、看计划、把计划设成目标,看进度条一路推进。中途你插一句改需求,最后它还会停下来请你批准一次提交。点"开始"一步步回放,问题和批准都可以自己点。
画面为教学示意:文件名、测试数量、用时和 Codex 说的话都是虚构的;/plan、/goal、进度条的按钮和权限规则与官方文档一致,界面细节以你的 App 为准。
想多深、跑多快
推理强度(reasoning effort)决定它每一步想多久:想得越久,复杂任务做得越好,但更慢,用的 token 也更多。输入 /reasoning 就能改当前这个对话的推理强度。
在 App 里有两处能调推理强度:输入 /reasoning,或者用输入框下方的模型和推理强度控件。点下面的档位,看看各自适合什么。
条形图只是示意高低,不代表真实数字。你能选哪几档,取决于模型、套餐和客户端;各模型从哪一档起步最好,见专题 A。
怎么选:从默认开始,不够再加
- 从默认档开始,任务需要更深的规划或分析时再调高。
- 保留够用的最轻档:同一个任务在低一档试一次,结果达标就用低的。官方的说法是"留下能满足质量要求的最轻设置"。
- 想想它多久跑一次、你等不等它:天天自动跑的活,额度累积得快;你坐着等结果的活,可以用更快的设置;放一整夜的活,不急这一时。
- 档位不能跨代照搬:不同代模型的同名档位不完全对应,换了模型要重新试。
推理强度是"想多久";/fast 是速度档(Fast):让模型跑得更快,代价是额度按更高的倍率消耗,倍率见专题 A。用 ChatGPT 账号登录时才有 Fast,额度按更高倍率算;用 API key 登录按 API 的 token 价格计费,这个倍率不适用。/fast 只在当前模型提供 Fast 档时可用。
文档还描述了一种 Power 预设:往 Smarter 走想得更深,往 Faster 走更快、更省;点 Advanced 才能单独选模型、推理强度和速度。你看到的是哪种控件,取决于套餐、客户端和灰度,以你的 App 为准。
上下文:它的工作台面
上下文(context)是 Codex 干活时能看到的全部东西:读过的文件、你们说过的话、命令的输出、各种说明。它能同时装下的量有上限,叫上下文窗口。长任务迟早会碰到这个上限。
点下面的按钮,往"桌面"上加东西,再试试压缩、开侧聊、开新对话。
比例和自动压缩的那条线都是示意。真实的阈值不设置就用模型的默认值。
三个命令
/status 看用了多少显示对话 ID、上下文用了多少、额度还剩多少。/compact 手动压缩把前面的对话换成一份精简摘要,腾出空间、保留关键细节。一段长活刚做完、要开始下一段之前最合适。Codex 自己也会自动压缩。/side 旁支问一句开一个临时的侧聊,问完不打断、不搅乱主对话(第 2 课讲过)。桌面乱了,结果就变差
官方在讲子代理时提到两个现象:上下文污染(探索笔记、测试日志、报错堆栈这些中间输出太多,有用的信息被埋住)和上下文腐化(对话塞得越满,表现越差)。对应的做法:
- 一个对话做一个完整的成果。把整个项目塞进一个对话,上下文会越来越臃肿,结果越来越差。
- 吵的活(翻日志、跑大量测试)交给子代理,只把摘要拿回主对话(第 12 课)。
- 必须一直遵守的规矩,别只在对话里说一次,写进 AGENTS.md(第 5 课)。压缩后的摘要只留关键细节。
长任务跑起来以后
目标跑起来,你不用干等,也不用盯着每一步。要改方向就插话,想到下一件事就排队,想问进度开侧聊,要断网就先暂停。
| 遇到的情况 | 怎么做 |
|---|---|
| 它方向不对,或者漏了一个细节 | 插话(steer):消息加进当前这一轮,它马上调整 |
| 想到一件做完再说的事 | 排队(queue):留到下一轮。排队的消息显示在输入框上方,可以改、调顺序、直接发或删掉 |
| 想知道进度、想听它解释,又不想打断 | 侧聊:/side,或按 ⌘ ⌥ S(Windows 上 Ctrl Alt S) |
| 马上要断网、要合上电脑 | 先在进度条上暂停目标,回来再继续 |
| 完成标准本身变了 | 在进度条上编辑目标文字 |
| 你自己动手改了、或者撤掉了它的某处改动 | 告诉它一声,不然下一轮它可能把你的改动覆盖掉 |
发消息时默认是插话还是排队,在 Settings > General > Follow-up behavior 里设;那里还写着临时换成另一种的快捷键。按键细节见第 2 课。
练一练:这时候该怎么做
让它安心跑
- 别让电脑睡着:本地跑的长任务,在 Settings > General 里打开 Prevent sleep while running,你走开时它还能接着做。
- 让它叫你:系统通知或者桌宠(Pets)会告诉你哪个对话在等你、哪个做完了可以审。
- 不在电脑前:用手机上的 Remote 看进度、批准命令(第 13 课)。
长对话怎么组织
- 一个对话,一个完整的成果。还是同一个问题,就留在同一个对话里,推理的来龙去脉都在;真正分岔了再 fork(第 4 课)。
- 几个目标同时跑,就开几个对话。每个对话有自己的上下文、消息和目标,但别让两个对话改同一批文件;要并行写代码,用 worktree 给每个对话一份单独的副本(第 12 课)。
- 常回的对话置顶,改个能看出结果的名字。置顶只改它在侧栏的位置,不影响上下文。
进阶与避坑
给已经用顺手的你:几个文档里藏得比较深的细节。
- "Goal 模式是实验功能,要先手动打开":2026 年 5 月它已经转正,桌面 App、IDE 扩展、命令行都能用;配置里的开关
features.goals默认就是开的。 - "推理强度就 low / medium / high 三档":现在档位随模型变。App 里叫 Light、Medium、High、Extra High,有的模型还有 Max 和 Ultra;Light 在配置文件和命令行里写作
low。 - "用 /model 顺便选推理强度":App 里推理强度有单独的
/reasoning,只改当前对话;模型用/model选。命令行里的/model仍然可以顺带选推理强度(第 14 课)。 - "长任务就一遍遍回复'继续'":现在用
/goal写下完成标准,让它自己推进到做完。
计划模式用的推理强度,和平时一样吗?
plan_mode_reasoning_effort,不设就用内置的默认值。配置文件怎么写,第 7 课讲。目标能写多长?
docs/refund-plan.md,目标里写"按 docs/refund-plan.md 实现,npm test 全部通过"。PLANS.md 是什么?
Max 和 Ultra 在我的选项里找不到
自动压缩什么时候发生?能调吗?
model_auto_compact_token_limit 可以改这个阈值(第 7 课讲配置)。一般不用动,觉得对话变"糊涂"了先手动 /compact。同时跑两个目标,会不会打架?
它在目标模式下停住了,没在干活
/status 能看到额度还剩多少,套餐额度见专题 A。网页版 ChatGPT 能用 /goal 吗?
小测验
8 道题,每题选完会立刻看到解析。
