前面几篇讲的都是”你问 Bot 答”。但 OpenClaw 还有一个更有意思的能力:Heartbeat——让 Bot 按照设定的节奏主动运行,不需要你发消息触发。
一、Heartbeat 是什么
Heartbeat 是 OpenClaw 的定时任务系统。你可以告诉 Bot “每天早上 8 点醒来看一眼有没有什么需要处理的事”,它就会按时自动运行,必要时主动发消息通知你。
典型使用场景:
- 早报推送:每天早上自动搜索当天重要新闻,发到 Telegram
- 服务器监控:每小时检查一次日志或指标,有异常立刻通知
- 定时提醒:每周一提醒你本周的待办清单
- 数据汇总:每天下班前整理当天的工作记录
二、两种定时机制
OpenClaw 的定时能力分两种,适合不同场景:
| 机制 | 说明 | 适合场景 |
|---|---|---|
| Heartbeat | 轻量、低成本,运行在主会话里 | 日常巡检、简单提醒 |
| Cron Job | 独立会话、可发送通知到指定 Channel | 复杂任务、需要推送的场景 |
三、Heartbeat:轻量定时巡检
基本配置
在你的工作目录下创建 HEARTBEAT.md 文件,Bot 启动时会自动读取它,按照里面定义的节奏运行:
---
every: 30m
target: last
lightContext: true
isolatedSession: false
showOk: false
showAlerts: true
---
## 检查清单
- 检查是否有重要邮件或消息需要我处理
- 如果没有需要处理的事情,回复 HEARTBEAT_OK
- 如果发现需要关注的内容,用中文简要说明
关键配置项说明
| 参数 | 说明 | 示例值 |
|---|---|---|
every | 运行间隔 | 30m、1h、6h |
target | 把结果发到哪里:last(最近的对话)、none(不发送) | last |
lightContext | 只加载 HEARTBEAT.md,减少 token 消耗 | true |
isolatedSession | 使用独立会话,不污染主对话 | true |
showOk | 正常时是否发消息(设为 false 可以减少打扰) | false |
showAlerts | 有需要处理的事情时发消息 | true |
activeHours | 限定活跃时间段,避免深夜打扰 | "08:00-22:00" |
重要:HEARTBEAT_OK 约定
在 HEARTBEAT.md 的检查清单里,必须告诉 Bot 没有异常时回复 HEARTBEAT_OK。这是 OpenClaw 识别”一切正常、无需通知”的信号,否则它每次运行都会发消息。
四、Cron Job:定时推送任务
Cron Job 比 Heartbeat 更灵活,可以设定精确时间、发送到指定 Channel。
创建一次性定时任务
在指定时间执行一次:
openclaw cron add \
--name "周一提醒" \
--at "2026-03-30T09:00:00+08:00" \
--session main \
--system-event "今天是周一,请帮我整理本周的待办事项并发给我"
创建循环定时任务
每天早上 8 点运行,结果推送到 Telegram:
openclaw cron add \
--name "每日早报" \
--cron "0 8 * * *" \
--tz "Asia/Shanghai" \
--session isolated \
--message "搜索今天最重要的科技新闻,用中文整理成早报发给我" \
--announce \
--channel telegram \
--to "你的telegram_user_id"
查看和管理 Cron Job
# 查看所有定时任务
openclaw cron list
# 删除一个任务(先用 list 找到 ID)
openclaw cron remove <job-id>
# 立即触发一次(测试用)
openclaw system event --text "测试:整理今日待办" --mode now
Cron Job 的配置保存在 ~/.openclaw/cron/jobs.json,重启 Gateway 后自动恢复,不会丢失。
五、实用示例
每天早报
openclaw cron add \
--name "每日早报" \
--cron "0 8 * * *" \
--tz "Asia/Shanghai" \
--session isolated \
--message "联网搜索今天的科技新闻,整理出3-5条最重要的,用中文发给我" \
--announce \
--channel telegram \
--to "你的user_id"
每小时服务检查(HEARTBEAT.md 方式)
---
every: 1h
target: last
lightContext: true
showOk: false
showAlerts: true
activeHours: "09:00-23:00"
---
检查以下内容:
- 如果一切正常,回复 HEARTBEAT_OK
- 如果发现任何异常或需要关注的内容,用简短的中文说明
周报汇总
openclaw cron add \
--name "周报" \
--cron "0 17 * * 5" \
--tz "Asia/Shanghai" \
--session isolated \
--message "今天是周五,请帮我整理本周的工作亮点,生成一份简短的周报摘要" \
--announce \
--channel telegram \
--to "你的user_id"
六、省 Token 的小技巧
Heartbeat 每次运行都会消耗 token,长期下来有一定费用。几个省 token 的设置:
---
every: 1h
lightContext: true ← 只加载 HEARTBEAT.md,不加载完整上下文
isolatedSession: true ← 独立会话,不带入历史对话
showOk: false ← 正常时不发消息,减少无效运行
---
lightContext: true + isolatedSession: true 组合,每次 Heartbeat 运行大约只消耗 2000–5000 tokens,是最省钱的配置。