2026年5月23日 · 阅读 —
Codex Goals:把“继续做下去”变成可验收的持久目标
Codex Goals:把“继续做下去”变成可验收的持久目标
你遇到过这种场景:一个 flaky test 偶发失败,你让 AI “再试试”,它跑一轮、失败、解释几句、停下;下一回合你又得重复“继续、换个方向、再跑一遍”。
Goal 的价值就是把这种“多回合推进”变成一份有完成条件的合同:目标不丢、证据验收、可暂停/可恢复,到预算或阻塞点就停并给出可执行的下一步。
什么是 Goal(用一句话讲清)
Goal 是 Codex 线程内持久化的目标状态:你定义“要达成什么 + 怎么验收 + 不能破坏什么”,Codex 围绕这份合同持续工作,直到:
- 成功(证据满足完成条件)
- 被你 pause/clear
- 预算到达
- 或遇到必须要你补信息的 blocker
什么时候该用 Goal,什么时候不用
适合用 Goal 的任务(终点明确、路径不确定、需要反复验证):
- 性能优化:反复跑 benchmark,对比指标
- flaky test 排查:复现→最小化→定位→修复→回归
- 依赖迁移 / 多步重构:每一步都要可验证
- bug hunt:需要复现证据、补回归测试
- 研究复现:需要最终产物 + 证据链,不允许“看起来像”
不适合用 Goal 的任务(一次性即可完成):
- 一行改动、短解释、一次性 code review、问完就停的问题
Quickstart(官方示例的最短路径)
- 确认 Codex 版本(Goals 自 Codex 0.128.0 起可用)
- 设置 Goal:
/goal <目标>
常见安装/升级方式(示例):
npm install -g @openai/codex@latest
codex --version
brew update
brew upgrade --cask codex
codex --version
/goal 的生命周期命令
/goal # 查看当前 Goal
/goal pause # 暂停
/goal resume # 恢复
/goal clear # 清除
写强 /goal 的“公式”
弱 Goal 往往只有一句“做得更好”,强 Goal 至少包含三件事:
- 可度量结果:什么算完成(阈值/通过率/次数/输出物齐备)
- 验证面(evidence surface):用什么证据验收(tests/benchmark/logs/产物)
- 约束(constraints):哪些不能退化(正确性、稳定性、性能下限、不可 overclaim)
推荐再加两项,让它真正可“自动推进到收敛”:
- 证据打包:固定把日志、配置、随机种子、命令记录下来
- 停止条件:若做不到,必须产出 blocker 报告(缺什么、下一最小实验是什么)
官方示例:性能类 Goal
/goal Reduce p95 latency below 120 ms without regressing correctness tests
它强在:有阈值(p95 < 120ms),有约束(correctness tests 不回退)。
示例 1:flaky checkout test(我建议你直接用的版本)
/goal Make the flaky checkout test reliable: (1) reproduce the flake with a saved evidence bundle (logs/artifacts/seed/repro steps), (2) identify root cause and land a fix with a regression test or stabilization change, and (3) prove stability by running the test N times locally and/or via CI reruns with 0 failures; otherwise, stop with an evidence-backed blocker report that states exactly what is missing and the next smallest experiment to unblock.
把 N 写死(例如 50/100)后,它就具备“可验收”的结束条件。
示例 2:研究复现(Deep Hedging 的强 Goal 形态)
研究类 Goal 容易踩坑在“产物做出来了,但证据不够、结论 overclaim”。强 Goal 的关键是:把论文结论拆成 claim ledger(主张台账),逐条标注证据等级。
/goal Reproduce Buehler et al. “Deep Hedging” as far as the available materials allow, with an evidence-backed claim ledger. For each headline claim/figure/table: locate definition, run a local experiment plan, generate artifacts (plots/tables/metrics + logs + config), verify against the paper, and record status as {mechanics reproduced | close approximate match | blocked exact replay}. Constraints: do not overclaim; label approximations; record seeds/commands. Completion: a final report with the ledger, artifact links, and blockers + smallest next experiment.
一张检查清单:你写 /goal 前先对照
- 目标里有明确阈值或可点验收物(不是“更好/更稳/更快”)
- 明确写了怎么验收(tests/benchmark/日志/产物路径)
- 写了不能破坏的约束(正确性/兼容性/性能下限/不夸大)
- 写了失败时要怎么结束(blocker 报告模板:缺什么 + 下一最小实验)
- 证据要能复跑(命令、配置、seed、依赖版本可复现)
结语
Goal 不是“让 Codex 自己无限循环”。它是你和 Codex 的边界清晰的完成合同:让目标持久,但让证据决定是否完成。