Skip to main content
计划任务让 Claude 按间隔自动重新运行提示词。使用它们来轮询部署、监督 PR、检查长时间运行的构建,或在会话中稍后提醒自己做某事。要对事件进行实时反应而不是轮询,请参阅 Channels:您的 CI 可以直接将失败推送到会话中。要保持会话工作转向转向直到满足条件而不是按间隔,请参阅 /goal 任务是会话范围的:它们存在于当前对话中,当您启动新对话时就会停止。使用 --resume--continue 恢复会带回任何尚未过期的任务:在过去 7 天内创建的重复任务,或计划时间尚未到达的一次性任务。对于独立于任何会话而存在的调度,请使用 Routines 在 Anthropic 管理的基础设施上创建例程、设置 Desktop 计划任务,或使用 GitHub Actions

比较调度选项

Claude Code offers three ways to schedule recurring or one-off work:
Use cloud tasks for work that should run reliably without your machine. Use Desktop tasks when you need access to local files and tools. Use /loop for quick polling during a session.

使用 /loop 重复运行提示词

/loop bundled skill 是在会话保持打开时重复运行提示词的最快方式。间隔和提示词都是可选的,您提供的内容决定了循环的行为方式。 您也可以将 skill 作为提示词传递,例如 /loop 20m /review-pr 1234,以在每次迭代时重新运行该 skill。从 v2.1.196 开始,计划的触发仅运行 Claude 允许自己调用的 skill。以下内容作为纯文本到达 Claude,而不是执行:

在固定间隔上运行

当您提供间隔时,Claude 将其转换为 cron 表达式,计划作业,并确认频率和作业 ID。
间隔可以作为裸令牌(如 30m)在提示词前面,或作为子句(如 every 2 hours)在后面。支持的单位是 s 表示秒、m 表示分钟、h 表示小时、d 表示天。 秒数向上舍入到最近的分钟,因为 cron 的粒度为一分钟。不能均匀映射到干净 cron 步长的间隔,例如 7m90m,会舍入到最近的间隔,Claude 会告诉您它选择了什么。

让 Claude 选择间隔

当您省略间隔时,Claude 会动态选择一个,而不是在固定 cron 计划上运行。在每次迭代后,它会根据观察到的情况选择一个一分钟到一小时之间的延迟:在构建完成或 PR 活跃时等待较短时间,当没有待处理项时等待较长时间。选择的延迟和原因会在每次迭代结束时打印。 下面的示例检查 CI 和审查评论,Claude 在 PR 变得安静后在迭代之间等待更长时间:
当您要求动态 /loop 计划时,Claude 可能会直接使用 Monitor tool。Monitor 运行后台脚本并流式传输每个输出行,这完全避免了轮询,通常比在间隔上重新运行提示词更节省令牌且响应更快。 动态计划的循环出现在您的计划任务列表中,就像任何其他任务一样,所以您可以以相同的方式列出或取消它。抖动规则不适用于它,但七天过期适用:循环在您启动它七天后自动结束。
在 Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 和 Microsoft Foundry 上,没有间隔的提示词在固定的 10 分钟计划上运行。

运行内置维护提示词

当您省略提示词时,Claude 使用内置维护提示词而不是您提供的提示词。在每次迭代中,它按顺序处理以下内容:
  • 继续对话中的任何未完成工作
  • 照顾当前分支的拉取请求:审查评论、失败的 CI 运行、合并冲突
  • 运行清理通过,例如当没有其他待处理项时的错误搜索或简化
Claude 不会启动该范围之外的新举措,不可逆的操作(如推送或删除)仅在继续转录已授权的内容时进行。
/loop动态选择的间隔上运行此提示词。添加间隔,例如 /loop 15m,以在固定计划上运行它。要用您自己的默认值替换内置提示词,请参阅使用 loop.md 自定义默认提示词
在 Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 和 Microsoft Foundry 上,没有提示词的 /loop 会打印使用消息而不是运行维护提示词。

使用 loop.md 自定义默认提示词

loop.md 文件用您自己的说明替换内置维护提示词。它为裸 /loop 定义单个默认提示词,而不是单独计划任务的列表,并且在您在命令行上提供提示词时被忽略。要在其旁边计划其他提示词,请使用 /loop <prompt>直接询问 Claude Claude 在两个位置查找文件,并使用它找到的第一个。 该文件是纯 Markdown,没有必需的结构。像您直接输入 /loop 提示词一样编写它。以下示例保持发布分支健康:
.claude/loop.md
loop.md 的编辑在下一次迭代时生效,所以您可以在循环运行时优化说明。当任一位置都不存在 loop.md 时,循环回退到内置维护提示词。保持文件简洁:超过 25,000 字节的内容会被截断。
在 Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 和 Microsoft Foundry 上,loop.md 不被读取,没有提示词的 /loop 会打印使用消息。

