OpenClaw 内置了强大的 Cron 定时任务系统,让你的 AI 助手能够在指定时间自动执行任务:发送提醒、生成报告、检查状态,甚至主动给你推送消息。
什么是 OpenClaw Cron?
Cron 是 OpenClaw 的后台定时任务机制。与普通的系统 cron 不同,OpenClaw Cron:
- 在独立的 AI 会话中运行,每次都有全新的上下文
- 可以使用所有工具(exec、read、write、web 搜索等)
- 可以向你的 Telegram、Discord 等频道主动发送消息
- 支持 cron 表达式精确控制时间
基本配置
在 ~/.openclaw/openclaw.json 中添加 cron 配置:
json
{
"cron": {
"jobs": [
{
"id": "daily-summary",
"schedule": "0 9 * * *",
"task": "生成今日工作摘要,列出待办事项,通过 Telegram 发送给我",
"deliver": "telegram"
}
]
}
}常用 Cron 表达式
| 表达式 | 说明 |
|---|---|
0 9 * * * | 每天上午 9 点 |
0 9 * * 1-5 | 周一到周五上午 9 点 |
0 */6 * * * | 每 6 小时一次 |
*/30 * * * * | 每 30 分钟一次 |
0 9 * * 1 | 每周一上午 9 点 |
0 18 * * 5 | 每周五下午 6 点 |
实用场景示例
每日工作提醒
json
{
"id": "morning-briefing",
"schedule": "0 8 * * 1-5",
"task": "检查今日日历事件,汇总需要关注的事项,发送早报",
"deliver": "telegram",
"agentId": "main"
}每周代码健康检查
json
{
"id": "weekly-code-check",
"schedule": "0 10 * * 1",
"task": "检查 ~/projects 下所有 git 仓库的状态,找出有未提交更改或需要推送的仓库,生成报告通过 Telegram 发送",
"deliver": "telegram"
}定时备份提醒
json
{
"id": "backup-reminder",
"schedule": "0 22 * * *",
"task": "检查今天是否有重要文件修改,如果有,提醒我进行备份",
"deliver": "telegram"
}服务监控
json
{
"id": "service-monitor",
"schedule": "*/10 * * * *",
"task": "检查关键服务状态:curl https://myapp.com/health,如果返回非 200,立即通过 Telegram 告警",
"deliver": "telegram"
}完整配置字段
json
{
"cron": {
"jobs": [
{
"id": "job-id",
"schedule": "0 9 * * *",
"task": "要执行的任务描述(会作为 prompt 传给 AI)",
"deliver": "telegram",
"agentId": "main",
"model": "claude-sonnet-4-5",
"enabled": true,
"timezone": "Asia/Shanghai"
}
]
}
}| 字段 | 说明 | 必填 |
|---|---|---|
id | 任务唯一标识 | 是 |
schedule | Cron 表达式 | 是 |
task | 任务描述,作为 AI prompt | 是 |
deliver | 输出频道(telegram/discord 等) | 否 |
agentId | 使用哪个 Agent | 否 |
model | 使用的模型 | 否 |
enabled | 是否启用(默认 true) | 否 |
timezone | 时区(默认 Gateway 主机时区) | 否 |
Cron vs Heartbeat:何时用哪个?
| 场景 | 推荐方式 |
|---|---|
| 精确时间很重要(9:00 准时) | Cron |
| 任务需要隔离,不影响主会话 | Cron |
| 多个检查可以批量(收件箱+日历) | Heartbeat |
| 时间可以漂移(每 30 分钟左右) | Heartbeat |
| 一次性提醒(20 分钟后提醒我) | Cron |
查看和管理 Cron 任务
bash
openclaw cron list # 列出所有任务
openclaw cron run job-id # 手动触发某个任务
openclaw cron status # 查看任务执行历史Cron 任务的会话隔离
每次 Cron 运行都会创建全新的独立会话(cron:<jobId>),不会与主对话会话混合。这意味着:
- Cron 任务有干净的上下文,不受主会话历史影响
- 任务间不会相互干扰
- 可以为不同任务指定不同的模型和 Agent
来源:OpenClaw 官方文档 | 整理自 docs.openclaw.ai