Skip to content

2.2 时间的感知:Heartbeat与Cron


上一节我们聊了六个引导文件,它们定义了AI的"灵魂"。

这一节,我们来聊OpenClaw如何让AI拥有"时间感"——主动帮你做事的能力。


传统AI的时间盲区

用过ChatGPT、Claude、DeepSeek的人都知道:

你不去问它,它就什么都不做。

它不知道现在是几点,不知道什么时候该提醒你,不知道你昨天说过什么待办事项。

它就像一个"睡眠中的助手"——只有你叫醒它,它才会工作。

但现实生活中,我们需要的是:

  • 每天早上7点自动查邮件、看日程
  • 每周五下午生成周报
  • 20分钟后提醒我开会
  • 持续监控某个任务的状态

传统AI做不到这些,因为它没有"时间感"。


OpenClaw的解决方案:Heartbeat + Cron

OpenClaw给了AI两种"时间感知"能力:

Heartbeat(心跳):周期性"醒"来看看有没有事要做

Cron(定时任务):在精确的时间点执行任务

这两个机制,让AI从"被动响应"变成了"主动服务"。


Heartbeat:让AI有"存在感"

什么是Heartbeat?

Heartbeat是OpenClaw的周期性感知机制

默认情况下,每30分钟,AI会自己"醒"来一次:

  1. 读取HEARTBEAT.md检查清单(如果存在)
  2. 检查有没有需要关注的事项
  3. 如果有,发送通知给你
  4. 如果没有,回复HEARTBEAT_OK(不会打扰你)

配置Heartbeat

~/.openclaw/openclaw.json中配置:

json5
{
  agents: {
    defaults: {
      heartbeat: {
        every: "30m",        // 心跳间隔
        target: "last",      // 通知发送到哪里
        // activeHours: {    // 可选:活跃时间段
        //   start: "08:00",
        //   end: "22:00"
        // }
      }
    }
  }
}

间隔设置

  • 默认:30m(30分钟)
  • 使用Anthropic OAuth时:1h(60分钟)
  • 可自定义:支持5m10m1h
  • 禁用:设置为0m

HEARTBEAT.md检查清单

创建一个HEARTBEAT.md文件,告诉AI每次"醒来"要检查什么:

markdown
# Heartbeat检查清单

- 检查邮件,看有没有紧急的未读消息
- 检查今天的待办事项,提醒我该做的事
- 如果后台任务完成了,总结结果
- 如果闲置超过8小时,发送简短的问候

AI会按照清单逐一检查,在一次轮次中处理所有项目。

智能抑制机制

Heartbeat有一个重要特性:智能抑制

  • 如果检查后没有需要关注的事项,AI回复HEARTBEAT_OK
  • HEARTBEAT_OK不会投递任何消息给用户
  • 只有发现重要事项时,才会发送通知

这意味着:Heartbeat不会每30分钟都打扰你,只在有重要事项时才会通知。

Heartbeat vs 人工查询

没有Heartbeat时

  • 你要主动打开各个App查邮件、看日程
  • 可能错过重要事项
  • 耗费时间和精力

有Heartbeat时

  • AI主动帮你监控
  • 有重要事项时主动通知
  • 你可以专注于当前工作

这就像有一个24小时在线的助理,每隔一段时间帮你扫一眼各个渠道,有急事才叫你。


Cron:让AI有"时间感"

什么是Cron?

Cron是OpenClaw的精确调度机制

如果说Heartbeat是"每30分钟检查一次",Cron就是"在精确的时间点做某事"。

比如:

  • "每天早上7点生成日报"
  • "每周五下午5点总结本周工作"
  • "20分钟后提醒我开会"
  • "3天后跟进这个客户"

Cron的核心特性

1. 持久化存储

Cron任务存储在~/.openclaw/cron/目录下,重启不会丢失。

2. 两种执行模式

  • 主会话模式:将任务加入队列,在下一次Heartbeat时运行
  • 隔离会话模式:在独立的会话中运行,可配置是否发送结果通知

3. 标准Cron表达式

使用标准的Linux Cron表达式:

* * * * *
│ │ │ │ │
│ │ │ │ └─── 星期几 (0-7, 0和7都是周日)
│ │ │ └───── 月份 (1-12)
│ │ └─────── 日期 (1-31)
│ └───────── 小时 (0-23)
└─────────── 分钟 (0-59)

常用示例:

  • 0 7 * * *:每天早上7点
  • 0 9 * * 1:每周一上午9点
  • */5 * * * *:每5分钟
  • 0 0 1 * *:每月1号午夜

创建Cron任务

命令行方式

bash
# 每天早上7点生成日报
openclaw cron add \
  --name "每日早报" \
  --cron "0 7 * * *" \
  --tz "Asia/Shanghai" \
  --session isolated \
  --message "生成今日摘要:邮件、日程、天气、新闻" \
  --announce

# 20分钟后提醒
openclaw cron add \
  --name "会议提醒" \
  --at "2026-03-09T10:00:00Z" \
  --session main \
  --message "提醒:10分钟后有会议" \
  --wake now

让AI帮你创建

你也可以直接对AI说:

"每天早上7点帮我生成一份摘要,包括邮件、日程、天气"

AI会自动帮你创建Cron任务。

Cron任务管理

bash
# 查看所有任务
openclaw cron list

# 立即运行一次(测试用)
openclaw cron run <job-id> --force

# 查看运行历史
openclaw cron runs --id <job-id> --limit 10

# 修改任务
openclaw cron edit <job-id> --cron "0 8 * * *"

# 删除任务
openclaw cron remove <job-id>

Heartbeat vs Cron:怎么选?

场景推荐原因
每30分钟检查收件箱Heartbeat可与其他检查批量处理
每天早上9点准时发报告Cron需要精确定时
监控日历中即将到来的事件Heartbeat天然适合周期性感知
20分钟后提醒我Cron(--at)一次性精确提醒
后台项目健康检查Heartbeat搭载在现有周期上

核心区别

  • Heartbeat:周期性感知,固定间隔,批量处理,有上下文
  • Cron:精确调度,精确时间点,独立任务

最佳实践:两者结合使用

  • Heartbeat处理常规监控(收件箱、日历、通知)
  • Cron处理精确调度(每日报告、一次性提醒)

时间感知的价值

Heartbeat和Cron,让AI有了"时间感"。

它不再是"只能响应当下",而是:

  • 能规划未来:"明天早上提醒我……"
  • 能持续关注:"每30分钟检查一次……"
  • 能主动服务:在合适的时间做合适的事

这就是AI从"工具"变成"助理"的关键一跃。


下一节

Heartbeat和Cron让AI有了"时间感"。

但AI怎么"记住"你说的话?怎么"进化"得越来越懂你?

下一节,我们来聊Memory(记忆)Skills(技能)

基于 MIT 许可发布