← 返回全部文章
实战指南 · 2026年6月4日 · 9 分钟阅读

Claude Code 的 /loop 详解:它和 routines、hooks、Goal Mode 到底不同在哪

过去 3 周,一个变化悄悄收敛了:每个主流编程 agent,现在都有办法表达一句话:“过一会儿替我再做一次,不用我盯着。” Claude Code/loop 和云端例程。Cursor 3.5 发了一个 skill,名字也直白地叫 /loop(May 20)。GitHub Copilot 的 CLI 加了 /every/after(June 2,仍处实验阶段)。Google 的 Antigravity 2.0 在发布功能里列出了“用于后台自动化的定时任务”

同样的 5 步,同样的重复执行原语——趋同又来了。本文做两件事:先讲清 Claude Code/loop 实际怎么工作(它是这一组里文档最完整的,而且有几条被反复转述的说法是错的);然后把整族能力放到一张地图上,因为所谓“再跑一次”,其实是 4 个问题披着同一件外套。

90 秒看懂 /loop

/loop 是一个内置 skill(在 Claude Code v2.1.71 加入;文档列出的最低版本是 v2.1.72),会在当前会话内部重复运行一个 prompt:同一段对话、同一份上下文、同一台机器。直接看文档里的 3 种形式:

你输入会发生什么
/loop 5m check the deployprompt 按固定时间表运行
/loop check the deployprompt 在每一轮按 Claude 自行选择的间隔运行
/loop运行内置维护 prompt——如果存在 loop.md,就运行你的 loop.md

实践里真正重要的是这些细节:

  • 间隔可以写在前面(30m),也可以写在后面(“every 2 hours”);单位是 s/m/h/d。秒级间隔会上取整到 1 分钟(cron 粒度),而像 7m90m 这类不规整的间隔,会被舍入到最接近的干净 cron 步长——Claude 会告诉你它最后选了什么。
  • prompt 也可以是另一个命令。 /loop 20m /review-pr 1234 会在每一轮重跑一个已保存的 skill 或 slash command。这就是组合技巧:任何你已经封装成命令的东西,都可以被排进定时重跑。
  • 停止方式: 在 loop 等待时按 Esc,待触发的下一次唤醒会被清掉。有个细节值得知道:如果你是通过直接要求 Claude安排任务(底层 cron tools)创建的定时任务,Esc 不会影响它们——这些任务会一直保留,直到被删除。
  • 所有任务都会在 7 天后过期。 一项重复任务会“最后触发一次,然后删除自己”。你会在不少博客里看到“3 天”的说法;官方文档写的是 7 天。
  • /proactive/loop 的别名(从 v2.1.105 起),如果你想彻底关掉调度器,设置 CLAUDE_CODE_DISABLE_CRON=1 即可。

自定节奏模式才是有意思的那一半

省略间隔之后,/loop 就不再只是 cron,而变成了一次判断。文档原话的意思是:每一轮之后,Claude 会“根据它观察到的情况,在 1 分钟到 1 小时之间选择一个延迟:构建快结束或 PR 正活跃时等待较短;没有待处理事项时等待较长”——而且每轮结束时,它会打印所选延迟和理由。也就是说,这个节奏是可检查的,不是玄学。

还有两个自定节奏行为也值得知道:

  • 它可以自己结束。 在自定节奏模式下,一旦任务“已经可以证明完成”,Claude 可以停止安排后续唤醒。固定间隔 loop 永远不会自己判断“我做完了”;它会一直跑,直到你停掉它,或者 7 天到期。这就是*“盯着它,直到变绿”“永远每 5 分钟查一次”*之间的实际差别。
  • 有时它会完全跳过轮询。 当你要求动态 loop 时,Claude 可能改用 Monitor tool:启动一个后台脚本,并逐行流式输出。文档说明,这“通常比按间隔重复运行 prompt 更省 token,也响应更快”。你要的是一个 loop;最后拿到的可能是比 loop 更合适的东西。

有一个平台限制:在 Bedrock、Vertex AIMicrosoft Foundry 上,不带间隔的 prompt 会改为固定 10 分钟时间表——那里没有自定节奏。

/loop vs routine:同一家厂商,两组取舍正相反

Claude Code 的另一个重复执行原语是例程(研究预览):它是一份保存下来的配置,包括 prompt、repositories 和 MCP connectors,会按时间表作为全新的云端会话运行,可以从 claude.ai/code/routines 或 CLI 里的 /schedule 管理。文档自己的边界划得很清楚:例程会“在你的笔记本合上之后继续工作”。

/loopRoutine
运行位置你的会话、你的机器Anthropic 托管的云端
上下文延续——记得前几轮每次都是新会话、新 clone
最小间隔1 分钟1 小时(“更高频运行的表达式会被拒绝”)
本地文件完整访问无——每个 repo 都“会在每次运行时 clone”
笔记本睡眠 / 关闭终端后是否继续
权限确认遵守你当前会话的规则无——自主运行
MCP你的本地服务器仅限 claude.ai connectors(本地 claude mcp add 服务器不会跟过去)
生命周期7 天过期直到你禁用它
触发方式只按时间时间表、API 端点或 GitHub events

