Skip to content

定时任务(/loop)

在会话内运行周期性提示词:轮询部署状态、监控 PR、检查长时间构建、设置提醒。

注意:会话级任务在关闭会话后消失。持久化调度请使用云端任务或桌面任务。

需要 Claude Code v2.1.72 或更高版本(claude --version 查看)。

三种调度方式对比

云端任务桌面任务/loop
运行位置Anthropic 云你的机器你的机器
关机后继续
需要打开会话
跨重启持久化✗(会话作用域)
访问本地文件✗(全新克隆)
MCP 服务器任务创建时配置配置文件和连接器继承会话
权限提示无(自主运行)每任务可配置继承会话
最短间隔1 小时1 分钟1 分钟

选择建议:云端任务适合需要可靠运行而不依赖本机的工作;桌面任务适合需要访问本地文件的工作;/loop 适合会话内快速轮询。

使用 /loop 设置周期性提示词

/loop 是最快的设置方式,支持可选的时间间隔:

/loop 5m 检查部署是否完成并告诉我发生了什么

Claude 解析间隔、转换为 cron 表达式、调度任务,并确认执行频率和任务 ID。

时间间隔语法

间隔参数是可选的,可以放在前面或后面:

形式示例解析结果
前置参数/loop 30m 检查构建每 30 分钟
后置"every"子句/loop 检查构建 every 2 hours每 2 小时
无间隔/loop 检查构建默认每 10 分钟

支持的时间单位:s(秒)、m(分钟)、h(小时)、d(天)。秒会向上取整到分钟(cron 精度为分钟)。

循环执行其他命令

周期性提示词本身可以是命令或技能调用:

/loop 20m /review-pr 1234

每次任务触发时,Claude 会执行 /review-pr 1234

设置一次性提醒

用自然语言描述一次性提醒,Claude 会安排一个运行后自动删除的任务:

下午 3 点提醒我推送发布分支
45 分钟后检查集成测试是否通过

Claude 将触发时间固定到特定分钟和小时,并确认执行时间。

管理定时任务

用自然语言操作:

我有哪些定时任务?
取消 deploy-check 任务

底层工具:

工具用途
CronCreate创建新任务(5 字段 cron 表达式、提示词、是否重复)
CronList列出所有任务(ID、调度、提示词)
CronDelete按 ID 取消任务

每个会话最多可以有 50 个定时任务。

任务执行机制

调度器每秒检查到期任务,以低优先级入队。定时提示词在两次会话轮次之间触发,不会在 Claude 响应过程中中断。如果 Claude 正忙,提示词等到当前轮次结束后执行。

所有时间以本地时区解释。0 9 * * * 表示你运行 Claude Code 所在时区的早上 9 点,不是 UTC。

抖动

为避免所有会话在同一时刻触发 API:

  • 周期性任务触发延迟最多为间隔的 10%(上限 15 分钟),每小时任务可能在 :00:06 之间触发
  • 一次性任务(整点或半点)最多提前 90 秒触发

同一任务的偏移量是确定性的(来自任务 ID),不同运行中保持一致。

3 天过期

周期性任务在创建后 3 天自动过期,触发最后一次后自动删除。如果需要更长时间,过期前取消并重新创建,或使用云端/桌面定时任务。

Cron 表达式参考

CronCreate 接受标准 5 字段 cron 表达式:分 时 日 月 周

示例含义
*/5 * * * *每 5 分钟
0 * * * *每小时整点
7 * * * *每小时第 7 分钟
0 9 * * *每天本地时间 9:00
0 9 * * 1-5工作日 9:00
30 14 15 3 *3 月 15 日 14:30

所有字段支持:通配符(*)、单值(5)、步进(*/15)、范围(1-5)、逗号列表(1,15,30)。

禁用定时任务

bash
export CLAUDE_CODE_DISABLE_CRON=1

/loop 和 cron 工具不可用,已调度的任务停止触发。

会话级调度的限制

  • 任务只在 Claude Code 运行且空闲时触发
  • 不补跑错过的执行(如果 Claude 忙时到期,等到 Claude 空闲时触发一次)
  • 不跨重启持久化

需要持久化自动化时:

相关资源