一张表定选型
官方对比表(三个文档页共用同一张)翻译如下,选型只看这张就够:
| 云端 Routines | Desktop 计划任务 | 会话内 /loop | |
|---|---|---|---|
| 跑在哪 | Anthropic 托管云(或自托管环境) | 你的机器 | 你的机器 |
| 机器要开着 | 不用 | 要 | 要 |
| 要开着会话 | 不用 | 不用 | 要 |
| 跨重启存续 | 是 | 是 | --resume 且未过期才恢复 |
| 能碰本地文件 | 不能(全新克隆) | 能 | 能 |
| 权限弹窗 | 无,全自主 | 逐任务可配 | 继承会话 |
| 最小间隔 | 1 小时 | 1 分钟 | 1 分钟 |
会话内:/loop
/loop 5m 检查部署是否完成,告诉我结果 # 固定间隔(转成 cron)
/loop 检查 CI 是否通过并处理评审意见 # 省略间隔:Claude 动态选等待时长
/loop 20m /review-pr 1234 # 把技能当 prompt 重复执行- 间隔单位 s / m / h / d,秒会向上取整到分钟;7m、90m 这类映射不到整齐 cron 的会四舍五入并告知。
- 省略间隔时,Claude 每轮根据观察结果在 1 分钟到 1 小时之间选下次等待并说明理由——构建收尾时盯得紧、PR 安静了就拉长。
- 任务七天过期、会话级存续;/permissions 这类内置命令和标了 disable-model-invocation 的技能不会被定时执行,只会以纯文本到达。
适合的就是字面场景:盯部署、盯 CI、盯长构建。跨会话的事别用它。
本地:Desktop 计划任务
Desktop App 的 Code 标签 → Routines → New routine → 选 Local(选 Cloud 就成了云端 Routine——同一入口两种产物,注意别点混)。配置四个字段:名称、描述、指令(含权限模式与模型选择器)、日程。 也可以在任何会话里直接说「每天早上 9 点做一次代码审查」对话式创建;一次性任务(「明天下午 3 点提醒我检查部署」)触发后自动停用。
- 只在 App 开着、电脑醒着时触发——它是本地进程,不是系统级 cron。
- 默认跑在工作目录当前状态上(含未提交改动);开 worktree 隔离开关可让每次运行拿独立 Git worktree,互不踩踏。
- 保存任务前必须选定并信任工作文件夹。
适合:每日代码审查、依赖审计、要读本地文件的晨报——机器反正开着、数据不出本机的例行事务。
云端:Routines(研究预览)
Routine = 存好的 prompt + 仓库 + 连接器 + 触发器,跑在 Anthropic 托管云上,笔记本合盖不影响。Pro / Max / Team / Enterprise 可用,入口三个且互通:claude.ai/code/routines 网页、Desktop(New routine 选 Cloud)、CLI 的 /schedule(别名 /routines):
/schedule daily PR review at 9am # 对话式创建循环任务
/schedule 明早 9 点,汇总昨天合并的 PR # 一次性任务(自然语言时间,逐步放量中)
/schedule update # 改成自定义 cron(最小间隔 1 小时)三类触发器,可叠加
| 触发器 | 机制 | 典型用法 |
|---|---|---|
| Schedule | 每小时 / 每天 / 工作日 / 每周,或一次性时间戳;本地时区自动换算,有几分钟错峰延迟 | 每晚整理 issue 队列、每周查文档漂移 |
| API | 每 Routine 独立的 /fire 端点 + Bearer token(只显示一次,可轮换吊销) | 监控告警自动排查、部署后冒烟验证 |
| GitHub | 仓库事件(如 pull_request.opened)+ 过滤器 | 按团队清单自动评审新 PR、跨 SDK 同步移植 |
API 触发的安全模型值得细读
POST /fire 时可附带 text 字段(告警正文、失败日志等),但它不会以指令身份到达:text 被包进 routine-fire-payload 块并标注为不可信数据,除非 Routine 的 prompt 显式引用(「调查 routine-fire-payload 块里描述的告警」),否则按惰性上下文处理。这意味着 token 泄露的后果被限定为「能触发运行」, 而不是「能给你的 Routine 下任意指令」——prompt 写法因此成了安全边界的一部分。
权限面三处收敛
- 连接器:创建表单默认包含你全部已连接的 MCP 连接器,运行中调用(含写)不再确认——不需要的逐个删掉。
- 环境:默认 Trusted 网络只放行包管理器等默认域名清单;密钥存环境的 API credentials,别放明文环境变量(对用同一环境的人可见)。
- 身份:Routine 属于个人账号,产出的提交、PR、Slack 消息都以你的身份发出(分支以 claude/ 前缀创建);运行计入账号的每日运行额度(一次性任务除外)。
第四种方式:GitHub Actions
要把调度绑进仓库权限体系、用组织密钥审计计费,GitHub Actions 的 cron + claude-code-action 仍是团队级的稳妥选择——配置见我们的无头 CI 一文。个人自动化选上面三个面,团队流水线选 Actions,两套不冲突。
落地清单
- 选型按「机器开不开、碰不碰本地文件、间隔多密」三问走表,别拿 /loop 干跨会话的活。
- Routine prompt 自包含且写明成功标准;引用 fire payload 要显式声明。
- 创建 Routine 时把连接器清单删到最小,仓库只选必需。
- Desktop 任务对会改文件的工作开 worktree 隔离。
- API token 进密钥库,接入方失控时第一时间网页端 Revoke。
调度能力补齐后,Claude Code 的形态其实变了:从「你开会话它干活」变成「它按你的日程自己开会话」。 用量也会随之上一个台阶——Routines 吃的是订阅额度,重度自动化前先对照套餐限额想清楚节奏。