定时任务、/loop 与 Routines:让 Claude Code 按计划工作
Claude Code 提供会话内 /loop、Desktop 本地计划任务和云端 Routines。本篇比较生命周期、权限、连接器、时区和失败处理,避免把无人值守自动化开得过大。
教程基准:Claude Code v2.1.224(当前最新版,核验于 2026-08-07) · 最后核验:2026-08-07 · 适用版本:/loop 需要 v2.1.72+;Routines 为预览能力 · 官方文档
学习 CI 自动化三种定时方式
| 方式 | 在哪里运行 | 是否需要会话保持打开 | 适合什么 |
|---|---|---|---|
/loop | 当前 CLI 会话、本机 | 需要 | 轮询部署、稍后检查测试、短期提醒 |
| Desktop 计划任务 | 本机 | 不需要 CLI 会话,但电脑要开机 | 访问本地文件和工具的周期任务 |
| Cloud Routines | Anthropic 云端 | 不需要本机 | 定时、GitHub 事件或 API 触发的长期自动化 |
不要用 /loop 代替可靠的生产调度器。它是会话级工具,关闭会话后不会继续按完整计划执行;需要长期稳定运行时使用 CI、正式任务系统或经过治理的 Routines。
会话内使用 /loop
/loop 5m 检查部署是否完成,只读取状态;成功或失败后停止并汇报
适合的任务必须可重复执行、没有重复副作用。检查状态可以重复,重复创建发布、重复发送通知或重复写数据库则不适合。
会话内任务使用本地时区,可能存在调度抖动;Claude 忙于当前响应时,任务会等当前轮结束。周期任务通常在创建七天后过期,重新打开新会话也会影响任务生命周期。
Cloud Routines 的权限风险
Routine 是一份保存的任务配置,包括提示词、仓库、环境和连接器。它在云端自主运行,没有人在每次工具调用时点批准。因此创建前必须缩小:
- 只选择必要仓库。
- 默认只允许推送
claude/前缀分支。 - 移除任务不需要的连接器。
- 不提供生产密钥和无关环境变量。
- 提示词写明停止条件和输出要求。
- 第一次手动运行并审查完整结果。
连接器可能同时包含读取和写入工具。界面里“已连接”不代表适合给每个 Routine 使用,应逐个删除无关连接器。
/schedule 和 /loop 不一样
/schedule 用来创建或管理云端 Routines;/loop 在当前本地会话中循环执行提示。需要电脑关闭后仍执行的每日 PR 审查,应选 Routine;只想十分钟后回来检查本地测试,应选 /loop。
/schedule 每个工作日上午 9 点检查指定仓库的新 PR,只生成审查报告和建议分支,不直接合并
Routines 目前属于预览能力,行为和限制可能变化。建立关键业务流程前必须准备独立的监控、失败通知和人工接管方式。
设计幂等任务
定时任务可能重试、延迟或在你忘记它时继续运行。提示词要包含幂等键或状态判断:如果目标已经完成就退出;如果发现已有同名 PR 就更新而不是重复创建;如果输入缺失就失败,不要自行猜测。
记录每次运行的开始时间、输入版本、仓库提交、输出链接和最终状态。没有运行记录的自动化无法审计,也无法判断它是否悄悄停止。
失败处理模板
这是一个无人值守任务。必须遵守: 1. 只读取指定仓库和连接器。 2. 不访问生产数据,不修改默认分支。 3. 输入缺失、测试失败或需要额外权限时立即停止。 4. 不重复创建已经存在的 issue、分支或 PR。 5. 最终输出运行时间、输入提交、完成动作、验证结果和失败原因。
什么时候改用 CI
如果任务本质是固定脚本,例如 lint、测试、构建和依赖扫描,优先放在 CI,让结果可重复、可缓存、可由退出码判断。只有需要理解 issue、归纳失败原因或生成审查建议时,再让 Claude 参与。
上线前做四次演练
先手动触发 Routine,并分别模拟正常输入、空输入、重复输入和下游服务失败。正常输入要产生可追踪结果;空输入应安全退出;重复输入不能创建两份资源;服务失败要保留状态并通知负责人。任何一项只能靠阅读聊天记录才能判断,都说明审计信息还不够。
为任务设置负责人和复查日期。每月检查仓库权限、连接器、模型、提示词和最近运行记录;业务结束、负责人离职或连续失败时立即停用。定时任务最危险的状态不是明确报错,而是仍在运行但目标和权限已经过期。
时区、并发和停止条件
在任务说明中写出明确时区,不使用含糊的“每天早上”。考虑夏令时、节假日和上一次任务尚未结束的情况:默认禁止同一任务并发,或为每次运行使用唯一锁。达到最大耗时、最大尝试次数、输入版本变化或需要额外权限时,应停止并报告,而不是继续猜测。
删除或暂停任务后再确认没有遗留的开放 PR、后台作业和长期凭据。暂停调度不一定会自动终止已经开始的运行,因此还要检查当前执行状态。
验收结果
- 你知道
/loop、Desktop 任务和 Routines 的生命周期差异。 - 你知道 Routines 没有逐步权限弹窗。
- 你会移除无关连接器并限制分支推送。
- 你会设计幂等、可停止、可审计的周期任务。
- 你知道固定检查优先使用 CI。