从这张表里可以直接得到一个经验法则:如果第 N 轮的价值取决于它记得第 N−1 轮,你要的是 /loop 盯一个不稳定的 CI run、推着一场长迁移往前走、陪一个 PR 过 review——loop 积累下来的上下文,正是它的功能。如果每次运行彼此独立——夜间 triage、每周依赖报告、“每天早上开一个 PR”——routine 明显更好,因为它不会随着你的终端一起死掉。

更大的家族:4 个问题,不是 1 个

把视角拉到各家工具,“automation”这类功能其实会分成 4 种真正不同的原语。把它们混在一起,你就会用 cron 任务很糟糕地做 hook 该做的事。

1. 时间驱动的重复执行——“过一会儿再做一次”。 Claude 的 /loop 和 routine;Cursor 的 /loop(“按本地时间表重复运行一个 prompt,直到达成某个结果,或者直到你停止它”;并且“如果你没有指定固定间隔,agent 会决定什么时候、或由什么事件唤醒它”,也就是和 Claude 同名、同样的两种模式);Cursor Automations(云端、多 repo 或无 repo、marketplace 模板——对应 routine 的那一类);Copilot 的实验性 /every/after(重复执行和一次性执行,带调度管理器);Antigravity 的定时任务。

2. 事件驱动执行——“X 发生时,做 Y”。 Hook 机制:文档原话是“用户定义的 shell 命令、HTTP 端点或 LLM 提示词,会在 Claude Code 生命周期的特定点自动执行”。这不是时间表,而是触发器。如果你的真实意思是“每次编辑之后跑 linter”,或者“任何 bash 命令执行前先检查它”,那就不该用 loop 去轮询;hooks 会在事件发生的确切时刻、确定性地触发。(Routine 也会在这里有些重叠:它的 GitHub 触发器,会为每个 repo 事件启动一个全新的云端会话。)

3. 目标持久化(objective persistence)——“别忘了我们到底要做什么”。 OpenAI CodexGoal Mode:从 CLI 0.133.0 更新日志(May 21)起,“Goals 已默认启用,由专用存储支撑,并在活跃轮次之间跟踪进度”。官方 cookbook 示例把 goal 描述为“一种持久的、限定在线程内的状态”,其中“恢复线程可以还原目标”;它也明确写着,“继续执行是事件驱动的,而不是简单循环”,只会在安全边界检查(turn 完成、没有待处理事项、线程空闲)。Goal Mode 里没有任何 schedule。 它回答的是“我们正在朝什么目标做”,不是“下次什么时候运行”。Claude Code 也沿着同一方向长出了自己的 /goal 命令(v2.1.139)。如果你见过有人把 Goal Mode 说成调度器——它不是;这就是那件外套惹的祸。

4. 并行(parallelism)——“同时做几件事”。 background agentsclaude agents)和 agent teams 讲的是并发,不是重复执行。文档把差别说得再干净不过:“routine 会按时间表在 Anthropic 的云端运行一个会话,而不是在你的机器上并行运行。”这是完全不同的轴线。(我们专门写过一份实战指南,讲怎么把这条轴线跑好。)

快速选对工具

先问清你的任务真正问的是什么:

  1. 第 N 轮是否需要记得第 N−1 轮?/loop(有完成条件就用自定节奏;只是纯监控就用固定间隔)。
  2. 它是否应该在笔记本合上后继续跑,或者按日历运行? → routine(如果你在那些技术栈上,也可以是 Cursor Automations / /every)。接受新上下文的成本。
  3. 真正的触发器是不是事件,而不是时间? → hook(如果事件是 repo event,也可以用 routine 的 GitHub 触发器)。
  4. 问题是不是长任务中忘了目标?/goal——这是持久化,不是调度。
  5. 问题是不是单个会话做不完?background agents / teams——这是并行,不是调度。

还有一个实在的成本提醒:固定间隔的 /loop 会在每个 tick 上,把 prompt 对着你的上下文重跑一遍,不管有没有变化。文档自己把你推向 Monitor tool,这就是信号——如果一个流式检查能替代轮询 loop,它通常更便宜、更快。用 5m 间隔,应该是因为任务真的需要它,而不是因为 5 分钟听起来很负责。

配套阅读

来源:Claude Code 定时任务文档(3 种形式、间隔舍入、Esc 语义、7 天过期、自定节奏范围与打印理由、Monitor tool 说明、Bedrock/Vertex AI/Foundry 固定 10 分钟 fallback);Claude Code 更新日志(v2.1.71 的 /loop、v2.1.105 的 /proactive 别名、v2.1.139 的 /goal);例程文档(1 小时最小间隔、每次全新 clone、连接器、触发器);hooks 参考agents 文档Codex 0.133.0 更新日志Goals 官方 cookbook 示例Cursor 更新日志——共享画布与 /loop自动化功能(均为 May 20, 2026);GitHub 更新日志——Copilot CLI(June 2, 2026);Google I/O 2026 开发者亮点。所有引文均来自链接的一手来源原文,2026-06-04 核验。

相关阅读


文章独立产出 · 编辑政策

继续阅读 →