命令字典
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
设置目标使Claude持续工作直到条件满足
/goal [condition|clear]/goal 是 Claude Code 的会话内 slash 命令,用于设置一个完成条件,让 Claude 在无需你逐轮提示的情况下持续工作,直到该条件被一个独立的评估模型确认满足为止。
本质上,/goal 是一个会话级的 prompt-based Stop hook 的封装。每轮结束后,条件文本和当前对话上下文会被发给一个小型快速模型(默认为 Haiku),由它返回 yes/no 决策。"no"让 Claude 继续下一轮;"yes"自动清除目标并在 transcript 中记录 achieved 条目。
版本要求: Claude Code v2.1.139 或更高版本。
/goal [condition]
condition 即完成条件,最长 4,000 字符。命令发出后立刻触发第一轮,无需再单独发消息。会话中会显示 ◎ /goal active 指示器,带有已运行时长。
/goal all tests in test/auth pass and the lint step is clean
/goal CHANGELOG.md has an entry for every PR merged this week or stop after 20 turns
每个会话只能有一个活跃目标。再次运行 /goal [新条件] 会替换当前目标。
/goal
无参数时显示:条件文本、已运行时长、已评估轮数、当前 token 消耗、评估器最新理由。若本轮会话中曾达成过一个目标(已 achieved),也会显示该目标的历史数据。
/goal clear
stop、off、reset、none、cancel 均为 clear 的别名。运行 /clear(开启新对话)也会同时清除当前目标。
claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"
-p 模式下 goal loop 会跑到完成条件满足为止,一次调用自动结束。Ctrl+C 可中断。
同样支持 desktop app 和 Remote Control。
claude --resume
claude --continue
使用 --resume 或 --continue 恢复会话时,未完成的目标条件会一并恢复。但轮数计数、计时器、token 消耗基线均重置。已达成或已清除的目标不会恢复。
评估器只读 transcript,不执行命令也不读文件,因此条件必须能被 Claude 自身的输出所证明。
好的条件通常包含三个要素:
| 要素 | 示例 |
|---|---|
| 一个可度量的终态 | "所有测试通过"、"git status 是 clean" |
| 明确的验证方式 | "npm test exit 0"、"go build ./... 无错误" |
| 边界约束(防止跑偏) | "不修改任何其他测试文件" |
加轮数/时间上限防止无限消耗:官方支持在条件末尾追加一个 turn-or-time 子句,官方给出的示例语法为 or stop after 20 turns。
| 约束 | 原因 |
|---|---|
| 需要已接受信任对话框(trusted workspace) | 评估器依赖 hooks 系统 |
disableAllHooks 设置为任意级别时不可用 | goal 本身是一个 Stop hook |
allowManagedHooksOnly(管控设置)启用时不可用 | 同上 |
| 每会话只能有一个活跃目标 | 新目标会替换旧目标 |
| 条件最长 4,000 字符 | 官方文档限制 |
| 评估器无法运行工具或读取文件 | 只判断已出现在 transcript 中的内容 |
被阻断时命令会明确告知原因,不会静默失败。
| 方式 | 下一轮触发时机 | 停止条件 |
|---|---|---|
/goal | 上一轮结束后立即 | 模型确认条件满足 |
/loop | 指定时间间隔到 | 手动停止,或 Claude 自判完成 |
| Stop hook | 上一轮结束后立即 | 你自己的脚本或 prompt 决定 |
/goal 与 auto mode 是互补关系:auto mode 消除每个工具调用的审批提示(单轮内),/goal 消除每轮之间的手动触发(跨轮)。两者可同时使用。
以下场景直接来自官方文档示例:
条件太模糊导致无限循环 — "代码更好了"这类条件评估器无法判断;应写成可被 Claude 输出直接证明的断言。没有硬性 token 上限,模糊条件会持续消耗费用。
评估器看不到 Claude 没有打印的内容 — 如果 Claude 只说"我认为测试通过了"而没有运行并输出测试结果,评估器判定不满足。条件必须要求 Claude 执行并回显验证命令的输出。
hooks 被禁用时静默失败 — 实际上不静默:命令会明确报错说明是 disableAllHooks 还是 allowManagedHooksOnly 阻止了它,但如果你不知道这个依赖关系会感到困惑。
resume 后计数重置 — 用 --resume 恢复会话后轮数和 token 计数从 0 开始,不是续接之前的数字,不要用这个数据做预算评估。