过去 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 deploy | prompt 按固定时间表运行 |
/loop check the deploy | prompt 在每一轮按 Claude 自行选择的间隔运行 |
/loop | 运行内置维护 prompt——如果存在 loop.md,就运行你的 loop.md |
实践里真正重要的是这些细节:
- 间隔可以写在前面(
30m),也可以写在后面(“every 2 hours”);单位是s/m/h/d。秒级间隔会上取整到 1 分钟(cron 粒度),而像7m或90m这类不规整的间隔,会被舍入到最接近的干净 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 AI 和 Microsoft Foundry 上,不带间隔的 prompt 会改为固定 10 分钟时间表——那里没有自定节奏。
/loop vs routine:同一家厂商,两组取舍正相反
Claude Code 的另一个重复执行原语是例程(研究预览):它是一份保存下来的配置,包括 prompt、repositories 和 MCP connectors,会按时间表作为全新的云端会话运行,可以从 claude.ai/code/routines 或 CLI 里的 /schedule 管理。文档自己的边界划得很清楚:例程会“在你的笔记本合上之后继续工作”。
/loop | Routine | |
|---|---|---|
| 运行位置 | 你的会话、你的机器 | 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 Codex 的 Goal 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 agents(claude agents)和 agent teams 讲的是并发,不是重复执行。文档把差别说得再干净不过:“routine 会按时间表在 Anthropic 的云端运行一个会话,而不是在你的机器上并行运行。”这是完全不同的轴线。(我们专门写过一份实战指南,讲怎么把这条轴线跑好。)
快速选对工具
先问清你的任务真正问的是什么:
- 第 N 轮是否需要记得第 N−1 轮? →
/loop(有完成条件就用自定节奏;只是纯监控就用固定间隔)。 - 它是否应该在笔记本合上后继续跑,或者按日历运行? → routine(如果你在那些技术栈上,也可以是 Cursor Automations /
/every)。接受新上下文的成本。 - 真正的触发器是不是事件,而不是时间? → hook(如果事件是 repo event,也可以用 routine 的 GitHub 触发器)。
- 问题是不是长任务中忘了目标? →
/goal——这是持久化,不是调度。 - 问题是不是单个会话做不完? → background agents / teams——这是并行,不是调度。
还有一个实在的成本提醒:固定间隔的 /loop 会在每个 tick 上,把 prompt 对着你的上下文重跑一遍,不管有没有变化。文档自己把你推向 Monitor tool,这就是信号——如果一个流式检查能替代轮询 loop,它通常更便宜、更快。用 5m 间隔,应该是因为任务真的需要它,而不是因为 5 分钟听起来很负责。
配套阅读
- 热门 Claude Code 工作流都收敛成同样 5 步——趋同这个视角;Cursor 在 Claude 之后 2 周发出同名
/loop,就是第 N+1 个证据。 - 运行一支长驻 AI agent 编队——并行这条轴线:你的 loops 和 routines 拉起的 agent,如何做好记忆隔离,以及重启后继续跑。
- 2026 年的 Claude Code hooks——事件这条轴线,包括 fail-open 陷阱。
来源: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 核验。