Back to skills
SKILL.md
Cron Mastery 1.0.3
ASecurity掌握 OpenClaw 的计时系统。用于安排可靠的提醒、设置定期维护(管理员作业)以及了解何时使用 Cron 与 Heartbeat 来执行时间敏感的任务。
- 8 stars
- 0 votes
- 0 copies
- 2 views
- Added September 12, 2026
Security analysis
100/100Pro scans all 3 files and shows the line behind each finding
npx -y skills add lza6/Claude-code-cli-config --skill cron-mastery-1.0.3 --agent claude-codeAre you the author of Cron Mastery 1.0.3?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/lza6-cron-mastery-1-0-3)---
name: cron-mastery
description: "掌握 OpenClaw 的计时系统。用于安排可靠的提醒、设置定期维护(管理员作业)以及了解何时使用 Cron 与 Heartbeat 来执行时间敏感的任务。"
---
# 掌握 Cron
**规则#1:心跳漂移。 Cron 是精确的。**
该技能为 OpenClaw 2026.2.15+ 中的时间管理提供了权威指南。它通过严格区分临时检查(心跳)和硬性计划(cron)来解决“我错过了提醒”的问题。
## 核心原则
|系统|行为 |最适合 |风险|
| :--- | :--- | :--- | :--- |
| **心跳** | “我会尽可能检查”(例如,每 30-60m)|电子邮件检查、随意的新闻摘要、低优先级的民意调查。 | **漂移:** 如果心跳为 30m,“10m 内提醒我”任务将会失败。 |
| **计划** | “我会在 X 时间跑步”|提醒(“5 分钟内”)、每日报告、系统维护。 | **混乱:** 创建需要清理的一次性作业。 |
## 1.设置可靠的提醒(2026.2.15+标准)
**规则:** 切勿使用 `act:wait` 或内部循环来实现长时间延迟(>1 分钟)。将“cron:add”与一次性“at”计划结合使用。
### 精度和“调度器刻度”
虽然 Cron 很精确,但执行取决于 **网关心跳**(通常每 10-60 秒一次)。设置为 `:00` 秒的作业将在该时间之后的第一个“tick”处触发。根据您的网关配置,预计会有大约 30 秒的差异。
### 现代一次性提醒模式
使用此有效负载结构来执行“X 分钟内提醒我”的任务。
**主要功能(v2026.2.15+):**
- **有效负载选择:** 使用 **AgentTurn** 和 **严格说明** 来推送通知(对您的手机执行 ping 操作的提醒)。仅将 **systemEvent** 用于静默日志或后台状态更新。
- **可靠性:** `nextRunAtMs` 损坏和“先添加后更新”死锁已得到解决。
- **自动清理:** 成功后自动删除一次性作业(`deleteAfterRun: true`)。
**关键:推送通知与静默日志**
- **systemEvent(无声):** 将文本插入聊天历史记录中。非常适合后台日志,但 **不会** 在 Telegram/WhatsApp 上 ping 用户的手机。
- **AgentTurn(主动):** 唤醒代理以传递消息。 **推送通知所需**。使用“严格”提示来避免 AI 喋喋不休。
**对于推送通知提醒(可靠):**
```json
{
"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\n💧 Drink water, Momo!"
},
"sessionTarget": "isolated",
"delivery": { "mode": "announce", "channel": "telegram", "to": "1027899060" }
}
```
**对于后台日志(静默):**
```json
{
"name": "Log: System Pulse",
"schedule": { "kind": "every", "everyMs": 3600000 },
"payload": {
"kind": "systemEvent",
"text": "[PULSE] System healthy."
},
"sessionTarget": "main"
}
```
### Cron 并发规则(稳定)
在 2026 年 2 月 15 日之前,“先添加后更新”模式会导致死锁。虽然现在已经稳定下来,但直接在初始 `cron.add` 调用中传递所有参数(包括 `wakeMode: "now"`)仍然是**最佳实践**,以获得最大效率。
## 2. 看门人(自动清理)- 遗产
**注意:** 自 v2026.2.14 起,OpenClaw 包含 **维护重新计算语义**。网关现在会自动清理卡住的作业并修复损坏的计划。
**仅需要手动清理:**
- 使用“deleteAfterRun: false”创建的一次性作业。
- 您不再需要的陈旧的重复工作。
### 为什么使用 `sessionTarget: "main"`? (重要)
子代理(“隔离”)通常具有受限制的工具策略,并且无法调用“gateway”或删除其他“cron”作业。对于像 Janitor 这样的系统维护,**始终**通过“systemEvent”以“main”会话为目标,以便主代理(具有完整的工具访问权限)执行清理工作。
## 3.参考:时区锁定
为了让 cron 工作,代理**必须**知道它的时间。
* **操作:** 将用户的时区添加到`MEMORY.md`。
* **示例:** `时区:开罗 (GMT+2)`
* **验证:** 如果用户说“晚上 9 点提醒我”,请确认:“开罗时间晚上 9 点?”在安排之前。
## 4.自我唤醒规则(行为)
**问题:** 如果你说“我等 30 秒”并结束你的回合,你就会去睡觉。如果没有发生任何事件,你就无法醒来。
**解决方案:** 如果您需要轮流“等待”,您 **必须** 安排一个 Cron 作业。
* **等待 < 1 分钟(交互式):** 仅当您保持工具循环打开时才允许(使用 `act:wait`)。
* **等待 > 1 分钟(异步):** 将 Cron 与 `wakeMode: "now"` 一起使用。
## 5. 旧版迁移指南
如果您有使用这些模式的旧 cron 作业,请更新它们:
|旧版(2026.2.3 之前)|现代(2026.2.15+)|
| :--- | :--- |
| `"schedule": {"kind": "at", "atMs": 1234567890}` | `"schedule": {"kind": "at", "at": "2026-02-06T01:30:00Z"}` |
|有效负载中的 `"deliver": true` |不需要 - ‘announce’ 模式处理交付 |
| `"sessionTarget": "main"` | `"sessionTarget": "isolated"`(默认行为)|
|需要手动清理幽灵 |一次性自动删除 (`deleteAfterRun: true`) |
| `cron.add` 之后的 `cron.update`具有所有属性的单步“cron.add” |
## 故障排除
* **“我的提醒没有触发”:** 检查 `cron:list`。验证“at”时间戳是否为将来的时间戳(ISO 8601 格式)。确保设置了“wakeMode:“now””。
* **“网关超时(10000ms)”:** 如果 `cron` 工具花费太长时间(巨大的作业列表或文件锁定),就会发生这种情况。
- **修复 1:** 手动删除 `~/.openclaw/state/cron/jobs.json` 并在网关损坏时重新启动网关。
- **修复 2:** 运行手动扫描以减少作业数量。
* **“作业已运行,但我没有收到消息”:** 确保您使用 **严格指令模式** 和 `agentTurn` + `announce` 模式来进行主动 ping。
* **“提醒消息有额外的评论”:** 子代理正在对话。使用严格的提示模式:“将这条确切的消息传递给用户,无需修改或注释:\n\n💧此处是您的消息”`
Files in this skill
- SKILL.md
- _meta.json
- references/templates.md
Attribution
Comments
Loading comments…