ByteNoteByteNote

字节笔记本

2026年5月15日

/goal 深度指南:让 Codex 和 Claude Code 自主跑几小时的正确姿势

API中转
¥120

OpenAI 和 Anthropic 同一周各自上线了 /goal。两个最强的竞争对手同时押注同一个方向,不是巧合,是信号。

什么是 /goal

给 Agent 设定一个完成条件,它自主循环执行,达成条件才停,中间不需要你盯着。

Codex 用法:

/goal 把 src/auth 模块迁移到新 API,所有调用点编译通过且测试通过

Claude Code 用法:

/goal CHANGELOG.md 包含本周所有合并 PR 的条目

无头模式也能跑:

bash
claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"

提前终止:

/goal clear

为什么大多数人用不好它

因为他们把 /goal 当成了更强的 prompt。不是的。普通 prompt 可以模糊,模型会猜你的意思,跑一轮交差。/goal 需要一个退出条件,条件含糊,循环要么几轮就放弃,要么永不收敛。

官方反面教材:

  • "让我的代码变得更好" → 过早放弃
  • "改进我的算法" → 永不停止

有效版本:

text
将 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 模板里。他的拆解方式:

  1. 先让 Codex 把所有规则抽取为 checklist.md
  2. 设定目标:根据 checklist.md 改格式,不改任何技术内容
  3. 要求 Codex 完成每条时勾选

核心方法:把"整体判断"拆成"逐条 yes/no",这是把模糊目标接入 /goal 的通用桥梁。

案例二:蛋白质结构模型架构搜索

完整训练一次要数天。Chris 的解法是用 NanoFold(小型采样数据集)替代,把单轮评分从数天压缩到数分钟。

这个案例说明的前提条件:反馈回路的速度决定循环的实际价值。条件再精确,每轮要跑半天,/goal 就退化成昂贵的定时任务。

案例三:Prompt 优化

跑 eval 套件迭代 prompt 直到分数达标。

text
/goal eval 套件通过率达到 90%,
检查失败用例、改 prompt、重跑,不修改 eval 脚本本身

长循环的隐患:上下文失忆

即便有上下文压缩,模型在数小时跨度上也难以保持连贯。Chris 的解法是把思考状态外化到文件系统,维护三份 Markdown:

文件作用
PLAN.md高层计划,可预先写入种子思路
EXPERIMENTS.md结构化尝试记录:标题 / 做了什么 / 结果
EXPERIMENT_NOTES.md实时草稿本,按时间顺序的思考流水

EXPERIMENTS.md 最关键。它防止 Agent 在长循环中反复踩同一个坑。

启动前的三个自检

  1. 条件可度量:能用命令、数字或 checklist 表达吗?
  2. 验证够快:单轮反馈耗时能接受吗?超过 10 分钟考虑换代理数据集
  3. 状态已外化:EXPERIMENTS.md 准备好了吗?

三个都 OK,再敲 /goal

最后

/goal 对提示词工程提出了一个根本性的转变:普通 Chat 依赖模型善意理解,/goal 依赖你自己把需求工程做到位。代价是你必须在起跑前就把"完成"定义清楚。

分享: