Cron、Routine、Schedule、launchd、Hook、Webhook、/loop、GitHub Actions…… 一堆词都在说"让某件事自动地发生",但触发方式、运行位置、能不能碰本地文件各不相同。本文给你一把万能钥匙:遇到任何一个词,先套三个问题,再配一张决策表,从此不再混。
这些词之所以容易混,是因为大家把"自动化"当成一个整体。其实任何一个机制,都可以被这三个问题唯一定位。先看最关键的第一问 —— 它什么时候跑?
第一问解决了"何时跑"。再补两问,就能把任何机制钉死:
/loop)。这决定了「你的电脑关机后它还跑不跑」。
下面每张卡片,左上是术语,右上的色标是它的类别(蓝=定时 · 紫=事件 · 绿=常驻 · 灰=概念/工具)。底部黄字是最常见的误解。
* * * * * 五个字段)。它是一种约定 / 语法,不是某个具体程序。crontab -e)。cron 概念的经典实现。/loop 5m /foo)。也可省略间隔,让模型自己定步调。/loop 动态模式的底层机制:让 Claude 自己决定"多久之后再醒来"继续干活,按需自定步调,而非固定间隔。/schedule 在背后用的就是这类工具。on: schedule(cron 定时)+ on: push/pull_request(事件)。和 git 深度绑定。那串 * * * * * 经常吓人,其实就五个位置,从左到右:
0 9 * * * = 每天 9:00 · */5 * * * * = 每 5 分钟 · 0 9 * * 1 = 每周一 9:00
记不住所有术语没关系 —— 真正要做事时,直接查这张场景 → 选型表(这也是团队 CLAUDE.md 里"自动化/调度按场景选"的扩展版)。
| 你的场景 | 选它 | 为什么 |
|---|---|---|
| 工具调用前后 / commit / push 时即时拦截、强制规则 | Hook (hookify) | 事件驱动 + 同步阻塞,规则写死不会被忘 |
| 定时任务,但要读本地 secrets / 文件 / keychain | launchd | 唯一能访问本地状态;云端方案碰不到本地 |
| 无状态的定期摘要 / 报告 / 轻量 agent | Routine(/schedule) | 云端 cron,本机离线照跑,不占 GHA 额度 |
| 合并门禁 / PR 审查 / 部署链路 | GitHub Actions | 已和 git push 绑定,跟着代码走 |
| 会话内盯着某件事重复跑,直到它完成 | /loop | 在当前 Claude 会话里循环;关会话即停 |
| 外部系统(支付 / OAuth / 第三方)有事通知我 | Webhook | 事件推送,无需自己定时轮询 |
| 需要一个永远在线、持续监听 / 消费队列的服务 | Worker / Daemon | 常驻进程,从不退出 |
跑在云端,你电脑关机照跑。但碰不到本地文件 / 凭据。适合无状态摘要、报告。
跑在你的 Mac 上,能读本地 secrets / 文件 / keychain。但电脑关机就不跑。
独立的云端定时 agent,长期无人值守,按 cron 反复跑。
在当前会话内循环,关掉会话就停。适合临时盯一件事到完成。
本地拦截你自己的动作(工具调用 / commit / push),同步阻塞。
别人从网络推事件给你的 HTTP 回调,你被动接收。
定时的概念 + 语法(那串表达式),抽象层。
吃 cron 语法、真正去执行的具体调度器 / 入口。
把这页浓缩成一行心法 —— 以后遇到任何"让某事自动发生"的词,不用背定义,套这一句就够: