
本文适合:使用 Claude Code 做日常开发的工程师,希望把重复性监控任务从「手动盯屏」升级成「自动汇报」。
等构建跑完,你在干嘛?
刷推?看消息?还是打开另一个终端眼神空洞地盯着进度条?
这件事困扰了我很久——CI 跑着,我不敢走开;部署在进行,我不敢关屏幕。这不是效率,这是焦虑。
直到我发现 Claude Code 悄悄上线了 /loop 命令。
一行自然语言,Claude 替你定时执行任务、监控结果、异常报警。 它背后跑的是 cron 调度,但你永远不需要写一个 cron 表达式。
这篇文章,咱们从头把 /loop 吃透。
/loop 是什么?为什么它不一样?简单说:/loop 是 Claude Code 的内置定时任务技能。
你描述任务 + 给一个时间间隔,Claude 自动把它转成后台调度,然后每隔指定时间就执行一次,并把结果汇报给你。
跟你自己写 cron 任务有什么区别?看这个对比:
传统 cron 方案 Claude Code /loop
───────────────────── ─────────────────────────────
*/2 * * * * npm run build /loop 2m 跑构建,告诉我有没有报错
手动解析退出码
手动写日志
手动配邮件或通知
每次改任务要改 crontab
你需要会 cron 语法 你只需要会说话
你需要自己处理结果 Claude 负责解读和汇报
你需要盯着日志 Claude 主动告警
本质差别是:cron 只负责执行,Claude 负责理解结果并告诉你发生了什么。

先跑起来再说。打开一个有 npm run build 脚本的项目,进入 Claude Code:
claude
然后输入:
/loop 2m run npm run build and tell me if it passed or failed
Claude 会立刻返回一个调度确认:
✅ Scheduled loop job created
Job ID: 0d7f7026
Cron: */2 * * * *
Every: 2 minutes
Task: Run npm run build and report pass/fail
Expires: 3 days from now
你不需要写 */2 * * * *,Claude 帮你算好了。
从这一刻起,每 2 分钟,Claude 就会自动跑一次构建并告诉你结果。你可以去做别的事了。
/loop 支持的时间单位如下:
单位 | 示例 | 实际含义 |
|---|---|---|
s | 30s | 30 秒(向上取整到 1 分钟) |
m | 5m | 每 5 分钟 |
h | 2h | 每 2 小时 |
d | 1d | 每天一次 |
几个注意点:
① 秒级间隔会被取整
因为 cron 的最小粒度是 1 分钟,所以 30s 实际上会按 1m 执行,Claude 会告诉你它做了这个调整。
② 不能整除的间隔会被「取整到合理值」
比如你写 7m,cron 没办法精确表达 7 分钟的循环,Claude 会自动取整到 5m 或 10m,并说明原因。同理 90m 会变成 1h 或 2h。
③ 时间间隔的位置很灵活
写在前面、后面都行:
/loop 5m check deployment status
/loop check deployment status every 5m
不加时间间隔也行——Claude 会问你或者用合理默认值。
/loop 内部怎么运行的?很多人用这个命令之前会问:它是开了一个后台进程吗?会不会跑飞?
看这张运行机制图:
你的 Claude Code 会话
│
├── 前台:你正常对话
│
└── 后台调度器(每秒检查一次)
│
├── 任务未到时间 → 继续等待
│
└── 任务到时间了
│
├── Claude 正在响应中?→ 等当前轮次结束
│
└── Claude 空闲?→ 立即执行任务,汇报结果
关键点:定时任务「插队」在你的两次对话之间,不会打断你当前的操作。
时区是你本机时区,不是 UTC。所以如果你设置 /loop 1d send morning report at 9am,它真的就是你本地时间早上 9 点执行,不需要换算。
下面走一遍从「搭项目」到「自动捕获错误」的完整流程。
mkdir loop-demo && cd loop-demo
npm init -y
index.js(初始版,构建成功):
console.log("Build successful");
package.json scripts 部分:
{
"scripts": {
"build": "node index.js"
}
}
验证一下:
npm run build
# 输出:Build successful
claude
/loop 2m run npm run build and tell me if it passed or failed
Claude 返回调度成功确认,记下 Job ID 备用。
等 2 分钟,Claude 会自动汇报:
● PASSED — npm run build 执行成功,输出:Build successful.
把 index.js 改成有语法错误的版本:
console.log("Build successful" // 缺少右括号
不需要做任何操作,等下一个循环周期。
2 分钟后,Claude 自动汇报:
● FAILED — npm run build 执行失败
错误信息:
SyntaxError: Unexpected end of input
at wrapSafe (internal/modules/cjs/loader.js:915:16)
建议检查 index.js 的语法错误。
你全程没有盯着终端——Claude 替你盯着,失败了主动告诉你。
/loop 指向另一个命令/loop 可以触发任何 Claude Code 的命令或自定义技能。
比如你已经有一个 /review-pr 命令,想让它每 20 分钟自动检查一次 PR:
/loop 20m /review-pr 1234
每次循环触发时,Claude 会完整执行 /review-pr 1234 的逻辑——就像你手动输入了一样。
更多实战场景:
# 监控部署,完成后通知
/loop 5m check if the k8s deployment is ready and notify me
# 每 30 分钟检查测试套件
/loop 30m run npm test and summarize which tests failed
# 结合 Slack MCP,每天早上发日报
/loop 1d generate a daily summary of open PRs and send to Slack channel #dev-updates
任务跑起来之后,怎么查看和取消?
查看所有活跃任务,直接用自然语言问:
what scheduled tasks do I have?
Claude 会列出所有任务,含 Job ID、触发频率和任务内容。
取消某个任务,两种方式:
# 自然语言(推荐,多任务时不用记 ID)
cancel the build monitor job
# 直接用 Job ID
CronDelete 0d7f7026
在实际生产中用 /loop 之前,这几个限制要心里有数:
① 3 天自动过期
所有循环任务在创建后第 3 天自动触发最后一次,然后自动删除。不会有「忘了关的任务」。如果你的需求超过 3 天,需要手动取消再重建,或者使用系统级 cron。
② 会话绑定
/loop 的任务跟你当前的 Claude Code 会话绑定。关掉终端或者会话断开,任务就停了。想要「机器重启也能跑」的持久任务,需要用 Desktop 里的 Scheduled Tasks 功能,那个会在后台独立运行。
③ 完全禁用
如果某些场景下你不想让任何定时任务跑,设置环境变量:
export CLAUDE_CODE_DISABLE_CRON=1
之后 /loop 命令不可用,已有任务也停止触发。
/loop,什么时候不该用?适合用 /loop 的场景 不适合用 /loop 的场景
────────────────── ───────────────────────
构建/测试状态监控 需要跨会话持续运行的任务
部署进度轮询 持续时间超过 3 天的监控
PR 检查自动化 需要精确到秒级的任务触发
开发期间的定时提醒 需要机器重启后继续跑的任务
多任务并行监控不同服务
/loop 解决的核心问题很简单:开发过程中大量「等待-检查-等待」的重复操作,不应该消耗你的注意力。
它不是什么魔法——背后就是 cron + Claude 的任务理解能力。但这个组合让原来需要「会写 shell 脚本 + 会 cron 语法 + 自己处理结果解析」的事情,变成了「说一句话」。
对于日常在 Claude Code 环境中开发的同学,这个命令值得加到你的常用工具里。
👇 你在用 Claude Code 做开发时,最烦的「手动重复操作」是什么?
是一遍遍刷新部署日志?还是反复跑测试确认有没有回归?
评论区聊聊你的场景,说不定下期就写你的需求 😄