是什么
会话内定时任务功能,通过 /loop 命令在当前会话中按间隔重复执行 Prompt,适合轮询部署状态、监控 PR、检查长时间运行的构建等场景。任务是会话级的,会话结束后停止,但通过 --resume 恢复时可以恢复未过期的任务。
核心机制
三种 /loop 模式:
/loop 5m check the deploy:固定间隔运行指定 Prompt/loop check the deploy:Claude 动态选择间隔(1分钟到1小时,根据观察到的状态调整)/loop:运行内置维护 Prompt(处理未完成工作、PR 评论、CI 失败、清理等)
动态间隔:Claude 根据实际情况调整等待时间,构建进行中时等待更短,PR 安静时等待更长。可能使用 Monitor 工具替代轮询,更高效。
自定义默认 Prompt:创建 .claude/loop.md(项目级)或 ~/.claude/loop.md(用户级)替换内置维护 Prompt。
底层工具:CronCreate(创建任务,接受 5 字段 cron 表达式)、CronList(列出任务)、CronDelete(取消任务)。
7 天过期:循环任务自动在创建后 7 天过期,防止遗忘的循环无限运行。
Jitter 机制:循环任务在计划时间后最多 30 分钟内触发(或间隔的一半),避免所有会话同时触发 API。
关键细节
- 最小间隔:1 分钟(cron 精度)
- 每个会话最多 50 个定时任务
- 停止
/loop:按Esc(仅停止等待中的循环,不影响其他任务) - 禁用定时任务:
CLAUDE_CODE_DISABLE_CRON=1 - 一次性提醒:
remind me at 3pm to push the release branch - 恢复会话时恢复任务:
claude --resume
关联
实践要点
- 会话关闭后任务停止,需要持久化调度用 Routines 或 GitHub Actions
- 动态间隔模式更智能,适合不确定等待时间的场景
loop.md文件修改后下一次迭代即生效,可在运行中调整- Bedrock/Vertex AI/Foundry 上无 Prompt 的
/loop使用固定 10 分钟间隔 - 精确时间的任务避免用
:00或:30,会触发 jitter 偏移