Claude Code 近日推出了 /loop 命令,这是一个强大的内置技能,能够帮助开发者自动化处理重复性任务。该功能允许你设置周期性执行的任务,最细的执行粒度可达每五分钟一次。
这个新功能极大地扩展了自动化场景的想象力。例如,你可以用它来定时审查 GitHub 的 Pull Request (PR),或者每天自动汇总特定信息并发送提醒。结合已有的飞书或 Telegram 技能,甚至可以实现定时向手机推送通知,构建个性化的信息流。
核心用法:/loop 命令
使用方式非常直观。核心入口就是内置技能 /loop。你可以通过以下两种格式来指定任务:
- 指定间隔在前:
/loop 5m check the build
- 指定间隔在后:
/loop check the build every 2 hours
如果你不指定时间间隔,命令会默认每 10 分钟执行一次。支持的时间单位包括秒(s)、分钟(m)、小时(h)和天(d)。系统内部会将你提供的间隔解析为标准的 5 字段 cron 表达式,并在必要时进行四舍五入,同时会告知你最终的结果。
复用已有工作流
/loop 命令的循环体本身也可以是其他命令,这让你能够轻松复用已经建立好的工作流。例如,你可以设置定期执行 /review-pr 1234,从而自动化代码审查流程。
一次性提醒与任务管理
对于只需触发一次的提醒,你不需要使用 /loop。直接用自然语言向 Claude 描述你的需求(例如“明天早上9点提醒我开会”),Claude 会自动创建一个执行后即自我删除的一次性任务,并使用 cron 表达式将其固定在具体的分钟和小时。
任务管理也完全可以通过自然语言与 Claude 交互完成。你可以让它“列出所有当前任务”或“取消ID为 XXXXXXXX 的任务”。
底层实现与调度机制
/loop 功能底层依赖于三个核心工具:
CronCreate: 用于创建新任务。
CronList: 用于列出所有任务及其 ID 和调度信息。
CronDelete: 使用任务 ID 来删除特定任务。
每个任务都拥有一个 8 位的唯一 ID,每个会话最多可以创建 50 个任务。
在调度机制上,调度器每秒会检查一次是否有任务到期。到期的任务会以低优先级加入执行队列。关键之处在于,这些任务只会在你与 Claude 的对话回合之间插入执行,而不会打断 Claude 正在进行的回答。
如果任务到期时 Claude 正处于忙碌状态(正在生成回答),系统会等待当前回答结束后再执行一次该任务,不会为错过的每一个时间点进行补发。所有时间均按照你的本地时区进行解释,例如 cron 表达式 0 9 * * * 就代表本地时间早上 9 点。
这为日常自动化脚本和监控任务提供了极大的便利。如果你想了解更多细节,可以查阅官方文档:code.claude.com/docs/en/scheduled-tasks。
对这类提升开发效率的新工具感兴趣的朋友,欢迎到云栈社区分享你的使用心得和自动化场景。
|