停止循环

要在 /loop 等待下一次迭代时停止它,请按 Esc。这会清除待处理的唤醒,所以循环不会再次触发。您通过直接询问 Claude计划的任务不受 Esc 影响,会保留在原位,直到您删除它们。 自主进行模式中,Claude 也可以在任务完成后通过调用 ScheduleWakeup tool 并设置 stop: true 来自己结束循环,这会立即取消待处理的唤醒。如果迭代结束时既没有重新计划也没有停止,Claude Code 会在大约 20 分钟后计划一个备用唤醒,并在该迭代也不重新计划时结束循环。在 v2.1.202 之前,不重新计划是 Claude 自己结束循环的唯一方式。 固定间隔上的循环会一直运行,直到您停止它们或七天过去

设置一次性提醒

对于一次性提醒,用自然语言描述您想要的内容,而不是使用 /loop。Claude 计划一个单次触发的任务,该任务在运行后删除自己。
Claude 使用 cron 表达式将触发时间固定到特定的分钟和小时,并确认何时触发。

管理计划任务

用自然语言要求 Claude 列出或取消任务,或直接引用底层工具。
在幕后,Claude 使用这些工具: 每个计划任务都有一个 8 字符的 ID,您可以将其传递给 CronDelete。一个会话最多可以同时保存 50 个计划任务。

计划任务如何运行

调度程序每秒检查一次到期的任务,并以低优先级将其加入队列。计划的提示词在您的回合之间触发,而不是在 Claude 正在响应时。如果 Claude 在任务到期时忙碌,提示词会等到当前回合结束。 所有时间都在您的本地时区中解释。像 0 9 * * * 这样的 cron 表达式意味着 9am 在您运行 Claude Code 的任何地方,而不是 UTC。

抖动

为了避免每个会话在同一个挂钟时刻击中 API,调度程序会向触发时间添加一个确定性偏移:
  • 重复任务最多在计划时间之后 30 分钟触发(或对于运行频率超过每小时的任务,最多为间隔的一半)。为 :00 计划的每小时作业可能在 :00:30 之间的任何时间触发。
  • 为小时顶部或底部计划的一次性任务最多提前 90 秒触发。
偏移是从任务 ID 派生的,所以相同的任务总是获得相同的偏移。如果精确的时间很重要,选择不是 :00:30 的分钟,例如 3 9 * * * 而不是 0 9 * * *,一次性抖动将不适用。

七天过期

重复任务在创建后 7 天自动过期。任务最后触发一次,然后删除自己。这限制了被遗忘的循环可以运行多长时间。如果您需要重复任务持续更长时间,请在过期前取消并重新创建它,或使用 RoutinesDesktop 计划任务 进行持久调度。

Cron 表达式参考

CronCreate 接受标准 5 字段 cron 表达式:minute hour day-of-month month day-of-week。所有字段都支持通配符 (*)、单个值 (5)、步长 (*/15)、范围 (1-5) 和逗号分隔的列表 (1,15,30)。 星期几使用 07 表示星期日,6 表示星期六。不支持扩展语法如 LW? 和名称别名如 MONJAN 当月份日期和星期几都受到限制时,如果任一字段匹配,日期就匹配。这遵循标准的 vixie-cron 语义。

禁用计划任务

在您的环境中设置 CLAUDE_CODE_DISABLE_CRON=1 以完全禁用调度程序。cron 工具和 /loop 变得不可用,任何已计划的任务都停止触发。有关禁用标志的完整列表,请参阅环境变量

限制

会话范围的调度有固有的限制:
  • 任务仅在 Claude Code 运行且空闲时触发。关闭终端或让会话退出会停止它们触发。将会话放在后台会将 /loop 任务转移到后台会话,该会话继续运行而无需终端。
  • 没有错过触发的追赶。如果任务的计划时间在 Claude 忙于长时间运行的请求时经过,它会在 Claude 变为空闲时触发一次,而不是每个错过的间隔触发一次。
  • 启动新对话会清除所有会话范围的任务。使用 claude --resumeclaude --continue 恢复会恢复尚未过期的任务:创建后七天内的重复任务,以及计划时间尚未到达的一次性任务。后台 Bash 和监视器任务在恢复时永远不会被恢复。
对于需要无人值守运行的 cron 驱动自动化:
  • Routines:在 Anthropic 管理的基础设施上按计划运行、通过 API 调用或在 GitHub 事件上运行
  • GitHub Actions:在 CI 中使用 schedule 触发器
  • Desktop 计划任务:在您的机器上本地运行