Codex 最近增加了 /goal 命令。goal 的意思是目标,这个命令的作用和名字一样:给 Codex 设定一个目标,让它不断朝这个目标前进,直到达成我们设定的终止条件。
开启 goal 功能
这个功能默认没有打开,需要先修改 Codex 的配置文件 ~/.codex/config.toml,在 [features] 下面加上一行:
[features]
goals = true

保存之后在 Codex 的输入框里输入 /goal,会发现它没有出现在命令匹配列表里,输入框上方显示 No commands。

虽然没有提示,这个命令实际上是可以使用的。直接在 /goal 后面跟上目标描述,比如「/goal 帮我调研一下 codex 的 goal 命令」,然后发送。

发送之后,消息上方会出现一个 Goal 标签,说明目标已经生效。

和普通任务的区别
现在 Codex 的指令遵循性已经比较强,普通任务在单轮对话里它也会持续完成。/goal 的区别在于它在 Agent 层面增加了程序机制:每一轮对话之后,它都会自己判断是否达成了目标里写的终止条件,没有达成就继续执行。
比如开发一个比较复杂的项目,直接让 Codex 执行,它可能在中间某个阶段自己判定「差不多完成了」就停下来。设置了 goal 之后,它会一直执行到达成最终的评估目标,比如把项目完整搭建出来。目标写得越详细,它对自己是否达成目标的评估就越准确,长时间执行任务时效果越好。
我之前做过一次测试,设置目标之后它会持续推进,直到界面里显示 Goal complete。

官方文档的建议
Codex 官方文档里有一页专门介绍这个功能:Follow goals。

文档里说明 /goal 适合这些工作:
- 代码迁移,目标、校验和约束条件都比较明确;
- 大型重构,Codex 可以在每次检查点之后运行测试;
- 需要明确成功标准的长期实验,比如通过实验、游戏或原型不断改进现有产品。
文档同时提醒,不要把目标用于一系列不相关的工作。
在使用方式上,文档把 /goal 描述为建立一个循环:
- 给出一个目标和一个终止条件;
- 把 Codex 指向它必须首先读取的文件、文档、问题、日志或计划;
- 提供能够明确证明进展的命令或成果;
- 让 Codex 以检查点的方式工作,并保留一份简短的进度日志。

文档还给了几个示例目标。代码迁移的示例是:把项目从旧版技术栈迁移到目标技术栈,确保所有界面在视觉上完全一致,并使用 Playwright Interactive 截图验证输出。从零创建应用的示例是:先写一份 PLAN.md 描述要构建的内容,让 Codex 为每个里程碑创建测试,同样用 Playwright Interactive 验证界面实现到了什么程度。

搭配 caffeinate 长时间运行
我自己使用 /goal 的时候,一般会搭配 macOS 自带的 caffeinate 命令:
caffeinate -dimsu
在终端里运行这条命令之后,电脑合盖或者进入屏保时都不会休眠,Codex 可以继续执行任务。放在网络稳定的环境里,睡觉之前或者人不在电脑前的时候,都可以让它长时间运行,不用担心执行到一半电脑进入休眠状态。

