让AI Agent变成"准时打卡的打工人"——自动化重复任务
Cron是Unix/Linux系统中经典的定时任务调度器,名字来源于希腊语"Chronos"(时间)。它让你可以设定"什么时候执行什么任务",就像给AI Agent设置了一个永不疲倦的闹钟。
每天早上8点自动生成数据报告,发给团队
每5分钟检查一次网站状态,发现问题立即报警
每小时抓取RSS源,更新新闻资讯
每天凌晨3点自动备份数据库
# ┌───────────── 分钟 (0 - 59)
# │ ┌───────────── 小时 (0 - 23)
# │ │ ┌───────────── 日期 (1 - 31)
# │ │ │ ┌───────────── 月份 (1 - 12)
# │ │ │ │ ┌───────────── 星期 (0 - 6, 0=周日)
# │ │ │ │ │
# * * * * * 要执行的命令
| 表达式 | 含义 |
|---|---|
| * * * * * | 每分钟 |
| 0 * * * * | 每小时整点 |
| 0 */6 * * * | 每6小时 |
| 0 0 * * * | 每天午夜 |
| 0 8 * * * | 每天早上8点 |
| 0 0 * * 0 | 每周日午夜 |
| 0 0 1 * * | 每月1号午夜 |
| */5 * * * * | 每5分钟 |
| 0 9 * * 1-5 | 工作日9点 |
| 0 0 1 1 * | 每年1月1日 |
| 符号 | 含义 | 示例 |
|---|---|---|
* | 任意值 | 每小时 |
, | 列表 | 0 8,12,18 * * * (8点、12点、18点) |
- | 范围 | 0 9-17 * * 1-5 (工作日9-17点) |
/ | 步进 | */10 * * * * (每10分钟) |
cron工具,可以直接创建和管理定时任务,还支持系统事件和Agent Turn两种模式!
// OpenClaw cron工具的核心功能
{
"action": "add", // 创建定时任务
"action": "list", // 列出所有任务
"action": "remove", // 删除任务
"action": "run", // 立即执行
"action": "wake" // 发送唤醒事件
}
// 每天早上8点生成AI新闻日报
await cron({
action: "add",
job: {
name: "daily-ai-news",
schedule: { kind: "cron", expr: "0 8 * * *", tz: "Asia/Shanghai" },
payload: {
kind: "agentTurn",
message: "生成今天的AI新闻日报,搜索最新AI动态并保存到/var/www/miaoquai/news/目录",
timeoutSeconds: 300
},
delivery: {
mode: "announce",
to: "#daily-reports"
}
}
});
// 每5分钟检查网站健康状态
await cron({
action: "add",
job: {
name: "health-check",
schedule: { kind: "every", everyMs: 300000 }, // 5分钟
payload: {
kind: "systemEvent",
text: "执行健康检查:检查网站可访问性、API响应时间、磁盘空间"
}
}
});
// 30分钟后提醒开会
await cron({
action: "add",
job: {
name: "meeting-reminder",
schedule: { kind: "at", at: "2026-04-08T10:30:00+08:00" },
payload: {
kind: "systemEvent",
text: "⏰ 提醒:15分钟后有产品评审会议"
},
deleteAfterRun: true // 执行后自动删除
}
});
// 每小时执行RSS聚合任务
await cron({
action: "add",
job: {
name: "rss-aggregator",
description: "每小时聚合RSS内容并更新网站",
schedule: { kind: "cron", expr: "0 * * * *", tz: "Asia/Shanghai" },
sessionTarget: "isolated",
payload: {
kind: "agentTurn",
message: `执行RSS内容聚合任务:
1. 订阅OpenClaw Blog、GitHub Discussions等RSS源
2. 提取最新文章和讨论
3. 生成摘要页面保存到/var/www/miaoquai/rss/
4. 更新网站玩法资讯栏目`,
timeoutSeconds: 600
},
failureAlert: {
mode: "announce",
after: 3,
cooldownMs: 3600000
}
}
});
// 列出所有定时任务
const jobs = await cron({ action: "list" });
console.log(jobs); // 查看所有任务状态
// 立即执行某个任务(测试用)
await cron({
action: "run",
jobId: "daily-ai-news"
});
// 删除不再需要任务
await cron({
action: "remove",
jobId: "old-task-id"
});
// 查看任务执行历史
const history = await cron({
action: "runs",
jobId: "daily-ai-news"
});
| 坑 | 解决方案 |
|---|---|
| 任务执行超时 | 设置合理的timeoutSeconds,或拆分为小任务 |
| 任务堆积 | 设置任务执行间隔 > 平均执行时间 |
| 时区混乱 | 明确指定tz参数,如"Asia/Shanghai" |
| 重复执行 | 确保任务逻辑幂等,或使用去重机制 |
| 系统重启 | 检查持久化配置,任务是否在重启后恢复 |
| 任务类型 | 推荐间隔 | 说明 |
|---|---|---|
| 健康检查 | 1-5分钟 | 太频繁会增加负载 |
| 数据同步 | 5-15分钟 | 根据数据时效性调整 |
| 内容聚合 | 1-6小时 | 平衡实时性和资源消耗 |
| 日报生成 | 每天1次 | 选择业务低谷时段 |
| 数据备份 | 每天1次 | 通常放在凌晨执行 |