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

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

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

小夜