Claude Code 自动化与排错

Claude Code 自动化与排错

目标模式(Goals)

1 分钟阅读

让 Claude 持续朝着一个目标努力

用 /goal 设定一个完成条件,Claude 会跨轮次持续工作,直到满足该条件。

/goal 需要 Claude Code v2.1.139 或更高版本。

/goal 命令会设定一个完成条件,Claude 会朝着它持续工作,而不需要你逐步提示每一轮。每轮结束后,一个小型的快速模型会检查该条件是否已经满足。如果没有,Claude 会开始下一轮,而不是把控制权交还给你。一旦条件满足,该目标会自动清除。

对于有可验证终态的实质性工作,请使用目标模式:

  • 将某个模块迁移到新 API,直到每个调用点都能编译通过且测试通过为止
  • 实现一份设计文档,直到所有验收标准都满足为止
  • 把一个大文件拆分成多个聚焦的模块,直到每个都在规模预算之内为止
  • 处理一份带标签的 issue 待办列表,直到队列清空为止

比较几种让会话持续运行的方式

三种方式都能让当前会话在多个提示词之间持续运行。根据什么应该启动下一轮来选择:

方式下一轮何时开始何时停止
/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 可以查看目前花费的轮次和 Token。

撰写有效的条件

评估器会根据 Claude 在对话中已经呈现的内容来判断你的条件。它不会独立运行命令或读取文件,因此请把条件写成 Claude 自己的输出就能证明的东西。“test/auth 中的所有测试都通过”是有效的,因为 Claude 会运行测试,其结果会出现在记录中供评估器读取。

一个能在多轮中都稳定生效的条件,通常具备:

  • 一个可衡量的终态:一次测试结果、一个构建退出码、一个文件数量、一个空队列
  • 一个明确说明的检查方式:Claude 应如何证明它,例如“npm test 退出码为 0”或“git status 是干净的”
  • 需要注意的约束条件:任何在达成过程中不能改变的内容,例如“不能修改任何其他测试文件”

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

要限定一个目标最长运行多久,可以在条件中加入一个轮次或时间从句,例如 or stop after 20 turns。Claude 会在每一轮报告相对于该从句的进展,评估器会从对话中判断它。

检查状态

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

/goal

如果有一个活动目标,该状态会显示:

  • 该条件
  • 它已经运行了多久
  • 已经评估了多少轮
  • 当前的 Token 花费
  • 评估器最近一次给出的原因

如果没有活动目标,但会话中之前已经达成过一个目标,该状态会显示已达成的条件,以及其持续时间、轮次数和 Token 花费。

清除一个目标

在其条件满足之前,运行 /goal clear 即可移除一个活动目标。

/goal clear

stopoffresetnonecancel 都可以作为 clear 的别名使用。运行 /clear 开始一个新对话,也会移除任何活动目标。

带着一个活动目标恢复会话

如果一个会话结束时目标仍处于活动状态,当你用 --resume--continue 恢复该会话时,这个目标会被恢复。条件会延续下来,但轮次数、计时器和 Token 花费基准都会在恢复时重置。一个已经达成或已清除的目标不会被恢复。

非交互式运行

/goal 可以在非交互模式桌面应用中,以及通过远程控制使用。用 -p 设置一个目标,会在单次调用中把这个循环运行到完成:

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

在条件满足之前,用 Ctrl+C 中断该进程即可停止一个非交互式目标。

评估的工作原理

/goal 是对一个会话范围的基于提示词的 Stop 钩子的包装。每次 Claude 完成一轮,该条件和目前为止的对话都会被发送给你配置的小型快速模型(默认是 Haiku)。该模型会返回一个是/否决定和一个简短的原因。“否”会告诉 Claude 继续工作,并将该原因作为下一轮的指导。“是”会清除该目标,并在记录中记下一条已达成的条目。

评估器会运行在你会话配置所使用的服务商上。它不会调用工具,因此只能判断 Claude 已经在对话中呈现出来的内容。

评估所消耗的 Token 会按照你为该服务商配置的小型快速模型计费,与主轮次的花费相比通常微不足道。

要求

/goal 只能在你已经接受信任对话框的工作区中运行,因为该评估器是钩子系统的一部分。当disableAllHooks 在任何设置级别被设置,或统一管理设置中设置了 allowManagedHooksOnly 时,/goal 也不可用。在这两种情况下,该命令都会告诉你原因,而不是悄悄地什么都不做。

另请参阅

博极客AI是专业人工智能学习平台,提供通俗易懂的AI入门教程、大模型应用、实战项目与行业动态,全站内容免费阅览,零基础也能轻松学AI,适配学生、职场新人及技术爱好者。

© 版权所有 2026 博极客AI,保留一切权利。 | 桂ICP备2026007205号-1 | 桂公网安备45010502001169号