mcpField
C
cron-mastery

cron-mastery

github.com/sundial-orgAgent 工作流670259 次安装34 周前更新
代码仓库

关于 cron-mastery

cron-mastery 是面向 OpenClaw Agent 的时间管理技能,指导设置可靠提醒和定时任务。它区分精确的 cron 调度与周期性心跳,并涵盖任务清理和时区处理。

主要功能

  1. 01按时间需求选择 cron 或心跳
  2. 02用 cron 安排一次性提醒
  3. 03清理已完成的一次性任务
  4. 04记录并确认时区
  5. 05安排跨 Agent 回合唤醒

适用场景

  1. 01设置指定时间的提醒
  2. 02创建每日定期报告或维护任务
  3. 03删除已完成的一次性任务
  4. 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)。为避免列表杂乱,请安装每日清洁工。

设置说明
  1. 检查当前任务: cron:list(includeDisabled: true)
  2. 创建清洁工:
    • 名称: 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 个旧任务”: 立即手动运行清洁工。

评论

支持 Markdown