Codex 的 /goal 模式,90% 的人都用错了!这才是官方正确打开方式

# Codex 的 /goal 模式,90% 的人都用错了!这才是官方正确打开方式 你有没有这种感觉: 跟 Codex 聊天式写代码,它像个听话但没脑子的实习生——你问一句,它动一下。 你稍微没说清楚,它就自由发挥,把“未来可以考虑”的功能当成当前需求给实现了。 直到你用了 `/goal`,才发现原来 Codex 也可以像外包团队一样,拿着施工图自己往前推进,干完活才来汇报。 但问题来了:**很多人根本不会用 /goal,或者用错了姿势,导致任务跑偏、时间失控、结果稀碎。** 今天我就把 Codex 官方对 /goal 的定位、适用场景、实战模板,以及我踩过的坑一次性讲透。 ## 一、官方到底怎么定义 /goal? Codex 官网上有一句非常显眼的描述: > 当任务需要 Codex 跨回合持续工作以达到可验证的停止条件时,请使用 /goal。 翻译成人话就是:**你给 Codex 一个明确的目标、一套可验证的验收标准、几条不能碰的边界,然后它自己循环干活,直到满足条件才停。** 不是所有命令都适合套 /goal。官方列举了三个典型场景: 1. **长时间运行的编码工作**,有明确的成功条件和验证循环。 2. **代码迁移、大型重构、部署重试循环、实验、游戏和副项目**,Codex 可以持续取得有范围的进展。 3. **需要开展具有明确成功标准的长期实验的团队**。 一句话总结:**有目标、有验收、有边界,才配用 /goal。** ## 二、一个标准 /goal 长什么样? 很多人用 /goal 只会写一句“把这个功能做完”,然后祈祷 Codex 别翻车。 这跟把方向盘扔了让车自己开有什么区别? 官方推荐的结构是:**目标 + 验收标准 + 边界条件 + 优先级**。 给你一个可以直接抄的示例: ``` /goal 把这个 React 应用的登录页改成可用状态,修复当前报错,并确保 npm run build 通过。 完成标准: - 登录表单能提交 - 错误提示正常显示 - 移动端布局不溢出 - npm run lint 和 npm run build 都通过 不要改后端接口;只改 src/app/login 相关文件。 优先保证功能可用,其次再美化 UI。 ``` 看到没?**目标、验收、边界、优先级全都有。** Codex 知道该干什么、干到什么程度算完、什么不能碰。 ## 三、不知道要做什么,也能用 /goal? 有人会问:如果我自己都没想清楚目标,还能用 /goal 吗? 答案是:**可以,但别指望它帮你发明需求。** /goal 也支持开放式探索。比如你让它“做一个类似百度首页的页面”,它能给你搞出来。 但你要是让它“做一个改变世界的产品”,它只会给你一堆泛泛而谈的代码。 所以我的建议是:**开放式探索可以,但必须给一个具象的参照物。** 比如“仿照 XXX 做一个简化版”,这样 Codex 才有方向。 ## 四、用 /goal 前,先建立一份“工作契约” 很多人把 /goal 当成一个万能启动器,丢一句话就跑。 结果 Codex 干到一半,你不知道它在干嘛;它也不知道自己该不该停。 **正确的做法是:在 /goal 里写清楚一份工作契约。** 包括: - 指定一个目标和停止条件; - 告诉 Codex 先读哪些文件、文档、日志或计划; - 定义哪些命令或产物能证明进展; - 要求它分 checkpoint 工作,并保留简短进度记录; - 运行时用 /goal 查看状态; - 用 pause、resume、clear 控制节奏。 **千万别让一个 /goal 一路跑到黑。** 我试过一次让 /goal 连续跑 75 个小时,最后发现收益和损耗完全不成正比。 更聪明的做法是:让 Codex 定期给你一份紧凑的进度报告,包含: - 当前 checkpoint; - 已验证的内容; - 剩余工作; - 是否被阻塞。 如果报告开始含糊不清,别急着追加零散指令,而是**收紧 goal**:明确下一个 checkpoint、用哪个命令证明完成、什么情况应该暂停。 ## 五、官方推荐的三个实战示例 直接抄作业: **技术栈迁移:** ``` /goal 把这个项目从 [旧技术栈] 迁移到 [目标技术栈]。确保所有页面视觉表现保持一致,并用 Playwright 验证输出。 ``` **原型创建:** ``` /goal 按 PLAN.md 实现第一版,为每个里程碑创建测试,并用 Playwright 验证输出。必要时参考给定截图。 ``` **提示词优化:** ``` /goal 优化 [提示词文件或目录],直到 eval 套件达到 [目标分数或通过率]。每次修改后运行 [eval 命令],检查失败样例,并保持改动小而精准。达到目标,或后续修改需要产品/政策判断时停止。 ``` 这些示例的共同点:**目标明确、验证方式具体、停止条件清晰。** ## 六、我最推荐的搭配:/goal + PRD + spec 说实话,/goal 最香的地方,不是让你省掉思考,而是帮你把已经定义好的需求执行到位。 所以它最适合搭配的,是一份 PRD 或者 spec。 但这里有个大坑:**别直接丢一句“/goal 根据 PRD 把这个功能做完”。** PRD 里全是“用户希望更方便”“页面需要足够清晰”“交互尽量自然”这种话。 对人来说好理解,对 Codex 来说,这就是自由发挥的许可证。 我之前就踩过坑:PRD 里写了一句“后续可以考虑支持多租户配置”,Codex 真的开始设计多租户的数据结构了。 你说它错了吗?文档里确实有这句话。但这显然不是当前版本该做的事。 **所以后来我加了一句魔法咒语:** ``` PRD 中出现的「后续」「未来」「可以考虑」「可扩展」内容,默认都视为非目标,除非 SPEC 或完成标准明确要求实现。 ``` 这句话能帮你减少 80% 的过度发挥。 ## 七、完整可复用的 /goal 模板 如果你手上已经有 PRD 和 spec,直接用这个模板: ``` /goal 按照 docs/PRD.md 和 docs/SPEC.md 完成 [功能名] 的第一版实现。 执行规则: - PRD 是产品目标和用户流程的来源 - SPEC 是技术实现和接口契约的来源 - 如果两者冲突,以 SPEC 为准,但必须在进度报告中说明 - PRD 中的未来规划默认不实现 - 不要修改与本功能无关的模块 工作方式: - 先整理需求 checklist 和 checkpoint - 每个 checkpoint 完成后运行相关测试 - 如果涉及页面,使用浏览器验证主要流程 - 如果构建或测试失败,优先修复失败项 完成标准: - PRD 中当前版本核心流程全部可用 - SPEC 中定义的接口、状态、边界条件全部满足 - npm run test 通过 - npm run build 通过 - 关键页面或流程完成实际验证 停止条件: - 所有完成标准满足后停止 - 遇到产品判断、文档冲突或需要扩大范围时暂停并说明 ``` 这个模板把**能不能改、做到什么程度、什么时候停、遇到冲突怎么办**都提前说清楚了。 ## 八、最后一条忠告:别让一个 /goal 承包整个系统 如果你的 PRD 里有用户系统、支付系统、后台管理、消息通知、数据看板…… 千万别写: ``` /goal 根据 PRD 完成整个系统 ``` 这会让任务变成无底洞,而且越到后面,状态越难判断。 **正确姿势是拆成多个 goal:** ``` /goal 按 PRD 和 SPEC 完成登录注册模块,完成后通过认证相关测试和页面验证。 ``` ``` /goal 按 PRD 和 SPEC 完成订单创建流程,暂不处理支付回调。 ``` ``` /goal 按 PRD 和 SPEC 完成支付回调和订单状态流转,确保相关测试通过。 ``` 每个 goal 都有清晰边界,你随时可以 pause、resume、clear,不会失控。 ## 九、什么时候别用 /goal? 给你一个简单的判断标准: - 如果任务一句话能说完,十分钟内能搞定,**别用 /goal**,直接对话就行。 - 如果任务需要反复读文档、改代码、跑测试、看页面、修失败项,**非常适合 /goal**。 - 如果还有 PRD 和 spec,那就更合适了。 **因为这时候 /goal 不是在帮你猜需求,而是在帮你执行已经定义好的需求。** 这才是它真正香的地方。 --- **行动号召:** 下次用 Codex 跑长任务,别再一句话甩过去了。先写清目标、验收标准、边界条件,再开 /goal。你会发现,Codex 的靠谱程度直接上一个台阶。 如果你有更好用的 /goal 模板,欢迎在评论区分享,咱们一起把 Codex 榨干。🚀