定时任务(Scheduled Tasks)让 Claude 在会话内按时间间隔自动重复执行提示词,适合监控部署进度、追踪 PR、检查构建结果或设置会话内提醒。
定时任务是会话级的——退出 Claude Code 后任务消失。需要持久定时任务,请使用 Desktop Scheduled Tasks 或 GitHub Actions。
/loop:最快上手方式
/loop 是内置的 Bundled Skill,传入间隔和提示词,Claude 在后台自动设置定时任务:
/loop 5m check if the deployment finished and tell me what happened
Claude 解析间隔、转换为 Cron 表达式、设置任务并确认执行频率和任务 ID。
间隔写法(三种形式)
| 形式 | 示例 | 解析结果 |
|---|---|---|
| 前置 token | /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 最小粒度为 1 分钟)
- 不能整除的间隔(如
7m、90m)会四舍五入到最近的整数间隔,Claude 会告知最终选择的值
对另一个命令循环执行
定时提示词本身也可以是命令或 Skill:
/loop 20m /review-pr 1234
每次任务触发时,Claude 执行 /review-pr 1234,就像你手动输入一样。
一次性提醒
不用 /loop,用自然语言描述即可设置单次触发任务(自动在执行后删除自身):
remind me at 3pm to push the release branch
in 45 minutes, check whether the integration tests passed
Claude 将触发时间精确到分钟,使用 cron 表达式钉住,并告知执行时间。
管理定时任务
用自然语言管理任务:
what scheduled tasks do I have?
cancel the deploy check job
底层工具一览:
| 工具 | 作用 |
|---|---|
CronCreate | 创建新任务(接受 5 字段 Cron 表达式、提示词、是否重复) |
CronList | 列出所有任务(含 ID、计划、提示词) |
CronDelete | 按 ID 取消任务 |
每个任务有 8 字符 ID,一个会话最多 50 个任务。
定时任务的运行机制
- 调度器每秒检查到期任务,以低优先级入队
- 任务在两轮对话之间触发,Claude 正在处理响应时不会中断
- 如果 Claude 忙碌时任务到期,等到当前轮次结束后再执行
- 所有时间以本地时区解释(cron
0 9 * * *= 本地时间 9:00,不是 UTC)
随机延迟(Jitter)机制
为避免所有会话同时触发 API 请求,调度器会添加确定性随机偏移:
| 类型 | 偏移范围 |
|---|---|
| 重复任务 | 延迟 0~10% 的周期,最多 15 分钟(每小时任务最多延迟 6 分钟) |
| 单次任务(整点/半点) | 最多提前 90 秒 |
偏移值从任务 ID 派生,同一任务始终得到相同偏移。如果需要精确时间,避免使用 :00 或 :30,改用 3 9 * * * 而非 0 9 * * *。
三日自动过期
重复任务在创建 3 天后自动过期——最后触发一次后自动删除。这防止遗忘的循环任务无限运行。需要超过 3 天的定时任务,在过期前取消并重建,或使用 Desktop Scheduled Tasks。
Cron 表达式参考
CronCreate 接受标准 5 字段 Cron:分 时 日 月 周。支持 *(通配)、单值、步长(*/15)、范围(1-5)和逗号列表(1,15,30)。
| 表达式 | 含义 |
|---|---|
*/5 * * * * | 每 5 分钟 |
0 * * * * | 每小时整点 |
7 * * * * | 每小时 :07 分 |
0 9 * * * | 每天早上 9:00(本地时间) |
0 9 * * 1-5 | 周一到周五 9:00(本地时间) |
30 14 15 3 * | 3 月 15 日 14:30 |
不支持
L、W、?扩展语法和MON/JAN等名称别名。
禁用定时任务
export CLAUDE_CODE_DISABLE_CRON=1设置后,/loop 和 Cron 工具变为不可用,已设置的任务停止触发。
会话级调度的局限性
| 限制 | 说明 |
|---|---|
| 仅会话内有效 | 关闭终端或退出会话,所有任务消失 |
| 无补偿执行 | Claude 忙碌时错过的间隔,只执行一次(不会补发) |
| 无持久化 | 重启 Claude Code 清除所有任务 |
需要无人值守的定时自动化:使用 GitHub Actions(schedule 触发器)或 Desktop Scheduled Tasks。
原文:Run prompts on a schedule - Claude Code Docs | 来源:Anthropic 官方文档