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

比较调度选项

Claude Code 提供三种方式来安排定期或一次性工作:
对于应该在没有您的机器的情况下可靠运行的工作,使用云任务。当您需要访问本地文件和工具时,使用桌面任务。对于会话期间的快速轮询,使用 /loop。

使用 /loop 重复运行提示词

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

在固定间隔上运行

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

让 Claude 选择间隔

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

运行内置维护提示词

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

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

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

停止循环

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

设置一次性提醒

对于一次性提醒,用自然语言描述您想要的内容,而不是使用 /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 天自动过期。任务最后触发一次,然后删除自己。这限制了被遗忘的循环可以运行多长时间。如果您需要重复任务持续更长时间,请在过期前取消并重新创建它,或使用 Routines 或 Desktop 计划任务 进行持久调度。

Cron 表达式参考

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

禁用计划任务

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

限制

会话范围的调度有固有的限制:
  • 任务仅在 Claude Code 运行且空闲时触发。关闭终端或让会话退出会停止它们触发。将会话放在后台会将 /loop 任务转移到后台会话,该会话继续运行而无需终端。
  • 没有错过触发的追赶。如果任务的计划时间在 Claude 忙于长时间运行的请求时经过,它会在 Claude 变为空闲时触发一次,而不是每个错过的间隔触发一次。
  • 启动新对话会清除所有会话范围的任务。当您使用 claude --resume 或 claude --continue 恢复会话时,Claude Code 会恢复使用 CronCreate 调度的任务,除了已过期的重复任务和计划时间已经过去的一次性任务。自定步调的 /loop不会被恢复,因此请再次运行 /loop 以重新启动它。后台 Bash 和监视器任务在恢复时永远不会被恢复。
  • 当功能标志获取关闭时,Claude Code 会将您要求在会话间保留的任务存储在项目的 .claude/scheduled_tasks.json 文件中。当 .claude 目录或该文件是符号链接时,Claude Code 会返回错误而不是调度任务。保存的任务仅在您创建它的项目文件夹中运行。如果您将文件复制到另一个文件夹(例如新的 worktree),那里的会话会列出复制的任务但不会运行它们,因此请在该文件夹中再次创建任务。
对于需要无人值守运行的 cron 驱动自动化: