OpenClaw 不只是等你发消息才工作——通过 Cron 和 Heartbeat,你的 AI 助手可以主动在指定时间执行任务、发送通知、监控状态。
Cron vs Heartbeat:怎么选
| Cron | Heartbeat | |
|---|---|---|
| 触发时间 | 精确时间(如每天 9:00) | 周期性轮询(每 N 分钟) |
| 适合 | 固定时间任务 | 批量周期检查 |
| 上下文 | 独立会话 | 主会话 |
| 配置方式 | openclaw cron add | HEARTBEAT.md |
经验规则:
- 需要精确时间(每天 9 点发日报)-> 用 Cron
- 需要每隔一段时间检查多件事 -> 用 Heartbeat
- 能批量合并的周期检查 -> Heartbeat(减少 API 消耗)
Cron 定时任务
添加 Cron 任务
bash
# 每天早上 9 点发服务器状态报告
openclaw cron add \
--schedule '0 9 * * *' \
--task '检查服务器 CPU、内存、磁盘状态,把报告发到 Telegram'
# 每周一早上 8 点发周报提醒
openclaw cron add \
--schedule '0 8 * * 1' \
--task '生成上周工作总结,发到 Telegram'
# 每小时检查网站可用性
openclaw cron add \
--schedule '0 * * * *' \
--task '检查 https://yoursite.com 是否可访问,不可用时发警告'Cron 表达式格式
分 时 日 月 周
| | | | |
0 9 * * * -> 每天 9:00
0 9 * * 1 -> 每周一 9:00
*/30 * * * * -> 每 30 分钟
0 8,18 * * * -> 每天 8:00 和 18:00
管理 Cron 任务
bash
openclaw cron list # 列出所有任务
openclaw cron disable <id> # 禁用某个任务
openclaw cron delete <id> # 删除任务
openclaw cron run <id> # 立即执行一次(测试)Heartbeat 轮询
Heartbeat 是 OpenClaw 定期向主 Agent 发送的轮询信号,Agent 根据 HEARTBEAT.md 决定要做什么。
配置 Heartbeat 间隔
bash
# ~/.openclaw/config.json
{
"heartbeat": {
"enabled": true,
"intervalMinutes": 30
}
}编写 HEARTBEAT.md
markdown
# HEARTBEAT.md
每次收到心跳时,按以下顺序检查(不要全部都检查,轮流做):
## 检查清单
### 邮件(每 2 小时)
- 检查有没有未读的重要邮件
- 有紧急邮件就发 Telegram 通知
### 日历(每天早上 8 点前)
- 查看今天的日程
- 有会议提前 30 分钟提醒
### 服务器监控(每小时)
- CPU > 80% 或内存 > 90% 发警告
### 记忆整理(每周)
- 读取近期 memory/*.md
- 更新 MEMORY.md 长期记忆
## 状态跟踪
记录每次检查时间到 memory/heartbeat-state.json
避免同一事项短时间内重复检查heartbeat-state.json 示例
json
{
"lastChecks": {
"email": 1710000000,
"calendar": 1709990000,
"server": 1710001000
},
"intervals": {
"email": 7200,
"calendar": 86400,
"server": 3600
}
}实用配置案例
案例 1:内容发布机器人
bash
# 每天 9 点自动搜索和发布文章
openclaw cron add \
--schedule '0 9 * * *' \
--task '按照 SOUL.md 的内容策略,搜索并发布 10 篇今日文章到网站'案例 2:GitHub PR 监控
bash
# 每 30 分钟检查是否有新 PR 需要 review
openclaw cron add \
--schedule '*/30 * * * *' \
--task '检查 GitHub 的待处理 PR,有新的就发 Telegram 通知并附上摘要'案例 3:价格监控
bash
# 每天检查一次目标商品价格
openclaw cron add \
--schedule '0 10 * * *' \
--task '检查 Amazon 上 [商品链接] 的价格,如果低于 $XX 发通知'安静时间设置
markdown
# HEARTBEAT.md 里加上安静时间规则
## 安静时间
- 23:00 - 08:00 不主动发通知(除非紧急情况)
- 紧急定义:服务器宕机、重要邮件、安全告警最佳实践
1. Heartbeat 任务要快:每次 Heartbeat 最多做 1-2 件事,不要做耗时的操作。
2. 用 state.json 避免重复:记录每次检查时间,同一事项不要频繁重复。
3. 区分「提醒」和「行动」:Heartbeat 主要用于提醒,复杂行动改用 Cron 独立任务。
4. 测试先于部署:添加 Cron 任务后先用 openclaw cron run <id> 测试一次。
来源:OpenClaw 官方文档 | Cron & Heartbeat