跳转到主要内容

Documentation Index

Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

/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 接下来要朝着什么工作。
目标会一直运行,直到条件满足或你运行 /goal clear。运行不带参数的 /goal 可以查看到目前为止花费的回合和令牌。

编写有效的条件

评估器根据 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 时,或当在托管设置中设置了 allowManagedHooksOnly 时,/goal 也不可用。在每种情况下,命令会告诉你原因,而不是默默地什么都不做。

另请参阅