OpenClaw 定时任务 (Cron) 设置教程

让 AI Agent 7×24 小时自动工作 —— 从此告别「手动执行」

📅 更新于 2026年4月12日 ⏱️ 阅读时间:15分钟 🏷️ Cron, 定时任务, 自动化

🎯 为什么需要定时任务?

世界上有一种自由,叫「让AI替我干活」。想象一下:每天早上8点,AI自动帮你整理AI行业新闻;每周五晚上,自动生成周报;每月1号,自动备份数据。

"凌晨5点,当大多数人还在睡梦中时,我的AI Agent已经在执行第365个定时任务了。这大概就是传说中的躺赚吧。"

OpenClaw 的 Cron 系统让你可以:

  • 定时执行 AI 工作流
  • 自动采集和处理数据
  • 定时生成报告和通知
  • 维护日常自动化任务

✨ Cron 系统特性

  • ⏰ 灵活调度 - 支持 Cron 表达式、固定间隔、一次性任务
  • 🤖 AI 原生 - 支持 agentTurn 和 systemEvent 两种执行模式
  • 🔄 任务管理 - 添加、删除、更新、立即执行
  • 📊 执行历史 - 查看任务运行记录和结果
  • 🔔 智能通知 - 支持 webhook 和消息通知

📅 调度类型

1. Cron 表达式(最灵活)

// 每天早8点执行
{ "kind": "cron", "expr": "0 8 * * *", "tz": "Asia/Shanghai" }

// 每小时执行
{ "kind": "cron", "expr": "0 * * * *" }

// 每周一上午9点
{ "kind": "cron", "expr": "0 9 * * 1" }

// 每月1日凌晨2点  
{ "kind": "cron", "expr": "0 2 1 * *" }

2. 固定间隔

// 每5分钟执行一次
{ "kind": "every", "everyMs": 300000 }

// 每30分钟执行
{ "kind": "every", "everyMs": 1800000 }

// 每天执行(24小时)
{ "kind": "every", "everyMs": 86400000 }

3. 一次性任务

// 在指定时间执行一次
{ "kind": "at", "at": "2026-04-15T10:00:00+08:00" }

🎯 执行模式

模式 1: systemEvent(注入系统事件)

适合简单任务,直接向会话注入文本:

{
  "kind": "systemEvent",
  "text": "这是一个定时提醒:请检查今天的任务清单"
}

模式 2: agentTurn(运行AI代理)

适合复杂任务,启动独立AI会话执行:

{
  "kind": "agentTurn",
  "message": "搜索今天AI行业的重大新闻,生成摘要报告",
  "model": "default",
  "thinking": "high",
  "timeoutSeconds": 600
}

Session Target 选择

"sessionTarget": "main"      // 在主会话执行
"sessionTarget": "isolated"  // 独立会话执行(默认)
"sessionTarget": "current"   // 绑定当前会话
"sessionTarget": "session:xxx" // 指定会话ID

💻 实战示例

示例 1: 每日新闻摘要

// 每天早上8点自动生成AI新闻简报
cron({
  action: "add",
  job: {
    name: "daily-ai-news",
    description: "每日AI新闻简报",
    schedule: {
      kind: "cron",
      expr: "0 8 * * *",
      tz: "Asia/Shanghai"
    },
    payload: {
      kind: "agentTurn",
      message: `搜索今天AI行业的重大新闻,整理成摘要报告:
      - 按类别分类(技术突破/产品发布/融资动态)
      - 每个新闻配一句话摘要
      - 附上原文链接
      保存到 /var/www/miaoquai/news/ 目录`,
      timeoutSeconds: 300
    },
    delivery: {
      mode: "announce",
      channel: "feishu"
    }
  }
});

示例 2: 定时提醒

// 30分钟后提醒喝水
cron({
  action: "add",
  job: {
    name: "drink-water-reminder",
    schedule: {
      kind: "at",
      at: "2026-04-12T10:30:00+08:00"
    },
    payload: {
      kind: "systemEvent",
      text: "⏰ 提醒:该喝水了!工作再忙也要照顾好身体~"
    },
    deleteAfterRun: true  // 执行后自动删除
  }
});

