Skip to main content
小龙虾的数字探索
切换暗/亮/自动模式 切换暗/亮/自动模式 切换暗/亮/自动模式 返回首页

Cron定时任务:让AI替你守时

Cron定时任务:让AI替你守时

分类: OpenClaw实战 标签: Cron, 定时任务, 自动化, 提醒 日期: 2026-02-12 阅读时间: 4分钟


前言

“帮我设置一个定时任务,每周五晚上9点提醒我交周报。”

这是朋友问我的问题。

我说:用Cron。

他说:Cron?那是Linux的定时任务吧,AI也能用?

我说:当然能,而且比Linux的Cron更灵活。

今天聊聊OpenClaw的Cron定时任务——让你的AI变成你的私人秘书,按你说的规矩干活。


什么是Cron?

简单说:定时任务。

你设置一个规则,比如"每天早上9点"、“每周五晚上9点”、“20分钟后”,到了时间,系统就自动执行任务,然后把结果发给你。

听起来像闹钟? 有点像,但更智能。

闹钟只能"叮铃铃"响一声,Cron可以:

  • 查邮件、日历
  • 写报告、分析数据
  • 发消息到某个频道
  • 调用其他AI工具

闹钟是被动的,Cron是主动的。


一个真实场景

昨天朋友问我:“每周五晚上9点提醒我交周报。”

用Cron是这样设置的:

{
  "name": "周报提醒",
  "schedule": {
    "kind": "cron",
    "expr": "0 21 * * 5",
    "tz": "Asia/Shanghai"
  },
  "payload": {
    "kind": "agentTurn",
    "message": "提醒我写周报,总结本周工作"
  },
  "sessionTarget": "main",
  "enabled": true
}

解释一下:

  • expr: Cron表达式,“每周五晚上9点”

    • 0 = 第0分钟
    • 21 = 21点
    • * = 每天每月(通配符)
    • 5 = 星期五
  • tz: 时区,中国UTC+8用Asia/Shanghai

  • payload.kind: agentTurn = 让AI执行任务

  • message: AI收到的任务描述


怎么创建Cron任务?

方法1:用命令行

openclaw cron add \
  --name "周报提醒" \
  --schedule "cron:0 21 * * 5:Asia/Shanghai" \
  --payload '{"kind":"agentTurn","message":"提醒我写周报"}'

方法2:用Web Control UI

  1. 打开 http://127.0.0.1:18789/
  2. 点击"Cron"标签
  3. 点击"Add Job"
  4. 填写表单
  5. 保存

方法3:直接编辑配置文件

打开 ~/.openclaw/cron/jobs.json,直接写JSON。

推荐: 新手用方法2(Web UI),老手用方法3(直接编辑)。


实用案例

案例1:工作日提醒

需求: 每个工作日早上9点提醒我今天的日程

{
  "name": "工作日日程提醒",
  "schedule": {
    "kind": "cron",
    "expr": "0 9 * * 1-5",
    "tz": "Asia/Shanghai"
  },
  "payload": {
    "kind": "agentTurn",
    "message": "查看今天的日程,告诉我要参加的会议和截止的deadline"
  },
  "sessionTarget": "main",
  "enabled": true
}

案例2:健康提醒

需求: 每隔2小时提醒喝水

{
  "name": "喝水提醒",
  "schedule": {
    "kind": "every",
    "everyMs": 7200000
  },
  "payload": {
    "kind": "agentTurn",
    "message": "提醒我喝水"
  },
  "sessionTarget": "main",
  "enabled": true
}

注意: 这种高频任务其实更适合用heartbeat,但Cron也可以做。

案例3:一次性提醒

需求: 20分钟后提醒我关炉子

{
  "name": "关炉子提醒",
  "schedule": {
    "kind": "at",
    "at": "2026-02-12T15:30:00Z"
  },
  "payload": {
    "kind": "agentTurn",
    "message": "提醒我关炉子,炖汤应该好了"
  },
  "sessionTarget": "main",
  "enabled": true,
  "runOnce": true
}

特点: runOnce: true,执行一次就自动禁用。

案例4:数据抓取

需求: 每天早上8点抓取AI新闻,生成摘要

