按计划运行提示
使用 /loop 和 cron 调度工具在 Claude Code 会话中重复运行提示、轮询状态或设置一次性提醒。
使用 /loop 和 cron 调度工具在 Claude Code 会话中重复运行提示、轮询状态或设置一次性提醒。
注意
计划任务需要 Claude Code v2.1.72 或更高版本。使用 claude --version 检查您的版本。
计划任务允许 Claude 按一定时间间隔自动重新运行提示。使用它们来轮询部署、照顾 PR、检查长时间运行的构建,或者提醒自己在会话稍后执行某些操作。
任务是会话范围的:它们存在于当前 Claude Code 进程中,并在您退出时消失。有关在没有活动终端会话的情况下重新启动并运行的持久调度,请参阅桌面计划任务 或 GitHub Actions。
使用 /loop 安排重复提示
/loop 捆绑技能 是安排重复提示的最快方法。通过可选的时间间隔和提示,Claude 会设置一个 cron 作业,该作业在会话保持打开状态时在后台触发。
/loop 5m check if the deployment finished and tell me what happened
Claude 解析间隔,将其转换为 cron 表达式,安排作业,并确认节奏和作业 ID。
间隔语法
间隔是可选的。你可以与他们一起领导,与他们一起跟随,或者完全将他们排除在外。
| 表格 | 示例 | 解析区间 |
|---|---|---|
| 领先代币 | /loop 30m check the build | 每 30 分钟 |
尾随 every 子句 | /loop check the build every 2 hours | 每 2 小时 |
| 无间隔 | /loop check the build | 默认为每 10 分钟一次 |
支持的单位为 s(秒)、m(分钟)、h(小时)和 d(天)。由于 cron 的粒度为一分钟,因此秒数会四舍五入到最接近的分钟。未均匀划分为单位的间隔(例如 7m 或 90m)将四舍五入到最接近的干净间隔,并且 Claude 会告诉您它选择的内容。
循环另一个命令
预定的提示本身可以是命令或技能调用。这对于重新运行已打包的工作流程非常有用。
/loop 20m /review-pr 1234
每次作业触发时,Claude 都会运行 /review-pr 1234,就像您键入它一样。
设置一次性提醒
对于一次性提醒,请用自然语言描述您想要的内容,而不是使用 /loop。 Claude 安排了一个单发任务,该任务在运行后会自行删除。
remind me at 3pm to push the release branch
in 45 minutes, check whether the integration tests passed
Claude 使用 cron 表达式将触发时间固定到特定的分钟和小时,并确认何时触发。
管理计划任务
用自然语言询问 Claude 列出或取消任务,或直接引用底层工具。
what scheduled tasks do I have?
cancel the deploy check job
在幕后,Claude 使用以下工具:|工具|目的|
| :---------- | :-------------------------------------------------------------------------------------------------------------- |
| CronCreate |安排新任务。接受 5 字段 cron 表达式、运行提示以及是否重复或触发一次。 |
| CronList |列出所有计划任务及其 ID、计划和提示。 |
| CronDelete |通过ID取消任务。 |
每个计划任务都有一个 8 个字符的 ID,您可以将其传递给 CronDelete。一个会话最多可以同时容纳 50 个计划任务。
计划任务如何运行
调度程序每秒检查是否有到期任务,并将它们以低优先级排列。预定的提示会在您的回合之间触发,而不是在 Claude 处于中间响应时触发。如果任务到期时 Claude 正忙,则提示会等待,直到当前回合结束。
所有时间均以您当地时区解释。无论您在何处运行 Claude Code,而不是 UTC,像 0 9 * * * 这样的 cron 表达式都表示上午 9 点。
抖动
为了避免每个会话在同一挂钟时刻访问 API,调度程序为触发时间添加了一个小的确定性偏移:
- 重复性任务最多延迟 10%,上限为 15 分钟。每小时作业可能会在
:00到:06之间的任何位置触发。 - 安排在每小时顶部或底部的一次性任务最多提前 90 秒触发。
偏移量源自任务 ID,因此同一任务始终获得相同的偏移量。如果精确的计时很重要,请选择 :00 或 :30 以外的分钟,例如 3 9 * * * 而不是 0 9 * * *,并且一次性抖动将不适用。
三天有效期
重复任务将在创建后 3 天自动过期。该任务最后一次触发,然后自行删除。这限制了被遗忘的循环可以运行的时间。如果您需要让重复任务持续更长时间,请在其过期之前取消并重新创建它,或者使用桌面计划任务 进行持久计划。
Cron 表达式参考
CronCreate 接受标准 5 字段 cron 表达式:minute hour day-of-month month day-of-week。所有字段都支持通配符 (*)、单个值 (5)、步骤 (*/15)、范围 (1-5) 和逗号分隔列表 (1,15,30)。
| 示例 | 意义 |
|---|---|
*/5 * * * * | 每 5 分钟 |
0 * * * * | 每小时整点 |
7 * * * * | 每小时 7 分过去 |
0 9 * * * | 当地时间每天上午 9 点 |
0 9 * * 1-5 | 工作日上午 9 点(当地时间) |
30 14 15 3 * | 当地时间 3 月 15 日下午 2:30 |
星期几使用 0 或 7 表示星期日,直至 6 表示星期六。不支持 L、W、? 等扩展语法以及 MON 或 JAN 等名称别名。
当月份和星期几都受到限制时,如果任一字段匹配,则日期匹配。这遵循标准 vixie-cron 语义。## 禁用计划任务
在您的环境中设置 CLAUDE_CODE_DISABLE_CRON=1 以完全禁用调度程序。 cron 工具和 /loop 变得不可用,并且任何已安排的任务都会停止触发。有关禁用标志的完整列表,请参阅环境变量。
限制
会话范围的调度具有固有的约束:
- 任务仅在 Claude Code 运行且空闲时触发。关闭终端或让会话退出会取消一切。
- 没有追赶错过的火灾。如果在 Claude 忙于处理长时间运行的请求时任务的计划时间已过,则该任务会在 Claude 空闲时触发一次,而不是每个错过的时间间隔触发一次。
- 重新启动后没有持久性。重新启动 Claude Code 将清除所有会话范围的任务。
对于需要无人值守运行的 cron 驱动的自动化,请使用带有 schedule 触发器的 GitHub Actions 工作流程,或者如果您需要图形设置流程,请使用 桌面计划任务。