"凌晨3点47分,我在床上翻了个身。手机亮了一下——是OpenClaw发来的消息:'老板,今天的数据抓取完了,邮件也发了,还有别的活儿吗?' 我笑了笑,继续睡觉。这才是AI该有的样子。"
世界上有一种烦恼叫"我忘了"。忘了发周报、忘了备份数据、忘了检查服务器……而OpenClaw的定时任务(Cron Jobs)就是来终结这种烦恼的。让Agent在指定时间自动执行任务——不管是每天早上的数据简报,还是每周五的邮件汇总,它都能准时搞定。
🎯 什么是OpenClaw定时任务?
OpenClaw的定时任务功能基于cron调度器,让你可以安排Agent在未来某个时间点或按特定周期自动执行消息。这就像是给Agent请了个闹钟服务,到点就干活,绝不偷懒。
常见的使用场景包括:
- 每天早上8点生成数据报告
- 每小时检查一次网站状态
- 每周五下午发送周报汇总
- 每月1号备份重要数据
- 特定日期执行一次性提醒
🛠️ 核心功能详解
1. 定时任务类型
| 类型 | 说明 | 示例 |
|---|---|---|
at | 一次性任务,在指定时间执行 | 明天下午3点提醒开会 |
every | 周期性任务,按固定间隔重复 | 每2小时检查一次邮件 |
cron | 复杂周期,支持cron表达式 | 每周一至周五早上9点 |
2. 会话目标选项
定时任务可以指定在哪里执行:
- main - 在主会话执行(适合简单提醒)
- isolated - 在隔离会话执行(默认,推荐)
- current - 在当前会话执行
- session:xxx - 在指定命名会话执行
📝 使用方法
创建一次性任务(at)
JSON 配置示例
{
"name": "会议提醒",
"schedule": {
"kind": "at",
"at": "2026-04-16T15:00:00+08:00"
},
"payload": {
"kind": "agentTurn",
"message": "提醒:15分钟后有产品评审会议"
},
"sessionTarget": "isolated"
}
创建周期任务(every)
每2小时执行一次
{
"name": "邮件检查",
"schedule": {
"kind": "every",
"everyMs": 7200000
},
"payload": {
"kind": "agentTurn",
"message": "检查新邮件并总结重要事项"
}
}
创建复杂周期任务(cron)
工作日每天早上9点
{
"name": "晨间简报",
"schedule": {
"kind": "cron",
"expr": "0 9 * * 1-5",
"tz": "Asia/Shanghai"
},
"payload": {
"kind": "agentTurn",
"message": "生成今日待办事项和昨日完成总结"
}
}
Cron表达式速查
分 时 日 月 周 - 例如 0 9 * * 1-5 表示工作日9点整* 表示任意值,1-5 表示周一至周五,*/30 表示每30分钟
💡 最佳实践
1
选择合适的会话目标
简单提醒用"main",复杂任务用"isolated",需要上下文连续性用"current"或命名会话。
2
设置合理的执行间隔
避免过于频繁的调度(如每分钟执行),这可能导致资源浪费。大数据任务建议间隔至少30分钟。
3
添加任务描述
为每个任务添加清晰的name和description,方便后期管理和排查。
4
配置失败通知
使用failureAlert配置任务失败时的通知方式,确保问题能及时发现。
5
定期清理过期任务
对于一次性任务,设置deleteAfterRun: true自动清理,避免任务列表臃肿。
🔧 高级用法示例
完整工作流:每日数据报告
包含数据抓取、分析和邮件发送
{
"name": "每日数据报告",
"description": "每天早上8点抓取网站数据并生成报告",
"schedule": {
"kind": "cron",
"expr": "0 8 * * *",
"tz": "Asia/Shanghai"
},
"payload": {
"kind": "agentTurn",
"message": "执行每日数据报告工作流:1)使用web_search搜索昨日AI行业热点;2)使用web_fetch获取OpenClaw官方更新;3)整理成Markdown格式报告;4)发送到飞书群",
"model": "claude-3-5-sonnet"
},
"delivery": {
"mode": "announce",
"channel": "general"
},
"failureAlert": {
"mode": "announce",
"after": 2,
"cooldownMs": 3600000
}
}
带webhook回调的任务
任务完成后发送HTTP通知
{
"name": "服务器健康检查",
"schedule": {
"kind": "every",
"everyMs": 300000
},
"payload": {
"kind": "agentTurn",
"message": "检查服务器状态:CPU、内存、磁盘使用率"
},
"delivery": {
"mode": "webhook",
"to": "https://your-server.com/webhook/health"
}
}
注意事项:
• 时区设置很重要,默认是UTC,建议显式设置为中国时区
• 任务执行时间如果超过间隔,可能会造成任务堆积
• 敏感操作(如删除数据)建议添加人工确认步骤
• 时区设置很重要,默认是UTC,建议显式设置为中国时区
• 任务执行时间如果超过间隔,可能会造成任务堆积
• 敏感操作(如删除数据)建议添加人工确认步骤
📚 相关链接
OpenClaw自动化入门
从零开始学习OpenClaw自动化功能
OpenClaw Agent Skills详解
扩展Agent能力的技能系统
OpenClaw Gateway管理
Gateway配置和任务管理
什么是Cron Jobs?
术语百科:定时任务详解
踩坑实录:定时任务翻车现场
真实案例分享与经验总结
多Agent协作工作流
定时任务与多Agent配合
写在最后
有人说,AI的终极形态就是让你忘记它的存在。当你的定时任务在凌晨默默运行,当早报准时出现在你的收件箱里——那一刻,你就明白了什么叫"智能"。设置好任务,然后,去睡觉吧。