欢迎光临
我们一直在努力

OpenClaw Cron 定时任务从入门到实战

定时任务完全指南,手把手教你自动化日常工作。


目录

  • 为什么需要 Cron
  • 核心概念
  • 命令行基础
  • 实战案例
  • 高级用法
  • Cron 表达式大全
  • 排错指南
  • 常见问题

  • 1. 为什么需要 Cron

    你是否有以下困扰:

    • ⏰ 每天早上手动检查模型训练结果
    • 🔄 定时去 GitHub 看有没有新的 PR 需要 review
    • 📊 每天手动跑数据报表
    • 🔔 服务器挂了才发现
    • 📉 定时监控模型指标异常

    Cron 就是来解决这些问题的。 它帮你定时执行任务,推送结果,相当于 24 小时待命的小助手。


    2. 核心概念

    2.1 三个关键问题

    每次创建 Cron 任务,需要回答三个问题:

    问题CLI 参数说明
    什么时候跑? –at / –cron / –every 调度策略
    在哪跑? –session main / isolated / current / session:xxx
    跑什么? –system-event / –agent-turn 具体动作

    2.2 SessionTarget 四种模式

    ┌─────────────────────────────────────────────────────────────┐
    │ SessionTarget 详解 │
    ├─────────────────────────────────────────────────────────────┤
    │.main │ 主会话,有完整上下文,但会刷屏 │
    ├────────────────┼────────────────────────────────────────────┤
    │.isolated │ 独立会话,不打扰你,结果通过 announce 推送 │
    ├────────────────┼────────────────────────────────────────────┤
    │.current │ 创建时绑定的当前会话 │
    ├────────────────┼────────────────────────────────────────────┤
    │.session:xxx │ 自定义命名会话,跨天记住之前发生了什么 │
    └─────────────────────────────────────────────────────────────┘

    通俗理解:

    • main = 在微信主群里发消息,大家都能看到
    • isolated = 私聊小助手,不打扰群聊,结果会单独发给你
    • session:自定义名 = 有一个专门的小本本,每次跑完记一笔,下次还能翻看

    2.3 Payload 两种类型

    类型适用场景说明
    systemEvent 简单提醒、主会话触发 往主会话塞一条消息
    agentTurn 复杂任务、独立执行 让 AI 跑一段完整任务

    2.4 Delivery 推送方式

    模式说明适用场景
    announce 跑完后推送到指定渠道 绝大部分场景
    webhook POST 结果到指定 URL 对接外部系统
    none 跑完就拉倒,不推送 后台内部任务

    3. 命令行基础

    3.1 安装确认

    # 先确认 OpenClaw 已安装
    openclaw –version

    # 查看 cron 子命令
    openclaw cron –help

    3.2 核心命令一览

    # 添加任务
    openclaw cron add [参数...]

    # 列出所有任务
    openclaw cron list

    # 查看任务详情
    openclaw cron get <job-id>

    # 立即触发任务
    openclaw cron run <job-id>

    # 查看任务运行历史
    openclaw cron runs –id <job-id>

    # 删除任务
    openclaw cron remove –id <job-id>

    # 停止/启用任务
    openclaw cron disable –id <job-id>
    openclaw cron enable –id <job-id>

    # 查看 cron 状态
    openclaw cron status

    3.3 常用参数表

    参数简写说明示例
    –name -n 任务名称,方便识别 –name "早间报告"
    –at – 一次性时间(ISO 8601) –at "2026-03-15T10:00:00Z"
    –cron – Cron 表达式 –cron "30 9 * * 1-5"
    –every – 间隔时间(毫秒) –every 3600000
    –tz – 时区 –tz "Asia/Shanghai"
    –session -s 会话目标 –session isolated
    –system-event – 主会话消息内容 –system-event "检查数据"
    –agent-turn – 独立任务描述 –agent-turn "分析日志…"
    –announce – 启用结果推送 –announce
    –channel – 推送渠道 –channel telegram
    –to – 推送目标 –to "channel:C123"
    –wake – 唤醒模式 –wake now
    –stagger – 随机延迟范围 –stagger 30s
    –exact – 精确时间(不随机) –exact
    –delete-after-run – 跑完就删 –delete-after-run

    4. 实战案例

    案例 1:每日模型训练结果自动检查

    场景:每天早上 9:30 自动检查昨天的训练日志,生成报告推送到 Telegram

    Step 1: 创建任务

    openclaw cron add \\
    –name "每日模型训练报告" \\
    –cron "30 9 * * 1-5" \\
    –tz "Asia/Shanghai" \\
    –session isolated \\
    –agent-turn "请执行以下任务:
    1. 查看 ~/logs 目录
    2. 找到最新的训练日志文件(昨天日期的)
    3. 提取关键指标:final_loss、final_accuracy、total_epochs、training_time
    4. 检查是否有错误或警告
    5. 生成一份简洁的中文报告,包含:
    – 训练是否成功
    – 关键指标对比前天
    – 如有异常,标记为 ⚠️ 警告"
    \\
    –announce \\
    –channel telegram \\
    –stagger 30s

    Step 2: 验证任务创建成功

    openclaw cron list

    输出类似:

    ┌──────────────┬──────────────────────┬─────────────────┐
    │ ID │ Name │ Schedule │
    ├──────────────┼──────────────────────┼─────────────────┤
    │ abc123 │ 每日模型训练报告 │ 30 9 * * 1-5 │
    └──────────────┴──────────────────────┴─────────────────┘

    Step 3: 手动测试一次

    # 立即运行看看效果
    openclaw cron run abc123

    # 查看运行结果
    openclaw cron runs –id abc123


    案例 2:定时服务器健康检查

    场景:每小时检查服务器状态,异常时 Slack 告警

    openclaw cron add \\
    –name "服务器健康检查" \\
    –every 3600000 \\
    –session isolated \\
    –agent-turn "请执行健康检查:
    1. 运行 'uptime' 查看负载
    2. 运行 'df -h' 查看磁盘空间
    3. 运行 'free -h' 查看内存
    4. 检查 GPU 可用性(nvidia-smi)
    5. 如果发现以下任一情况,标记为告警:
    – 磁盘使用率 > 90%
    – 内存使用率 > 85%
    – 负载 > 核心数 * 2
    – GPU 不可用
    6. 生成简洁报告,异常项前面加 🔴"
    \\
    –delivery webhook \\
    –to "https://hooks.slack.com/services/xxx/yyy/zzz" \\
    –stagger 1m


    案例 3:股市开盘提醒 + 自动查数据

    场景:A股开盘前(9:25)推送当日市场情绪

    openclaw cron add \\
    –name "A股开盘提醒" \\
    –cron "25 9 * * 1-5" \\
    –tz "Asia/Shanghai" \\
    –session isolated \\
    –agent-turn "查询今日A股市场情况:
    1. 获取上证指数开盘情况
    2. 获取市场情绪指标(涨跌幅统计)
    3. 给出简短的操盘建议(仅供娱乐)"
    \\
    –announce \\
    –channel telegram \\
    –exact


    案例 4:GitHub PR 自动审查提醒

    场景:每天下午 4 点检查有没有需要 review 的 PR

    openclaw cron add \\
    –name "PR Review 提醒" \\
    –cron "0 16 * * 1-5" \\
    –tz "Asia/Shanghai" \\
    –session main \\
    –system-event "提醒小星星:检查一下待 Review 的 PR 列表,用 'gh pr list –review-requested @me –state open' 看看有哪些需要处理"


    案例 5:定时任务队列监控

    场景:每 10 分钟检查任务队列,积压超过阈值就告警

    openclaw cron add \\
    –name "任务队列监控" \\
    –every 600000 \\
    –session isolated \\
    –agent-turn "执行以下检查:
    1. 查询 Redis 任务队列长度:redis-cli llen task_queue
    2. 如果队列长度 > 100,标记为告警
    3. 查询最近失败任务数:redis-cli lrange failed_tasks -1 -1
    4. 生成报告:
    – 当前队列长度
    – 过去 10 分钟新增任务数
    – 失败任务数
    – 结论:正常/警告/告警"
    \\
    –announce \\
    –channel telegram


    案例 6:定时数据报表生成

    场景:每周五下午 6 点生成周报

    openclaw cron add \\
    –name "周报生成" \\
    –cron "0 18 * * 5" \\
    –tz "Asia/Shanghai" \\
    –session isolated \\
    –agent-turn "请生成本周工作周报:
    1. 统计代码提交:git log –since='2024-01-01' –until='2024-01-07' –oneline | wc -l
    2. 统计 PR 数量:gh pr list –state merged –created '2024-01-01..2024-01-07'
    3. 读取 ~/notes/weekly.md 添加本周进展
    4. 生成 Markdown 格式周报,保存到 ~/reports/weekly-2024-W01.md"
    \\
    –announce \\
    –channel telegram


    5. 高级用法

    5.1 自定义 Session(跨天记忆)

    如果希望任务能"记住"之前的结果,用自定义 session:

    openclaw cron add \\
    –name "每日模型指标追踪" \\
    –cron "0 10 * * *" \\
    –tz "Asia/Shanghai" \\
    –session "session:model-tracker" \\
    –agent-turn "今天模型指标:
    1. 读取 ~/metrics/latest.json
    2. 对比昨天的指标
    3. 计算变化趋势
    4. 记录到 ~/metrics/history.md"
    \\
    –announce \\
    –channel telegram

    这样每次运行都会在同一个会话里,可以追问"上周趋势怎么样"。

    5.2 精确时间(不随机延迟)

    # 默认为了防止扎堆,会有随机延迟
    # 禁用:
    –exact
    # 或
    –stagger 0

    5.3 条件执行

    OpenClaw 的 cron 本身不支持复杂条件,但可以通过 prompt 实现:

    –agent-turn "只有当今天是中国工作日时才执行以下任务…"

    5.4 串接多个任务

    通过 webhook 可以实现任务链:

    任务A –(webhook)–> 任务B –(webhook)–> 任务C


    6. Cron 表达式大全

    6.1 基础格式

    ┌───────────── 分钟 (0 – 59)
    │ ┌─────────── 小时 (0 – 23)
    │ │ ┌───────── 日 (1 – 31)
    │ │ │ ┌─────── 月 (1 – 12)
    │ │ │ │ ┌───── 周 (0 – 6,0=周日)
    │ │ │ │ │
    * * * * *

    6.2 常用表达式

    表达式含义示例
    0 9 * * * 每天 9:00 早间简报
    30 9 * * 1-5 工作日 9:30 上班提醒
    0 */2 * * * 每 2 小时 定时检查
    0 0 * * * 每天午夜 数据备份
    0 */6 * * * 每 6 小时 例行检查
    */15 * * * * 每 15 分钟 高频监控
    0 10 * * 1 每周一 10:00 周报
    0 9 1 * * 每月 1 日 9:00 月报
    0 9 * * 0,6 周末 9:00 周末特供

    6.3 特殊字符

    字符含义示例
    * 任意值 * * * * * = 每分钟
    , 多个值 0 9 * * 1,3,5 = 周一三五
    – 范围 0 9 * * 1-5 = 工作日
    / 间隔 */15 * * * * = 每 15 分钟

    7. 排错指南

    7.1 任务没运行?

    # 1. 检查 cron 服务状态
    openclaw cron status

    # 2. 确认任务存在且启用
    openclaw cron list

    # 3. 查看最近运行记录
    openclaw cron runs –id <job-id>

    7.2 时间对不上?

    • 默认时区是 UTC
    • 中国时间要加 –tz "Asia/Shanghai"
    • ISO 时间带 Z = UTC,不带 = 本地时间

    # 错误示例:北京时间 9:30 但写成 UTC
    –cron "30 1 * * *" # UTC 1:30 = 北京 9:30

    # 正确示例
    –cron "30 9 * * *" \\
    –tz "Asia/Shanghai"

    7.3 结果没收到?

  • 确认 –announce 或 –delivery 正确设置
  • 确认 –channel 正确(telegram/elegram/slack 等)
  • 检查目标是否正确(–to "channel:xxx")
  • 7.4 任务跑失败了?

    # 查看详细日志
    openclaw cron runs –id <job-id> –verbose


    8. 常见问题

    Q: Cron 和 Heartbeat 有什么区别?

    特性CronHeartbeat
    触发方式 精确时间 轮询间隔
    持久化 ✅ 持久 ❌ 临时
    复杂任务 ✅ 支持 ⚠️ 简单
    推送方式 灵活 依赖配置

    简单说:Cron = 定时闹钟,Heartbeat = 轮询监听。

    Q: 可以创建多少个 Cron 任务?

    没有硬性限制,但建议控制在 50 个以内。

    Q: 任务会后台运行还是会唤醒 AI?

    这取决于你用什么:

    • systemEvent = 唤醒主会话的 AI
    • agentTurn = 在独立会话跑 AI

    Q: 如何调试刚创建的任务?

    # 立即运行一次
    openclaw cron run <job-id>

    # 观察输出


    总结

    Cron 是你的免费 24 小时助手,特别适合:

    • ✅ 定时检查模型训练结果
    • ✅ 定时监控服务器健康
    • ✅ 定时生成报表
    • ✅ 定时推送提醒
    • ✅ 定时数据备份

    入门只需要一条命令:

    openclaw cron add –name "测试" –at "2026-03-15T12:00:00Z" –session main –system-event "测试成功!"

    赞(0)
    未经允许不得转载:171主机测评 » OpenClaw Cron 定时任务从入门到实战
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址