文档索引
在此获取完整文档索引:https://code.claude.com/docs/llms.txt 使用此文件发现所有可用页面,然后再进一步探索。
让 Claude 持续朝目标工作
使用 /goal 设置完成条件,Claude 会持续工作直到条件满足。
/goal 需要 Claude Code v2.1.139 或更高版本。
/goal 命令设置一个完成条件,Claude 会持续朝该目标工作,无需您每步都提示。每轮结束后,一个小型快速模型会检查条件是否成立。如果不成立,Claude 会开始新一轮而不是将控制权返回给您。条件满足后目标自动清除。
对于具有可验证最终状态的大量工作使用目标:
- 将模块迁移到新 API 直到每个调用点编译通过且测试通过
- 实现设计文档直到所有验收标准成立
- 将大文件拆分为专注的模块直到每个文件在大小预算内
- 处理标记的问题积压直到队列为空
本页涵盖如何:
与其他自主工作流的比较
三种方法在提示之间保持当前会话运行。根据什么应该开始下一轮来选择:
| 方法 | 下一轮开始时机 | 停止时机 |
|---|---|---|
/goal | 上一轮结束时 | 模型确认条件已满足 |
/loop | 时间间隔过去后 | 您停止它,或 Claude 决定工作已完成 |
| Stop 钩子 | 上一轮结束时 | 您自己的脚本或提示决定 |
/goal 和 Stop 钩子都在每轮后触发。/goal 是会话范围的快捷方式:您输入条件,它仅对当前会话有效。Stop 钩子存在于您的设置文件中,适用于其范围内的每个会话,并且可以运行脚本进行确定性检查或运行提示进行模型评估。
自动模式 本身在单轮内批准工具调用但不会开始新一轮。当 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
stop、off、reset、none 和 cancel 作为 clear 的别名被接受。运行 /clear 开始新对话也会移除任何活跃目标。
恢复活跃目标
会话结束时仍然活跃的目标会在您使用 --resume 或 --continue 恢复该会话时恢复。条件会延续,但轮次计数、计时器和令牌花费基线都会在恢复时重置。已达成或已清除的目标不会恢复。
非交互式运行
/goal 在非交互模式、桌面应用和远程控制中工作。使用 -p 设置目标会在单次调用中运行循环直到完成:
claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"
使用 Ctrl+C 中断进程以在条件满足前停止非交互式目标。
评估工作原理
/goal 是会话范围基于提示的 Stop 钩子的包装器。每次 Claude 完成一轮时,条件和到目前为止的对话会被发送到您配置的小型快速模型,默认为 Haiku。模型返回是或否的决定和简短原因。"否"告诉 Claude 继续工作,并将原因作为下一轮的指导。"是"清除目标并在会话记录中记录已达成条目。
评估器在您的会话配置的提供商上运行。它不调用工具,因此只能判断 Claude 在对话中已经呈现的内容。
评估令牌按您提供商配置的小型快速模型计费,通常与主要轮次花费相比可以忽略不计。
要求
/goal 仅在您已接受信任对话框的工作区中运行,因为评估器是钩子系统的一部分。当在任何设置级别设置了 disableAllHooks 或在托管设置中设置了 allowManagedHooksOnly 时,/goal 也不可用。在每种情况下,命令会告诉您原因而不是静默不执行。
另请参阅
- 使用
/loop重复运行提示:按时间间隔重新运行而不是直到条件成立 - 基于提示的钩子:当您需要自定义评估逻辑时编写自己的 Stop 钩子
- 自动模式:自动批准工具调用,以便每个目标轮次无人值守运行
- 调度比较:独立于任何打开会话按计划运行工作