一句话:/goal 设定一个"完成条件",Claude 会跨多个 turn 自主干活,直到条件满足才停——不用你每轮手动指挥。

1. 是什么

/goal 是 Claude Code 的会话级自动化命令(v2.1.139 起引入)。默认模式下,你给一条指令,Claude 干完一轮就停下来等你;/goal 则是给 AI 一个可验收的"终点",让它自己一轮轮推进,直到终点达成。

模式 停下的时机 谁来判定
默认(单条指令) 一轮干完就停 无判定,等你下一步
Skill 模型按指令执行完 模型自己
/goal 完成条件满足才停 独立评估器

“不干完不罢休"的"不罢休”,靠的不是模型自觉,而是每轮一个独立评估器在验收。

2. 原理:做事与验收分离

/goal 的核心机制是一个"干活的 + 验收的"双角色循环:

  1. 你执行 /goal <完成条件>,条件本身就是要达成的目标
  2. Claude 开始干活(一轮 = 一次完整推进)
  3. 每完成一轮,系统把「你的条件 + 到目前为止的对话记录」发给一个独立的小型快速评估模型(默认 Haiku),判断条件是否满足
  4. 不满足 → 评估器返回具体原因(如"test_login.py 还有 2 个 failure")→ 这个原因注入下一轮上下文 → 继续干
  5. 满足 → 目标自动清除,任务结束

关键设计:做事的人和验收的人不是同一个模型,避免"自己判自己"的偏差——这跟代码评审要独立于实现是同一个道理。

评估器本身不调工具、不读文件、不跑命令,只依据对话里已经呈现的内容判断——这一点直接决定了条件该怎么写(见第 6 节)。

3. 命令与用法

命令 作用
/goal <条件> 设定目标(新目标会替换旧目标)
/goal(不带参数) 查看状态:条件、耗时、已评估轮数、token 消耗、评估器最新原因
/goal clear 在条件满足前手动清除(stop / off / reset / none / cancel 均为别名)

运行时以浮层面板实时显示:已耗时 / turn 数 / token 数

可用场景:交互式会话、-p(headless 单次)、Remote Control。

4. 实战操作

4.1 迁移模块,直到所有调用点编译通过

/goal 把 foo 模块迁移到新 API,直到整个项目编译通过,且 npm test 全部通过。不要改动其他模块的对外接口。

4.2 修复类型错误,直到零报错

/goal 修复所有 TypeScript 类型错误,直到 tsc --noEmit 零报错。不要引入 any 绕过类型检查。

4.3 实现设计文档,直到验收标准全满足

/goal 按 design.md 实现功能,直到其中列出的验收标准全部满足。不要改动 design.md 本身。

4.4 清理 issue 积压,直到队列清空

/goal 逐个处理标记为 fix-me 的 TODO,直到代码库里没有剩余的 fix-me。

5. 编写有效目标的三要素

一个能收敛的好目标,通常含三部分:

要素 说明 反例 → 正例
可测量的终态 测试结果、构建退出码、文件数、空队列等 “优化代码” → “npm test 退出 0”
明确的检查方式 让终态在对话里可被看到 “让代码更好” → “tsc --noEmit 零报错”
重要约束 过程中不能动的东西 — → “不改其他测试文件”

模糊目标(“优化一下代码”)会让循环无法收敛,变成昂贵的死循环——因为评估器永远判"不够好"。

6. 重要限制

  • 评估器不调工具、不读文件、不跑命令:只依据对话里呈现的内容判断。所以条件必须写成"Claude 自己的输出能证明的东西"——比如"所有 test/auth 测试通过",因为测试结果会出现在记录里;而"代码质量很高"这类就没法被验证。
  • 条件最长 4000 字符:够写清终态 + 检查方式 + 约束,但别写成一篇文章。
  • 不改变权限:默认权限模式下仍会逐次询问工具调用;想无人值守,配合 auto mode 使用。
  • 加熔断:可在条件里追加"20 轮内完成否则停止",避免跑飞。

7. 与 /loop、Stop hook、auto mode 的区别

机制 触发 / 停止方式 定位
/goal 每轮结束由评估器确认条件满足才停 “盯着条件,不达成不罢休”
/loop 按固定时间间隔重复执行 "定个闹钟"式的周期重复
Stop hook 存于配置文件,由你的脚本 / 提示决定是否停 旁路脚本控制
auto mode 只在单轮内自动批准工具,不开新轮次 消除"每步"的提示

/goal 与 auto mode 是互补关系:auto mode 消除每步的工具提示,/goal 消除每轮的提示。

8. 如何调试

  • 目标卡住不收敛 → 先 /goal clear 停掉,把条件写具体(补"检查方式"和"约束")
  • 想知道评估器为什么一直不满足 → /goal(不带参)看"评估器最新原因"
  • 评估器不给具体原因 → 说明条件里没有"对话里可判断的证据",补上可测量的终态
  • 设了 disableAllHooks / allowManagedHooksOnly 时若 /goal 挂起,属早期版本 bug(2.1.x 已修),升级即可
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