Cron Mastery:心跳会漂移,定时任务要交给 cron

前言

用 OpenClaw 做过提醒或周期任务的人大多遇到过这类问题:设了”10 分钟后提醒我”,结果半小时后才收到,或者干脆没响。原因通常不是模型不听话,而是把硬性时刻交给了心跳(heartbeat)——心跳是”我有空就看一眼”的机制,间隔常见 30-60 分钟,任务自然漂移。

Cron Mastery 就是为解决”我错过了我的提醒”这一类问题而生的。它把 OpenClaw 里的两套定时机制拆开:心跳管随意检查,cron 管精确时刻。

这是什么

一句话定位:Cron Mastery 是 OpenClaw 定时系统的使用指南,覆盖可靠提醒、周期性维护(janitor 任务)以及 Cron 与 Heartbeat 的选用时机。

  • 出品:i-mw,发布在 ClawHub(clawhub 来源),坐标 @i-mw/cron-mastery
  • 版本:1.0.3,License MIT-0
  • 适用环境:OpenClaw 2026.2.15+
  • 分类:dev-programming,不需要 API key
  • 热度:截至抓取时,SkillHub 页面显示评分 100000、下载 24724 次、安装 665 次(数据随页面变动)

核心功能

只讲它明确要求的几件事:

  1. 划定 Cron 与 Heartbeat 的边界。Heartbeat 适合邮件检查、新闻摘要、低优先级轮询;Cron 适合”5 分钟后提醒我”、日报、系统维护。Skill 里的原话是:Heartbeats drift, Cron is precise。
  2. 可靠的一次性提醒。用 cron:add 建一次性任务(schedule.kind = “at”),配合 deleteAfterRun: true 自动清理。明确禁止用 act:wait 或内部循环做超过 1 分钟的等待。
  3. 区分推送与静默。systemEvent 只把文本注入聊天历史,不会在 Telegram/WhatsApp 上弹通知;要主动推送必须用 agentTurn + announce 模式。
  4. Janitor 周期维护。旧版做法是主会话定时清理任务;OpenClaw v2026.2.14 起 gateway 已内置维护语义,手工清理只针对 deleteAfterRun: false 的一次性任务和废弃的周期任务。
  5. 时区锁定与 Self-Wake 规则。把用户时区写进 MEMORY.md;跨轮次等待超过 1 分钟必须排 cron,不能指望结束回合后”自动醒来”。
  6. 遗留任务迁移。给出 2026.2.3 之前的旧写法到 2026.2.15+ 新写法的对照表。

安装与启用

官方安装命令(ClawHub 页面提供):

$ openclaw skills install @i-mw/cron-mastery

安装后按 SKILL.md 的指引在会话中使用即可。资料中没有 Cursor、Codex CLI、Claude Code 的专门安装方式,这里不展开。

典型用法

下面两个 payload 来自官方 SKILL.md,分别是”到点推送提醒”和”后台静默记录”。

推送提醒(agentTurn + announce,会在手机上弹通知):

{
  "name": "Remind: Water",
  "schedule": { "kind": "at", "at": "2026-02-06T01:30:00Z" },
  "payload": {
    "kind": "agentTurn",
    "message": "DELIVER THIS EXACT MESSAGE TO THE USER WITHOUT MODIFICATION OR COMMENTARY:\n\nDrink water, Momo!"
  },
  "sessionTarget": "isolated",
  "delivery": { "mode": "announce", "channel": "telegram", "to": "1027899060" }
}

静默日志(systemEvent,只写历史不打扰人):

{
  "name": "Log: System Pulse",
  "schedule": { "kind": "every", "everyMs": 3600000 },
  "payload": {
    "kind": "systemEvent",
    "text": "[PULSE] System healthy."
  },
  "sessionTarget": "main"
}

要点:message 里那句英文是官方推荐的 strict prompt 模式,作用是防止子代理在推送时加入自己的评论。”Job ran but I didn’t get the message” 这类问题,基本都出在没用 agentTurn + announce。

适用场景与注意

适合:需要在 OpenClaw 里做精确到分钟的提醒、日报、周期维护的人,以及从旧版 cron 写法迁移的人。

几个坑,都出自官方排障章节:

  • 精度上限:cron 再精确,执行也要等 gateway 的 heartbeat tick(常见 10-60 秒),到点后可能延迟约 30 秒才触发。
  • 任务会堆积:deleteAfterRun: false 的任务和废弃的周期任务需要手工清理,否则 job 列表变大后 cron 工具可能超时(Gateway Timeout 10000ms)。
  • 子代理权限:isolated 会话的工具策略受限,清理类任务要用 sessionTarget: “main”,让主会话执行。
  • 时区不写就会猜:用户说”晚上 9 点提醒”,先确认是哪个时区的 9 点,再把时区写进 MEMORY.md。
  • jobs.json 损坏时:删除 ~/.openclaw/state/cron/jobs.json 后重启 gateway,再手工清理一遍任务。

结尾

Cron Mastery 的价值不在功能多,而在把一条经验固化下来:精确时刻交给 cron,随意检查交给心跳。对已经在 OpenClaw 上跑提醒和周期任务的人来说,安装成本很低,避免的是”提醒没响”这类难查的问题。

官方地址:https://api.skillhub.cn/zcwl/cron-mastery
上游页面:https://clawhub.ai/i-mw/cron-mastery

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