主题
2.7 定时任务与后台执行 — 让 AI 自动巡逻
学习目标:掌握 Claude Code 的三种自动化执行方式(后台任务、循环执行、定时调度);学会配置 AI 自动巡逻代码安全、文档更新、CI 监控等场景;理解"人不在,AI 在干活"的工作模式。
为什么需要自动化执行
到目前为止,我们和 Claude Code 的交互都是"你说一句,它做一件"。但很多事情其实不需要你盯着:
- 每天扫一遍代码有没有安全漏洞
- 每隔 10 分钟看看 CI/CD 流水线是不是又挂了
- 每周自动更新一次项目文档
- 定期清理积累的技术债
这些重复性的巡逻工作,交给 AI 自动跑就好了。你去喝咖啡、开会、甚至睡觉,AI 在后台默默干活。
方式一:Background Tasks — 后台执行长任务
有些任务需要跑很久——比如审查整个项目的代码质量,或者分析几千行日志。你不想干等着,想继续做别的事。
怎么用
在交互模式中,直接告诉 Claude Code 你要做的事情,然后按 Escape 键让它在后台继续执行。你可以继续在终端做别的操作。
更直接的方式是用管道模式加 & 放到后台:
bash
# 后台执行代码审查,结果输出到文件
claude -p "对整个项目做一次全面的代码安全审查,输出报告" > security-report.md &
# 后台分析性能瓶颈
claude -p "分析 src/ 目录下所有文件的性能问题,给出优化建议" > perf-report.md &[截图: 终端中后台执行 claude -p 命令,显示进程号,同时用户继续执行其他命令]
查看后台任务状态
bash
# 查看正在运行的后台任务
jobs
# 把后台任务拉回前台
fg %1更优雅的做法:用 tmux 隔离
如果你有多个长时间运行的 AI 任务,推荐用 tmux 做会话隔离:
bash
# 创建一个专门给 AI 跑任务的窗口
tmux new-session -d -s ai-worker
# 在 AI 窗口中运行任务
tmux send-keys -t ai-worker "claude -p '审查整个项目的代码质量' > quality-report.md" Enter
# 随时查看 AI 的工作进度
tmux attach -t ai-worker[截图: tmux 分屏,左边是正常开发,右边是 AI 后台跑审查任务]
不用后台执行:你发出一个"审查整个项目"的指令,然后呆坐在终端前等 5 分钟,什么都干不了。
用了后台执行:指令发出去,你继续写代码。AI 跑完了,报告已经安静地躺在文件里等你看。
方式二:/loop 循环执行 — 定时重复巡逻
后台执行解决了"跑一次不阻塞"的问题,但有些事情需要反复跑——比如每 5 分钟检查一次部署状态。这时候就需要 /loop。
基本语法
bash
/loop 5m 检查 CI/CD 流水线状态,如果有失败的 job,总结失败原因这条命令的意思是:每 5 分钟执行一次,检查 CI 状态。Claude Code 会自动重复执行,直到你手动停止。
常见循环场景
bash
# 每 10 分钟检查部署状态
/loop 10m 运行 gh run list --limit 5 查看最近的 GitHub Actions 状态,如果有失败的,分析原因
# 每 30 分钟扫描代码变更
/loop 30m 检查最近 30 分钟的 git 提交,审查是否有安全风险
# 每小时更新项目文档
/loop 1h 检查 src/ 目录下最近修改的文件,如果 README.md 中的描述过时了就更新它[截图: /loop 命令执行中,显示"下次执行倒计时"和上一次执行的结果摘要]
停止循环
按 Ctrl+C 或使用 /loop-status 查看当前活跃的循环任务,然后停止不需要的。
bash
# 查看正在运行的循环任务
/loop-status[截图: /loop-status 显示当前有 2 个活跃的循环任务及其下次执行时间]
循环执行的注意事项
- 每次循环都会消耗 token,注意费用。建议设置
--max-budget-usd做上限保护。 - 循环间隔不要太短。5 分钟以下的间隔很少有必要,大多数巡逻任务 10-30 分钟足够。
- 循环任务适合"检查状态并报告"这类轻量操作,不适合"每隔 5 分钟重构一次代码"这种重活。
方式三:Scheduled Tasks — cron 定时调度
/loop 是在你的会话存活期间运行的。一旦你关了终端,循环就停了。如果你想要的是"每天凌晨 3 点自动跑一次安全扫描"这种持久化的定时任务,就需要 Scheduled Tasks(也叫 Triggers)。
用 /schedule 创建定时任务
bash
/schedule这个命令会引导你配置一个远程定时 agent,它按照 cron 表达式定时触发,独立于你的终端运行。
bash
# 创建一个每天凌晨 3 点执行的安全扫描任务
/schedule create --cron "0 3 * * *" --prompt "对项目做全面安全扫描,发现高危问题时生成 GitHub Issue"
# 创建一个每周一早上 9 点执行的文档更新任务
/schedule create --cron "0 9 * * 1" --prompt "检查本周的代码变更,更新 README 和 API 文档"
# 创建一个每天下午 6 点执行的技术债盘点
/schedule create --cron "0 18 * * *" --prompt "扫描项目中的 TODO、FIXME、HACK 注释,生成技术债清单"[截图: /schedule create 命令的交互式配置界面,显示 cron 表达式和 prompt 输入]
管理已有的定时任务
bash
# 列出所有定时任务
/schedule list
# 查看某个任务的执行历史
/schedule history <task-id>
# 手动触发一次(不等 cron 时间)
/schedule run <task-id>
# 删除不需要的任务
/schedule delete <task-id>[截图: /schedule list 输出的任务列表,包含任务名、cron 表达式、上次执行时间和状态]
用系统 cron + CLI 管道模式实现类似效果
如果你不想用内置的 /schedule,也可以直接用系统自带的 crontab 配合 Claude Code 的管道模式:
bash
# 编辑 crontab
crontab -e添加以下内容:
cron
# 每天凌晨 3 点:安全扫描
0 3 * * * cd /path/to/project && claude -p "执行安全扫描,检查硬编码密钥、SQL注入风险、XSS漏洞" --max-budget-usd 1.00 > /tmp/security-scan-$(date +\%Y\%m\%d).md 2>&1
# 每周一早上 9 点:文档更新
0 9 * * 1 cd /path/to/project && claude -p "检查最近一周的代码变更,更新项目文档" --max-budget-usd 0.50 > /tmp/doc-update-$(date +\%Y\%m\%d).md 2>&1
# 每 6 小时:CI 状态检查
0 */6 * * * cd /path/to/project && claude -p "检查 GitHub Actions 最近的运行状态,如有失败发送摘要" --max-budget-usd 0.25 > /tmp/ci-check-$(date +\%Y\%m\%d-\%H).md 2>&1[截图: crontab -l 显示配置好的三个定时任务]
这种方式更底层、更灵活,适合有 Linux 经验的同学。不熟悉 cron 也没关系,/schedule 已经把这些复杂性都封装好了。
四大实战场景
学会了三种执行方式,我们来看怎么组合使用。
场景一:定时代码安全扫描
安全漏洞不等人。与其等到上线前手忙脚乱地扫,不如让 AI 每天自动巡逻。
bash
# 每天凌晨自动扫描
/schedule create --cron "0 3 * * *" --prompt "扫描整个项目的安全风险:1.硬编码的密钥或密码 2.SQL注入风险 3.XSS漏洞 4.不安全的依赖版本。发现高危问题时创建 GitHub Issue。"场景二:自动文档更新
文档过时是每个项目的通病。AI 帮你盯着。
bash
# 每周一自动检查并更新
/schedule create --cron "0 9 * * 1" --prompt "对比 src/ 目录的代码和 docs/ 目录的文档,找出不一致的地方并更新文档。重点关注新增的函数、修改的API参数、废弃的接口。"场景三:监控 CI/CD 状态
CI 挂了半天没人发现?让 AI 替你盯着。
bash
# 工作时间内每 30 分钟检查一次
/loop 30m 执行 gh run list --limit 10,如果有失败的 workflow,分析失败原因并给出修复建议场景四:定期清理技术债
技术债像滚雪球,不定期清理就会越积越多。
bash
# 每周五下午盘点技术债
/schedule create --cron "0 17 * * 5" --prompt "扫描项目中所有 TODO、FIXME、HACK 注释,按严重程度排序,生成本周技术债报告,保存到 docs/tech-debt-report.md"[截图: AI 自动生成的技术债报告,按 CRITICAL / HIGH / MEDIUM 分类列出]
三种方式怎么选
| 特性 | Background Tasks | /loop 循环 | Scheduled Tasks |
|---|---|---|---|
| 执行频率 | 一次性 | 重复(会话内) | 重复(持久化) |
| 终端关了还跑吗 | 否 | 否 | 是 |
| 适合什么 | 耗时长的一次性任务 | 会话期间的状态监控 | 每天/每周的自动化巡逻 |
| 典型场景 | 全项目代码审查 | 监控 CI 状态 | 每日安全扫描 |
| 费用控制 | --max-budget-usd | 注意循环次数 | 每次触发独立计费 |
选择原则很简单:
- 跑一次就行 --> Background Tasks
- 盯一会儿 --> /loop
- 长期自动化 --> Scheduled Tasks / cron
小结
- Claude Code 不只是"你问它答"的工具,它可以在后台持续工作,像一个 7x24 在岗的 AI 值班员。
- Background Tasks:把耗时任务扔到后台,不阻塞你的开发。配合 tmux 更优雅。
- /loop 循环执行:在会话期间定时重复巡逻,适合短期状态监控。
- Scheduled Tasks:通过
/schedule或系统 crontab 配置持久化定时任务,关机了也照跑。 - 四个高频场景:安全扫描、文档更新、CI 监控、技术债清理——这些都不需要你亲自盯着。
- 费用意识:自动化任务每次执行都消耗 token,务必用
--max-budget-usd给每次执行设上限。