字节笔记本
2026年5月15日
/goal 深度指南:让 Codex 和 Claude Code 自主跑几小时的正确姿势
OpenAI 和 Anthropic 同一周各自上线了 /goal。两个最强的竞争对手同时押注同一个方向,不是巧合,是信号。
什么是 /goal
给 Agent 设定一个完成条件,它自主循环执行,达成条件才停,中间不需要你盯着。
Codex 用法:
/goal 把 src/auth 模块迁移到新 API,所有调用点编译通过且测试通过
Claude Code 用法:
/goal CHANGELOG.md 包含本周所有合并 PR 的条目
无头模式也能跑:
claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"提前终止:
/goal clear
为什么大多数人用不好它
因为他们把 /goal 当成了更强的 prompt。不是的。普通 prompt 可以模糊,模型会猜你的意思,跑一轮交差。/goal 需要一个退出条件,条件含糊,循环要么几轮就放弃,要么永不收敛。
官方反面教材:
- "让我的代码变得更好" → 过早放弃
- "改进我的算法" → 永不停止
有效版本:
将 src/parser.go 中代码运行时间减少 20%,
且不引入任何单元测试和集成测试的回归两个要素缺一不可:量化指标 + 约束边界。
Codex vs Claude Code:机制差异
表面功能几乎一样,差异在评估机制的透明度。
Claude Code 把评估器架构写进了文档:每轮结束后,当前条件加上已有对话内容,发给一个小型快速模型(默认 Haiku),返回 yes/no 加简短理由。No 就把理由作为下一轮的指引继续跑,Yes 就清除目标。
关键设计:执行模型和判断模型分离,避免自己评自己的偏差。
这里有一个约束必须记住:评估器不调用工具,只看对话中已出现的内容。条件必须是 Claude 自己的输出能证明的东西。
有效条件:"test/auth 下所有测试通过" 无效条件:"代码质量变好了"
Claude Code 还支持加兜底子句:
/goal 所有测试通过,或在 20 轮后停止
三个真实案例
案例一:NeurIPS 论文转 ICML 格式
OpenAI 工程师 Chris Hayduk 的做法。ICML 有 200 多条格式规则,分散在 LaTeX 模板里。他的拆解方式:
- 先让 Codex 把所有规则抽取为 checklist.md
- 设定目标:根据 checklist.md 改格式,不改任何技术内容
- 要求 Codex 完成每条时勾选
核心方法:把"整体判断"拆成"逐条 yes/no",这是把模糊目标接入 /goal 的通用桥梁。
案例二:蛋白质结构模型架构搜索
完整训练一次要数天。Chris 的解法是用 NanoFold(小型采样数据集)替代,把单轮评分从数天压缩到数分钟。
这个案例说明的前提条件:反馈回路的速度决定循环的实际价值。条件再精确,每轮要跑半天,/goal 就退化成昂贵的定时任务。
案例三:Prompt 优化
跑 eval 套件迭代 prompt 直到分数达标。
/goal eval 套件通过率达到 90%,
检查失败用例、改 prompt、重跑,不修改 eval 脚本本身长循环的隐患:上下文失忆
即便有上下文压缩,模型在数小时跨度上也难以保持连贯。Chris 的解法是把思考状态外化到文件系统,维护三份 Markdown:
| 文件 | 作用 |
|---|---|
| PLAN.md | 高层计划,可预先写入种子思路 |
| EXPERIMENTS.md | 结构化尝试记录:标题 / 做了什么 / 结果 |
| EXPERIMENT_NOTES.md | 实时草稿本,按时间顺序的思考流水 |
EXPERIMENTS.md 最关键。它防止 Agent 在长循环中反复踩同一个坑。
启动前的三个自检
- 条件可度量:能用命令、数字或 checklist 表达吗?
- 验证够快:单轮反馈耗时能接受吗?超过 10 分钟考虑换代理数据集
- 状态已外化:EXPERIMENTS.md 准备好了吗?
三个都 OK,再敲 /goal。
最后
/goal 对提示词工程提出了一个根本性的转变:普通 Chat 依赖模型善意理解,/goal 依赖你自己把需求工程做到位。代价是你必须在起跑前就把"完成"定义清楚。