是什么

/goal 命令设置一个完成条件,Claude 在每轮结束后由独立的小型模型评估条件是否满足,未满足则自动开始下一轮,直到条件成立。适合有明确可验证终态的实质性工作,无需用户手动触发每一步。需要 v2.1.139+。

核心机制

评估机制:每轮结束后,条件和对话历史发送给配置的小型快速模型(默认 Haiku),返回 yes/no 和原因。“no” 时将原因作为下一轮的指导,“yes” 时清除目标并记录完成。

与其他自主工作流的区别:

  • /goal:每轮结束后评估条件,条件满足时停止
  • /loop:按时间间隔触发,手动停止或 Claude 判断完成
  • Stop Hook:每轮结束后运行自定义脚本或 Prompt 判断

与 Auto Mode 互补:Auto Mode 消除单轮内的工具调用确认,/goal 消除轮次间的手动触发。两者结合实现完全自主运行。

有效条件的特征:

  • 一个可测量的终态(测试结果、构建退出码、文件数量)
  • 明确的验证方式(“npm test exits 0”)
  • 必要的约束条件(“不修改其他测试文件”)
  • 可选的边界条件(“或在 20 轮后停止”)

非交互式运行:

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

关键细节

  • 设置目标:/goal <condition>(立即开始第一轮)
  • 查看状态:/goal(显示条件、运行时长、轮次、token 消耗、最近评估原因)
  • 清除目标:/goal clear(别名:stop/off/reset/none/cancel)
  • 每个会话只能有一个活跃目标,新目标替换旧目标
  • 条件最长 4,000 字符
  • 评估 token 消耗极少,相对于主轮次可忽略不计

关联

实践要点

  • 条件要写成 Claude 的输出可以证明的形式,评估器不独立运行命令
  • 适合场景:模块迁移直到所有测试通过、按设计文档实现直到验收标准满足、处理 Issue 积压直到队列清空
  • 需要在已接受 workspace trust 的目录中使用(评估器是 Hooks 系统的一部分)
  • disableAllHooks 或 allowManagedHooksOnly 设置会导致 /goal 不可用
  • 会话恢复时(--resume)活跃目标会恢复,但轮次计数和 token 基线重置