SpyBara
Go Premium

goal.md 2026-05-10 23:03 UTC to 2026-05-11 23:00 UTC

138 added, 0 removed.

2026
Sun 31 06:39 Sat 30 06:23 Fri 29 06:38 Thu 28 06:37 Wed 27 06:42 Tue 26 06:33 Sun 24 06:25 Sat 23 06:18 Fri 22 06:33 Thu 21 06:36 Wed 20 06:35 Tue 19 06:34 Mon 18 23:59 Sun 17 01:01 Fri 15 22:58 Thu 14 17:02 Wed 13 23:01 Tue 12 22:57 Mon 11 23:00 Sun 10 23:03 Sat 9 04:57 Fri 8 22:00 Thu 7 22:59 Tue 5 23:00 Mon 4 22:58 Sat 2 18:14 Fri 1 18:19

让 Claude 朝着目标工作

使用 /goal 设置完成条件,Claude 会在多个回合中持续工作,直到条件满足。

/goal 命令设置一个完成条件,Claude 会在没有你逐步提示的情况下持续朝着这个目标工作。每个回合后,一个小型快速模型会检查条件是否满足。如果不满足,Claude 会开始另一个回合,而不是将控制权返回给你。一旦条件满足,目标会自动清除。

对于具有可验证的最终状态的实质性工作,使用目标:

  • 将模块迁移到新 API,直到每个调用站点都能编译并通过测试
  • 实现设计文档,直到所有验收标准都满足
  • 将大文件拆分为专注的模块,直到每个模块都在大小预算内
  • 处理标记的问题积压,直到队列为空

本页涵盖以下内容:

比较其他自主工作流

三种方法可以在提示之间保持当前会话运行。根据应该启动下一个回合的内容进行选择:

方法 下一个回合何时开始 停止条件
/goal 前一个回合完成时 模型确认条件已满足
/loop 时间间隔过去时 你停止它,或 Claude 决定工作完成
Stop hook 前一个回合完成时 你自己的脚本或提示决定

/goal 和 Stop hook 都在每个回合后触发。/goal 是一个会话范围的快捷方式:你输入一个条件,它仅在当前会话中活跃。Stop hook 存在于你的设置文件中,适用于其范围内的每个会话,可以运行脚本进行确定性检查或运行提示进行模型评估的检查。

自动模式本身在单个回合内批准工具调用,但不会启动新的回合。Claude 在判断工作完成时停止。/goal 添加了一个单独的评估器,在每个回合后检查你的条件,因此完成由一个新鲜的模型而不是执行工作的模型决定。这两者是互补的:自动模式消除了每个工具的提示,/goal 消除了每个回合的提示。

使用 /goal

每个会话可以有一个活跃的目标。同一命令根据参数设置、检查和清除它。

设置目标

运行 /goal 后跟你想要满足的条件。如果已经有一个活跃的目标,新目标会替换它。

/goal all tests in test/auth pass and the lint step is clean

设置目标会立即启动一个回合,条件本身作为指令。你不需要发送单独的提示。当目标活跃时,◎ /goal active 指示器显示目标已运行多长时间。

每个回合后,评估器返回一个简短的原因,解释条件是否满足。最近的原因出现在状态视图和记录中,所以你可以看到 Claude 接下来要朝着什么工作。

编写有效的条件

评估器根据 Claude 在对话中呈现的内容来判断你的条件。它不会独立运行命令或读取文件,所以将条件写成 Claude 自己的输出可以演示的内容。"所有 test/auth 中的测试都通过"之所以有效,是因为 Claude 运行测试,结果出现在记录中供评估器读取。

在许多回合中保持的条件通常具有:

  • 一个可测量的最终状态:测试结果、构建退出代码、文件计数、空队列
  • 一个陈述的检查:Claude 应该如何证明它,例如"npm test 退出 0"或"git status 是干净的"
  • 重要的约束:在此过程中必须不改变的任何内容,例如"没有其他测试文件被修改"

条件最多可以是 4,000 个字符。

要限制目标运行的时间,在条件中包含一个回合或时间子句,例如 or stop after 20 turns。Claude 每个回合都会针对该子句报告进度,评估器从对话中判断它。

检查状态

运行不带参数的 /goal 可以查看当前状态。

/goal

如果目标活跃,状态显示:

  • 条件
  • 已运行多长时间
  • 已评估多少个回合
  • 当前令牌支出
  • 评估器最近的原因

如果没有活跃的目标,但在会话早期实现了一个目标,状态显示已实现的条件及其持续时间、回合计数和令牌支出。

清除目标

运行 /goal clear 可以在条件满足之前移除活跃的目标。

/goal clear

stopoffresetnonecancel 被接受为 clear 的别名。运行 /clear 启动新对话也会移除任何活跃的目标。

使用活跃目标恢复

当会话结束时仍然活跃的目标会在你使用 --resume--continue 恢复该会话时恢复。条件会保留,但回合计数、计时器和令牌支出基线在恢复时都会重置。已经实现或清除的目标不会恢复。

非交互式运行

/goal非交互式模式和通过远程控制中工作。使用 -p 设置目标会在单个调用中运行循环至完成:

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

使用 Ctrl+C 中断进程以在条件满足之前停止非交互式目标。

评估如何工作

/goal 是会话范围的基于提示的 Stop hook的包装器。每次 Claude 完成一个回合时,条件和到目前为止的对话都会发送到你配置的小型快速模型,默认为 Haiku。模型返回一个是或否的决定和一个简短的原因。"否"告诉 Claude 继续工作,并包括原因作为下一个回合的指导。"是"清除目标并在记录中记录一个已实现的条目。

评估器在你的会话配置的任何提供商上运行。它不调用工具,所以它只能判断 Claude 已经在对话中呈现的内容。

要求

/goal 仅在你已接受信任对话框的工作区中运行,因为评估器是 hooks 系统的一部分。如果在托管策略设置中设置了 disableAllHooks/goal 不可用。在这两种情况下,命令会告诉你原因,而不是默默地什么都不做。

另请参阅