关于 cron-mastery
cron-mastery 是面向 OpenClaw Agent 的时间管理技能,指导设置可靠提醒和定时任务。它区分精确的 cron 调度与周期性心跳,并涵盖任务清理和时区处理。
主要功能
- 01按时间需求选择 cron 或心跳
- 02用 cron 安排一次性提醒
- 03清理已完成的一次性任务
- 04记录并确认时区
- 05安排跨 Agent 回合唤醒
适用场景
- 01设置指定时间的提醒
- 02创建每日定期报告或维护任务
- 03删除已完成的一次性任务
- 04异步等待后唤醒 Agent
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ sundial-org/ awesome-openclaw-skills --skill cron-mastery安装后在 Claude Code 中输入/cron-mastery确认已加载。
附带文件references/TEMPLATES.md
详细介绍
Cron 精通指南
规则 #1:心跳会漂移,Cron 精确可靠。
本技能提供 OpenClaw 时间管理的权威指南。它通过严格区分随意检查(心跳)和固定计划(Cron),解决“我错过提醒了”的问题。
核心原则
| 系统 | 行为 | 最适用场景 | 风险 |
|---|---|---|---|
| Heartbeat | “我有空时会检查一下”(例如,每 30-60m) | 检查邮件、随意查看新闻摘要、低优先级轮询。 | 漂移: 如果心跳间隔为 30m,“10 分钟后提醒我”的任务就会失败。 |
| Cron | “我会在 X 时间准时运行” | 提醒(“5 分钟后”)、每日报告、系统维护。 | 杂乱: 会创建需要清理的一次性任务。 |
1. 设置可靠的提醒
长时间延迟(>1 分钟)时,绝不要使用 act:wait 或内部循环。请使用带有一次性 at 计划的 cron:add。
标准提醒模式(JSON)
对于“X 分钟后提醒我”这类任务,请使用以下负载结构:
{
"name": "Remind: Drink Water",
"schedule": {
"kind": "at",
"atMs": <CURRENT_MS + DELAY_MS>
},
"payload": {
"kind": "agentTurn",
"message": "⏰ Reminder: Drink water!",
"deliver": true
},
"sessionTarget": "isolated",
"wakeMode": "next-heartbeat"
}
注意:即使设置了 wakeMode: "next-heartbeat",Cron 系统也会在 atMs 注入事件。如果需要在任务负载之外强制立即唤醒,请在 cron:wake 工具中使用 mode: "now"。
2. 清洁工(自动清理)
一次性 Cron 任务(kind: at)在运行后会自行停用,但仍会作为“幽灵任务”留在列表中(enabled: false、lastStatus: ok)。为避免列表杂乱,请安装每日清洁工。
设置说明
- 检查当前任务:
cron:list(includeDisabled: true) - 创建清洁工:
- 名称:
Daily Cron Cleanup - 计划: 每 24 小时运行一次(
everyMs: 86400000) - 负载: 运行特定提示词的 Agent 轮次。
- 名称:
清洁工提示词(Agent 轮次)
“该进行 24 小时 Cron 清理了。列出所有 Cron 任务,包括已停用的任务。如果发现任何
enabled: false且lastStatus: ok的任务(已完成的一次性任务),请将其删除以保持列表整洁。不要删除正在运行的周期性任务。记录你删除的内容。”
3. 参考:锁定时区
要让 Cron 正常工作,Agent 必须知道当前时间。
- 操作: 将用户的时区添加到
MEMORY.md。 - 示例:
Timezone: Cairo (GMT+2) - 确认: 如果用户说“晚上 9 点提醒我”,请在安排前确认:“是开罗时间晚上 9 点吗?”
4. 自唤醒规则(行为规范)
问题: 如果你说“我等 30 秒”,然后结束当前轮次,你就会进入休眠。没有事件时,你无法自行唤醒。 解决方案: 如果需要跨轮次“等待”,就必须安排 Cron 任务。
- 等待 < 1 分钟(交互式): 仅在保持工具循环开启时(使用
act:wait)才允许。 - 等待 > 1 分钟(异步): 使用
wakeMode: "now"的 Cron。
“30 秒后回来查看”的示例负载:
{
"schedule": { "kind": "at", "atMs": <NOW + 30000> },
"payload": { "kind": "agentTurn", "message": "⏱️ 30s check-in. Report status." },
"wakeMode": "now"
}
故障排除
- “我的提醒没有触发”: 检查
cron:list。如果任务存在但没有触发,请检查系统时钟与atMs是否一致。 - “我有 50 个旧任务”: 立即手动运行清洁工。