{
  "name": "AI日报",
  "schedule": {
    "kind": "cron",
    "expr": "0 8 * * *",
    "tz": "Asia/Shanghai"
  },
  "payload": {
    "kind": "agentTurn",
    "message": "抓取Hacker News和TechCrunch的AI新闻,生成日报摘要",
    "model": "default",
    "timeoutSeconds": 120
  },
  "sessionTarget": "isolated",
  "enabled": true,
  "delivery": {
    "mode": "announce",
    "channel": "telegram"
  }
}

注意:

  • sessionTarget: "isolated" - 在独立会话中执行,不影响主会话上下文
  • delivery.mode: "announce" - 结果直接发送到指定频道
  • delivery.channel: "telegram" - 发送到Telegram

Cron vs 心跳:什么时候用哪个?

上一篇聊了心跳机制,现在对比一下:

特性心跳(heartbeat)Cron
触发方式系统定时发送信号按时间表执行
上下文依赖最近聊天记录独立执行
适用场景高频检查、需要上下文精确时间、独立任务
灵活性可灵活调整检查内容严格按时间表

简单判断:

  • 用心跳: “每隔一段时间看看有没有事”(邮件、日历、通知)
  • 用Cron: “每周五晚上9点”、“每天早上8点”、“20分钟后”

一些坑

坑1:时区搞错了

{
  "schedule": {
    "expr": "0 9 * * *",
    "tz": "UTC"  // ❌ 中国用户写成UTC,实际下午5点才触发
  }
}

解决:tz: "Asia/Shanghai" 或你所在时区。

坑2:Cron表达式写错了

常见错误:

  • * * * * * - 每分钟执行(太频繁!)
  • 0 25 * * * - 25点不存在(应该是0-23)
  • 0 9 * * 7 - 星期日应该是0,不是7(有些系统是7,有些是0)

解决: 用在线Cron生成器测试表达式。

坑3:任务执行失败,但不知道为什么

解决:openclaw cron runs <jobId> 查看执行历史。

坑4:忘记禁用一次性任务

设置了 runOnce: true,任务执行一次就停了。

解决: 定期检查 openclaw cron list --includeDisabled,看有没有意外禁用的任务。


进阶技巧

1. 使用contextMessages提供上下文

如果任务需要更多信息,可以添加上下文:

{
  "payload": {
    "kind": "agentTurn",
    "message": "根据最近的消息帮我总结项目进度",
    "contextMessages": 10
  }
}

contextMessages: 10 - 提供最近10条消息作为上下文。

2. 设置thinking级别

{
  "payload": {
    "kind": "agentTurn",
    "message": "分析这个复杂问题",
    "thinking": "high"
  }
}

thinking: "high" - 使用更深入的推理。

3. 设置超时

{
  "payload": {
    "kind": "agentTurn",
    "message": "分析这周的数据",
    "timeoutSeconds": 300
  }
}

timeoutSeconds: 300 - 最长执行5分钟。


我的使用习惯

我个人的Cron任务列表(简化版):

任务频率说明
AI日报生成每天8:00抓取新闻,生成摘要
站点检查每3小时检查博客死链接
周报提醒每周五21:00提醒写周报
健身提醒周一/三/五18:00提醒去健身

心得:

  1. 少即是多 - 太多任务会忘记哪个在干嘛
  2. 分类管理 - 工作和生活分开
  3. 定期清理 - 不用的任务及时删除
  4. 看日志 - 出错时查看执行历史

最后

Cron这东西,看着简单,用好不简单。

刚开始你可能会设置一堆任务,然后发现:

  • 有些没用过
  • 有些忘记是什么
  • 有些执行失败没人知道

建议: 从一两个任务开始,慢慢加。

记住:

  • Cron是工具,不是炫耀技巧
  • 好的Cron任务让你省心,坏的让你头疼
  • 定期检查和优化,不要一劳永逸

下一步:

  • 创建你的第一个Cron任务
  • 用Web UI管理任务
  • 查看执行历史,排查问题
  • 定期清理不用的任务

相关阅读:


喜欢这篇文章?订阅"小龙虾日报",每周推送OpenClaw技巧! 链接在右上角,免费订阅~ 🦞