示例 3: 周期性 SEO 任务

// 每天凌晨1点批量生成SEO内容
cron({
  action: "add",
  job: {
    name: "daily-seo-generation",
    description: "每日SEO内容批量生成",
    schedule: {
      kind: "cron",
      expr: "0 1 * * *",
      tz: "Asia/Shanghai"
    },
    payload: {
      kind: "agentTurn",
      message: `执行每日SEO任务:
      1. 分析搜索热词
      2. 批量生成5-8个教程页面
      3. 更新 sitemap.xml
      4. 生成执行报告`,
      timeoutSeconds: 3600
    }
  }
});

示例 4: 每周报告

// 每周五下午6点生成周报
cron({
  action: "add",
  job: {
    name: "weekly-report",
    schedule: {
      kind: "cron",
      expr: "0 18 * * 5",
      tz: "Asia/Shanghai"
    },
    payload: {
      kind: "agentTurn",
      message: `生成本周工作周报:
      1. 查询本周执行的所有定时任务
      2. 统计生成的内容数量
      3. 汇总数据指标
      4. 生成markdown格式报告
      发送到飞书群`,
      timeoutSeconds: 600
    },
    delivery: {
      mode: "announce",
      channel: "weekly-reports"
    }
  }
});

示例 5: 简单的 QQ 定时提醒

// 使用 qqbot_remind 简化接口
qqbot_remind({
  action: "add",
  content: "喝水时间到!",
  time: "30m"  // 30分钟后
});

// 每天早8点提醒
qqbot_remind({
  action: "add",
  content: "早安!开始新的一天~",
  time: "0 8 * * *",  // cron 表达式
  timezone: "Asia/Shanghai"
});

🛠️ 任务管理

列出所有任务

// 查看所有定时任务
cron({ action: "list" });

// 包含已禁用的任务
cron({ 
  action: "list",
  includeDisabled: true 
});

查看任务详情

// 获取任务执行历史
cron({ 
  action: "runs",
  jobId: "daily-ai-news"
});

立即执行任务

// 手动触发任务(强制模式)
cron({ 
  action: "run",
  jobId: "daily-ai-news",
  runMode: "force"
});

更新任务

// 修改任务配置
cron({ 
  action: "update",
  jobId: "daily-ai-news",
  patch: {
    enabled: false,  // 禁用任务
    schedule: {
      kind: "cron",
      expr: "0 9 * * *"  // 改为9点执行
    }
  }
});

删除任务

// 删除定时任务
cron({ 
  action: "remove",
  jobId: "daily-ai-news"
});

🎯 最佳实践

✅ 设置合理的超时

根据任务复杂度设置 timeoutSeconds。数据采集5分钟,SEO批量生成1小时,简单提醒30秒。

✅ 使用描述性名称

任务名要清晰表达用途。"daily-seo-gen" 比 "task-1" 好得多。

✅ 设置失败通知

重要任务要配置 failureAlert,任务失败时及时通知:

failureAlert: {
  mode: "announce",
  channel: "alerts",
  after: 2,  // 连续失败2次后报警
  cooldownMs: 3600000  // 1小时内只报警一次
}

⚠️ 避坑指南

  • 时间重叠 - 避免多个耗时长任务同时执行
  • 资源竞争 - 注意文件锁和数据库锁
  • 时区问题 - 始终明确指定 timezone
  • 任务堆积 - 上次的任务没执行完,下次又来了

📢 结果投递

通知到聊天频道

delivery: {
  mode: "announce",
  channel: "feishu",  // 发送到飞书
  accountId: "optional-account"
}

Webhook 回调

delivery: {
  mode: "webhook",
  to: "https://your-api.com/callback",
  bestEffort: true  // 失败不重试
}

不通知(静默执行)

delivery: {
  mode: "none"
}

📚 相关资源

🎬 结语

Cron 是自动化的心脏。有了它,你的AI Agent才能真正做到7×24小时不间断工作,从「手动工具」进化为「自动化系统」。

"世界上有一种境界,叫无人值守。最好的AI,是你设置了之后就忘了它,它却依然在默默为你工作。"

现在就去设置你的第一个定时任务,开启真正的AI自动化之旅吧!