2026年5月23日 · 阅读 —

Codex Goals:把“继续做下去”变成可验收的持久目标

Agent 与 Skills

Codex Goals:把“继续做下去”变成可验收的持久目标

你遇到过这种场景:一个 flaky test 偶发失败,你让 AI “再试试”,它跑一轮、失败、解释几句、停下;下一回合你又得重复“继续、换个方向、再跑一遍”。
Goal 的价值就是把这种“多回合推进”变成一份有完成条件的合同:目标不丢、证据验收、可暂停/可恢复,到预算或阻塞点就停并给出可执行的下一步。

什么是 Goal(用一句话讲清)

Goal 是 Codex 线程内持久化的目标状态:你定义“要达成什么 + 怎么验收 + 不能破坏什么”,Codex 围绕这份合同持续工作,直到:

  • 成功(证据满足完成条件)
  • 被你 pause/clear
  • 预算到达
  • 或遇到必须要你补信息的 blocker

什么时候该用 Goal,什么时候不用

适合用 Goal 的任务(终点明确、路径不确定、需要反复验证):

  • 性能优化:反复跑 benchmark,对比指标
  • flaky test 排查:复现→最小化→定位→修复→回归
  • 依赖迁移 / 多步重构:每一步都要可验证
  • bug hunt:需要复现证据、补回归测试
  • 研究复现:需要最终产物 + 证据链,不允许“看起来像”

不适合用 Goal 的任务(一次性即可完成):

  • 一行改动、短解释、一次性 code review、问完就停的问题

Quickstart(官方示例的最短路径)

  1. 确认 Codex 版本(Goals 自 Codex 0.128.0 起可用)
  2. 设置 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 至少包含三件事:

  1. 可度量结果:什么算完成(阈值/通过率/次数/输出物齐备)
  2. 验证面(evidence surface):用什么证据验收(tests/benchmark/logs/产物)
  3. 约束(constraints):哪些不能退化(正确性、稳定性、性能下限、不可 overclaim)

推荐再加两项,让它真正可“自动推进到收敛”:

  1. 证据打包:固定把日志、配置、随机种子、命令记录下来
  2. 停止条件:若做不到,必须产出 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 的边界清晰的完成合同:让目标持久,但让证据决定是否完成。