goal:达标命令
2026 年 5 月,Anthropic 在 Claude Code 2.1.139 中加入 /goal 命令。
这个命令面向 AI 编程里的长任务执行:用户先写下一个可验收的完成条件,Claude Code 随后跨多个 turn 持续工作;每轮结束后,由独立评估模型判断目标是否达成,没达成就继续,达成后自动停止。
我把 /goal 翻译成「达标命令」。它的关键不在“设目标”,而在“按标准验收并自动续跑”。
这也是 Claude Code 对 Codex /goal 的一次正面回敬:AI Coding 工具的竞争,正在从「单轮回答质量」转向「长任务能否自己跑完」。
长任务有了完成条件
/goal 解决的是一个很具体的问题:AI Agent 能写代码、能跑命令、能修 bug,但长任务经常需要人反复接力。
比如测试没过,你要说「继续修」;lint 又挂了,你要说「再跑一遍」;改完一处漏了另一处,你还要把它拉回来。
/goal 把这件事变成了一个明确流程:
- 用户写下完成条件
- Claude Code 开始执行
- 每一轮结束后自动评估
- 没达标就继续下一轮
- 达标后自动停止
它适合那种不是一轮对话就能完成的任务,比如:
- 把一个模块迁移到新 API,直到所有调用点都能编译,测试全部通过
- 按设计文档实现功能,直到所有验收标准都成立
- 拆分一个过大的文件,直到每个文件都小于指定行数
- 处理一组带标签的问题,直到队列清空
所以 /goal 更像是给 Claude Code 加了一个「验收驱动」的执行模式。你不用一直盯着它有没有跑完,只要先把什么叫“完成”说清楚。
一条命令开始续跑
最基础的用法就是在 Claude Code 里输入 /goal,后面跟上完成条件:
/goal all tests in test/auth pass and the lint step is clean
如果当前 session 里已经有一个 goal,再输入新的 /goal 会替换旧目标。
设置后,Claude 会立刻开始下一轮工作,不需要你再单独补一句「开始吧」。运行中界面会出现 ◎ /goal active 状态提示,显示已经运行多久、经历了多少轮、消耗了多少 token。
运行过程中,如果想看当前进度,直接输入:
/goal
可以查看当前目标状态,包括目标内容、运行时间、评估轮次、token 消耗和最近一次评估理由。
如果想提前停止,用:
/goal clear
stop、off、reset、none、cancel 也都可以作为 clear 的别名。
如果 session 结束时 goal 还没完成,下次用 --resume 或 --continue 恢复会话时,这个 goal 会自动恢复。目标条件会保留,但轮次、计时和 token 统计会重新开始。
它也支持非交互模式:
claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"
这意味着 /goal 不只是一个聊天界面的快捷命令,它可以被放进自动化流程里,变成一种「跑到条件满足为止」的执行模式。
目标要能被验收
/goal 的效果,很大程度取决于目标写得好不好。
太虚的目标,比如「优化一下代码质量」「把体验做好一点」,很容易让 Agent 产出一堆东西,却没有办法判断是否真的完成。
更好的写法,是把目标写成可验收的条件。通常包含三件事:
- 一个可衡量的终态,比如测试结果、构建退出码、文件数量、空队列
- 一个明确的验证方式,比如
npm test退出码为 0,或者git status干净 - 一个不能破坏的约束,比如不要修改其他测试文件,不要引入新的依赖
比如下面这个目标,就比「优化 auth 模块」更适合交给 /goal:
test/auth 下所有测试通过,pnpm lint 退出码为 0,不修改 test/payment 下的任何文件;如果 8 轮后仍未完成,停止并总结剩余问题。
它有终态,有验证方式,也有边界。
目标条件最长支持 4000 个字符。如果你担心它一直跑,可以把「最多运行多少轮」直接写进目标里。评估模型每轮都会根据对话内容判断这个限制是否触发。
这里有一个细节要注意:负责评估的模型不会自己跑命令,也不会独立读取文件。它只能根据 Claude 在对话里展示出来的内容判断目标是否达成。
所以,目标条件最好要求 Claude 展示验证结果。比如「所有测试通过」是可判断的,因为 Claude 会跑测试并展示结果;但「代码质量明显提升」就太模糊了。
为什么它能自己停下
/goal 最有意思的地方,不是循环,而是「裁判分离」。
很多 Agent 循环的问题在于,干活的模型同时也是验收的模型。它很容易把「我写了代码」误判成「我完成了需求」,也容易把「测试过了一部分」理解成「任务已经足够接近完成」。
Claude Code 这次把执行和验收拆开了:每一轮 Claude 做完之后,系统会把目标条件和当前对话交给一个小而快的评估模型,默认是 Haiku。
评估模型只做一件事:判断目标是否满足,并给出简短理由。
如果答案是 no,这个理由会被反馈给主模型,指导下一轮继续修。如果答案是 yes,goal 自动清除,并在 transcript 里记录完成结果。
从机制上看,/goal 本质上是一个 session 级别的 prompt-based Stop hook 封装。
也就是说,它不是全新的魔法,而是把原本可以用 Stop hook 自己搭出来的「每轮结束后评估、没达标就继续」包装成了一个内置命令。
这也解释了它和 /loop、Stop hook、auto mode 的关系:
| 方式 | 下一轮何时开始 | 何时停止 |
|---|---|---|
/goal | 上一轮结束后 | 独立模型确认条件达成 |
/loop | 定时间隔触发 | 你手动停,或 Claude 自己认为完成 |
| Stop hook | 上一轮结束后 | 你自己的脚本或 prompt 决定 |
| auto mode | 不开启下一轮,只自动批准当前轮工具调用 | 当前轮 Claude 判断完成 |
所以 /goal 和 auto mode 是互补关系。
auto mode 解决「每次工具调用都要点确认」的问题,/goal 解决「每轮结束都要我手动续一句」的问题。两个配合起来,才更接近真正的无人值守长任务。
可以用在哪些场景
我觉得 /goal 最适合三类任务。
第一类是可测试的修复任务。比如某个模块测试挂了,目标可以写成「指定测试全部通过,lint 干净,不改无关目录」。这类任务的验收标准最清楚。
第二类是批量迁移任务。比如把一批 API 从旧调用迁到新调用,目标可以写成「所有旧 API 引用清零,构建通过,迁移说明写入文档」。这类任务需要多轮搜索、修改、验证,正适合 goal。
第三类是文档整理任务。比如把最近一周 changelog、PR、issue 整理成表格,要求每条都有来源链接。这类任务风险低,但步骤多,适合作为第一次试水。
如果让我选一个测试场景,我会先选第三类:整理 Claude Code 最近更新。
原因很简单:文档任务不会破坏代码仓库,验收标准也容易写清楚。
我会这样写 goal:
/goal 新建一份 Claude Code 最近更新摘要,要求:
1. 只覆盖官方 changelog 最新版本 2.1.139;
2. 按「新增能力」「体验改进」「修复问题」三类整理;
3. 每条都保留英文关键词,方便回查;
4. 文章末尾写出数据来源链接;
5. 最终输出前展示引用来源和整理后的 Markdown。
这个目标有几个好处:
- 终态明确:必须产出一份更新摘要
- 验证方式明确:能看到 Markdown,能看到来源链接
- 风险低:不改业务代码
- 适合观察
/goal的循环能力:如果第一次整理漏了分类,评估模型应该会要求继续补
我本机目前的 Claude Code 版本是:
2.1.71 (Claude Code)
而 /goal 是 2.1.139 引入的功能,所以这次没有在本机真实跑完整 goal。这个数据反而提醒了我一件事:写这类文章时,最好先把「版本条件」写清楚。
如果升级到 2.1.139 后复测,我会重点看三项数据:
- 实际跑了几轮才停止
- 主模型 token 和评估模型 token 各自消耗多少
- 评估理由是否真的能纠偏,而不是只是在说「继续」
从官方设计看,我对它的预期是:简单任务不会显著提升效率,但长任务会减少很多「你继续」「再跑一次测试」「把遗漏补上」这种人工续航成本。
也就是说,/goal 的价值不是让 Claude 更聪明,而是让 Claude 更能坚持。
最近 Claude Code 更新
截至 2026-05-12,官方 changelog 最新版本是 2.1.139。这一版除了 /goal,还包括这些更新:
- 新增 Agent View 研究预览:通过
claude agents查看所有会话,包括运行中、等待你回复、已经完成的会话 - 新增
/goal:设置完成条件,Claude 跨 turn 持续工作直到满足条件,支持交互模式、-p和 Remote Control,并显示运行时间、轮次、token 消耗 - 新增
/scroll-speed:调整鼠标滚轮速度,并提供实时预览 - 新增
claude plugin details <name>:查看插件组件清单和预计每个 session 的 token 成本 - transcript view 增加快捷导航:
?查看快捷键,{/}在用户 prompt 间跳转,v切换快捷键面板 - hook 新增
args: string[]exec 形式:可以不经过 shell 直接启动命令,减少路径和引号问题 PostToolUsehook 新增continueOnBlock:被 hook 拦截后,可以把拒绝理由反馈给 Claude 并继续当前 turn- MCP stdio server 现在会收到
CLAUDE_PROJECT_DIR环境变量,插件配置也能在命令里引用${CLAUDE_PROJECT_DIR} - compaction prompt 现在会要求模型保留敏感的用户指令
/mcpReconnect 会读取.mcp.json的最新修改,失败时显示 HTTP 状态和 URL- 修复凭证过期导致
claude auth login/logout/status死锁的问题 - 修复 HTTP/SSE MCP server 流式输出非协议数据导致内存增长的问题,单个 SSE frame 响应体现在限制为 16MB
- 修复深色主题下链接颜色过暗的问题
- 修复 Windows、VS Code、Cursor、终端滚动、CJK/emoji 显示、diff 统计、MCP autocomplete 等一批体验问题
资料来源:
- Claude Code
/goal官方文档:https://code.claude.com/docs/en/goal - Claude Code changelog:https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#21139