{/* TRANSLATED — 已翻译为中文 */}

> ## 文档索引
> 在此获取完整文档索引：https://code.claude.com/docs/llms.txt
> 使用此文件发现所有可用页面，然后再进一步探索。

# 让 Claude 持续朝目标工作

> 使用 /goal 设置完成条件，Claude 会持续工作直到条件满足。

<Note>
  `/goal` 需要 Claude Code v2.1.139 或更高版本。
</Note>

`/goal` 命令设置一个完成条件，Claude 会持续朝该目标工作，无需您每步都提示。每轮结束后，一个小型快速模型会检查条件是否成立。如果不成立，Claude 会开始新一轮而不是将控制权返回给您。条件满足后目标自动清除。

对于具有可验证最终状态的大量工作使用目标：

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

本页涵盖如何：

* [比较自主工作流方法](#compare-to-other-autonomous-workflows)：`/loop`、Stop 钩子和自动模式
* [设置目标](#set-a-goal)和[编写有效条件](#write-an-effective-condition)
* [检查状态](#check-status)、[提前清除](#clear-a-goal)和[非交互式运行](#run-non-interactively)
* 了解[评估工作原理](#how-evaluation-works)和[要求](#requirements)

## 与其他自主工作流的比较

三种方法在提示之间保持当前会话运行。根据什么应该开始下一轮来选择：

| 方法                                                                | 下一轮开始时机           | 停止时机                                            |
| :------------------------------------------------------------------ | :----------------------- | :-------------------------------------------------- |
| `/goal`                                                             | 上一轮结束时             | 模型确认条件已满足                                  |
| [`/loop`](/en/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop) | 时间间隔过去后           | 您停止它，或 Claude 决定工作已完成                  |
| [Stop 钩子](/en/hooks-guide#prompt-based-hooks)                     | 上一轮结束时             | 您自己的脚本或提示决定                              |

`/goal` 和 Stop 钩子都在每轮后触发。`/goal` 是会话范围的快捷方式：您输入条件，它仅对当前会话有效。Stop 钩子存在于您的设置文件中，适用于其范围内的每个会话，并且可以运行脚本进行确定性检查或运行提示进行模型评估。

[自动模式](/en/auto-mode-config) 本身在单轮内批准工具调用但不会开始新一轮。当 Claude 判断工作完成时会停止。`/goal` 添加了一个单独的评估器，在每轮后检查您的条件，因此完成是由新的模型而非正在工作的模型决定的。两者互补：自动模式消除每工具提示，`/goal` 消除每轮提示。

<Tip>
  上述方法保持当前会话运行。您还可以安排独立于任何打开会话运行的工作，如每晚测试或早晨分类。请参阅[调度选项](/en/scheduled-tasks#compare-scheduling-options)了解云例程和桌面计划任务。
</Tip>

## 使用 `/goal`

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

### 设置目标

运行 `/goal` 后跟您想要满足的条件。如果已有活跃目标，新的目标会替换它。

```text theme={null}
/goal all tests in test/auth pass and the lint step is clean
```

设置目标会立即开始一轮，条件本身作为指令。您不需要发送单独的提示。目标活跃时，`◎ /goal active` 指示器显示目标已运行多长时间。

每轮结束后，评估器返回一个简短原因，解释条件是否满足。最近的原因显示在状态视图和会话记录中，以便您了解 Claude 接下来要做什么。

<Note>
  目标会持续运行直到条件满足或您运行 `/goal clear`。不带参数运行 `/goal` 查看已花费的轮次和令牌。
</Note>

### 编写有效条件

[评估器](#how-evaluation-works)根据 Claude 在对话中呈现的内容来判断您的条件。它不会独立运行命令或读取文件，因此将条件编写为 Claude 自己的输出可以证明的内容。"`test/auth` 中的所有测试通过"是有效的，因为 Claude 运行测试，结果落入会话记录供评估器读取。

跨多轮成立的条件通常具有：

* **一个可衡量的最终状态**：测试结果、构建退出代码、文件计数、空队列
* **声明的检查方式**：Claude 应如何证明，例如 "`npm test` 退出码为 0" 或 "`git status` 是干净的"
* **重要的约束**：在此过程中不能更改的任何内容，例如"不修改其他测试文件"

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

要限制目标运行时间，请在条件中包含轮次或时间子句，例如 `or stop after 20 turns`。Claude 每轮报告该子句的进度，评估器从对话中判断。

### 检查状态

不带参数运行 `/goal` 查看当前状态。

```text theme={null}
/goal
```

如果有活跃目标，状态显示：

* 条件
* 已运行多长时间
* 已评估多少轮
* 当前令牌花费
* 评估器的最近原因

如果没有活跃目标但在会话中较早达成了一个目标，状态会显示已达成的条件及其持续时间、轮次计数和令牌花费。

### 清除目标

运行 `/goal clear` 在条件满足前移除活跃目标。

```text theme={null}
/goal clear
```

`stop`、`off`、`reset`、`none` 和 `cancel` 作为 `clear` 的别名被接受。运行 `/clear` 开始新对话也会移除任何活跃目标。

### 恢复活跃目标

会话结束时仍然活跃的目标会在您使用 `--resume` 或 `--continue` 恢复该会话时恢复。条件会延续，但轮次计数、计时器和令牌花费基线都会在恢复时重置。已达成或已清除的目标不会恢复。

### 非交互式运行

`/goal` 在[非交互模式](/en/headless)、[桌面应用](/en/desktop)和[远程控制](/en/remote-control)中工作。使用 `-p` 设置目标会在单次调用中运行循环直到完成：

```bash theme={null}
claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"
```

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

## 评估工作原理

`/goal` 是会话范围[基于提示的 Stop 钩子](/en/hooks#prompt-based-hooks)的包装器。每次 Claude 完成一轮时，条件和到目前为止的对话会被发送到您配置的[小型快速模型](/en/model-config)，默认为 Haiku。模型返回是或否的决定和简短原因。"否"告诉 Claude 继续工作，并将原因作为下一轮的指导。"是"清除目标并在会话记录中记录已达成条目。

评估器在您的会话配置的提供商上运行。它不调用工具，因此只能判断 Claude 在对话中已经呈现的内容。

<Note>
  评估令牌按您提供商配置的小型快速模型计费，通常与主要轮次花费相比可以忽略不计。
</Note>

## 要求

`/goal` 仅在您已接受信任对话框的工作区中运行，因为评估器是钩子系统的一部分。当在任何设置级别设置了 [`disableAllHooks`](/en/hooks#disable-or-remove-hooks) 或在托管设置中设置了 [`allowManagedHooksOnly`](/en/settings#hook-configuration) 时，`/goal` 也不可用。在每种情况下，命令会告诉您原因而不是静默不执行。

## 另请参阅

* [使用 `/loop` 重复运行提示](/en/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop)：按时间间隔重新运行而不是直到条件成立
* [基于提示的钩子](/en/hooks-guide#prompt-based-hooks)：当您需要自定义评估逻辑时编写自己的 Stop 钩子
* [自动模式](/en/auto-mode-config)：自动批准工具调用，以便每个目标轮次无人值守运行
* [调度比较](/en/scheduled-tasks#compare-scheduling-options)：独立于任何打开会话按计划运行工作
