乐于分享
好东西不私藏

睡觉的时候,OpenClaw自动为我写代码、爬数据

睡觉的时候,OpenClaw自动为我写代码、爬数据

从"你问它答"到"它主动干活"——Cron定时任务、心跳机制、HEARTBEAT.md配置的完整指南

  

凌晨三点,我睡的正酣。而我的 OpenClaw,刚刚完成了今晚的第三项任务:自动抓取了 GitHub Trending 的数据,写好了一份分析报告,存到了指定目录。

这不是科幻,这是真实的"养虾"日常。

从"你问它答"到"它主动干活"

传统 AI 工具是"被动响应"模式:你打开网页,提问,它回答。你不发消息,它永远沉默。

OpenClaw 是"主动执行"模式:设好规则,到点自动干活,干完主动汇报。即使你不说,它也在后台持续工作。

模式 传统 AI OpenClaw
触发方式 你问它答 定时触发/事件触发
运行状态 打开网页才工作 24小时后台运行
交互方式 被动响应 主动推送
典型场景 问答、创作 自动化、监控

一位开发者的翻车经历

前几天,一位开发者信心满满地设置了 Cron 定时任务,跟同事说"明早就能收到备份报告"。

结果第二天早上——什么都没发生。

这不是 OpenClaw 坏了,而是他用错了模式。

他选了 Main 模式,依赖心跳触发。但心跳默认 30 分钟轮询一次,而且要求主会话不忙、在活跃时段内。他设置的是凌晨 2 点执行,而心跳在那个时段不会触发——消息躺在队列里,没人处理。

这个故事告诉我们:让 AI 定时干活,没那么简单。

两套调度系统:Cron vs 心跳

OpenClaw 有两套调度系统,各有用途:

Cron 定时任务:精准闹钟

Cron 就像一个精准的闹钟,让 AI 在指定时间自动执行任务。

三种调度类型

类型 用途 示例
at 一次性提醒 "30分钟后提醒我开会"
every 固定间隔执行 "每小时检查一次服务器"
cron 复杂时间表达式 "工作日早9点发日报"

Cron 表达式格式:秒 分 时 日 月 周

常用示例:

"30 7 * * *"     // 每天7:30
"0 9 * * 1-5"    // 工作日早9点
"*/30 * * * *"   // 每30分钟
"0 0 * * 0"      // 每周日零点

心跳机制:AI 的"巡检员"

心跳不是闹钟,而是"定期巡检"机制。默认每 30 分钟触发一次,检查是否有需要处理的任务。

关键文件:HEARTBEAT.md

这个文件决定心跳时做什么。如果文件为空或只有注释,回复 HEARTBEAT_OK,不做任何操作。如果文件有内容,就执行里面的任务。

心跳的优势

  • 可以批量检查多个任务
  • 可以根据上下文决定是否执行
  • 避免频繁 API 调用

心跳的局限

  • 默认 30 分钟轮询一次
  • 需要主会话不忙
  • 需要在活跃时段内

两种执行模式:Main vs Isolated

这是很多开发者踩坑的地方。

Main 模式(依赖心跳)

Cron 到点 → 往主会话塞消息 → 等心跳来处理

问题:心跳默认 30 分钟轮询一次,而且要求主会话不忙、在活跃时段内。如果条件不满足,消息就躺在那儿没人处理。

Isolated 模式(独立执行)

Cron 到点 → 开新会话 → 直接执行 → 干完汇报

优势:不依赖心跳,不等任何人,到点就干。

如何选择?

场景 推荐模式 原因
简单提醒、需要用户响应 Main 用户会在白天处理
复杂任务、耗时操作 Isolated 不阻塞主会话
需要准点执行 Isolated 不等心跳
依赖现有上下文 Main 可以访问主会话历史

实战配置:让龙虾夜间干活

场景:凌晨自动爬数据、写分析

步骤 1:配置 Isolated Cron 任务

~/.openclaw/cron/jobs.json 中添加:

{
  "name": "GitHub Trending 分析",
  "enabled": true,
  "schedule": {
    "kind": "cron",
    "expr": "0 2 * * *",
    "tz": "Asia/Shanghai"
  },
  "payload": {
    "kind": "agentTurn",
    "message": "抓取 GitHub Trending 数据,分析趋势,写一份报告保存到 ~/reports/github-trending-$(date +%Y-%m-%d).md",
    "thinking": "interleaved"
  },
  "sessionTarget": "isolated",
  "delivery": {
    "mode": "announce"
  }
}

关键配置说明

  • expr: "0 2 * * *" — 每天凌晨 2 点执行
  • sessionTarget: "isolated" — 独立会话,不等心跳
  • delivery.mode: "announce" — 完成后汇报

步骤 2:配置 HEARTBEAT.md(可选)

如果想用心跳机制批量检查任务:

# 心跳任务检查

## 需要检查的任务(按优先级)

### 高优先级(每次心跳都检查)
- [ ] 检查是否有待处理的 Cron 任务
- [ ] 检查服务器健康状态

### 中优先级(每天检查 2-3 次)
- [ ] 检查代码仓库更新
- [ ] 检查新闻订阅

### 低优先级(每天检查 1 次)
- [ ] 整理下载文件夹
- [ ] 清理临时文件

## 执行规则
- 每次心跳最多执行 2 个任务
- 如果主会话忙碌,只做高优先级检查
- 深夜时段(23:00-08:00)不主动打扰,除非紧急

步骤 3:调整心跳频率

openclaw.json 中:

{
  "agents": {
    "defaults": {
      "heartbeat": {
        "every": "10m"
      }
    }
  }
}

默认是 30 分钟,可以根据需要调整。

真实案例:谷歌大神的 6 个 AI 团队

Shubham Saboo,谷歌高级 AI 产品经理,基于 OpenClaw 搭建了一套多智能体自动化系统,稳定运行了一个月。

他的 6 个 AI 智能体

智能体 职责 运行时间
Walter White AI 动态研究 每天自动运行
Don Draper 推文撰写 定时产出
Tyrion Lannister 领英内容 定时产出
Harvey Specter 新闻简报 每日汇总
Sherlock Holmes 代码审查 Pull Request 触发
Leslie Knope 社区事务 定时处理

关键设计

  • 每个智能体有独立的 SOUL.md 人设
  • 共享文件系统替代 API 通信
  • 双层记忆机制积累用户偏好

避坑指南:五个常见问题

问题 1:Cron 设置了但不执行

原因:用了 Main 模式,心跳在那个时段不会触发。

解决:改用 Isolated 模式,或者确保心跳在目标时段会触发。

问题 2:任务执行了但没有汇报

原因delivery 配置缺失或设置错误。

解决:添加 "delivery": { "mode": "announce" }

问题 3:任务重复执行

原因:Cron 表达式写错了,或者同时配置了多个触发器。

解决:检查 Cron 表达式,用 openclaw cron list 查看所有任务。

问题 4:Token 消耗爆炸

原因:任务太频繁,或者每次任务消耗大量 Token。

解决

  • 减少任务频率
  • 使用更便宜的模型
  • 设置 Token 上限

问题 5:任务执行失败但没有通知

原因:错误处理配置缺失。

解决:在任务中添加错误处理逻辑,或者设置失败通知。

最佳实践总结

1. 选择正确的执行模式

任务类型 推荐模式
凌晨自动备份 Isolated
工作日早提醒 Main
复杂数据爬取 Isolated
需要用户确认的任务 Main

2. 合理设置心跳频率

  • 高频(5-10 分钟):需要及时响应的场景
  • 中频(30 分钟):默认设置,适合大多数场景
  • 低频(1-2 小时):低优先级检查

3. 善用 HEARTBEAT.md

  • 按优先级组织任务
  • 设置执行上限(每次最多 N 个任务)
  • 定义活跃时段和静默时段

4. 监控和日志

# 查看任务状态
openclaw cron list

# 查看执行日志
openclaw logs --follow

# 检查健康状态
openclaw doctor

5. 成本控制

  • 使用 sessionTarget: "isolated" 避免阻塞主会话
  • 设置 timeoutSeconds 限制执行时间
  • 监控 Token 消耗,及时调整任务频率

一键配置模板

如果你想快速开始,这是一个完整的夜间工作配置:

{
  "name": "夜间工作队列",
  "enabled": true,
  "schedule": {
    "kind": "cron",
    "expr": "0 2 * * *",
    "tz": "Asia/Shanghai"
  },
  "payload": {
    "kind": "agentTurn",
    "message": "执行以下任务:\n1. 抓取 GitHub Trending,分析趋势\n2. 检查代码仓库更新\n3. 生成每日报告保存到 ~/reports/$(date +%Y-%m-%d).md",
    "thinking": "interleaved"
  },
  "sessionTarget": "isolated",
  "delivery": {
    "mode": "announce"
  }
}

保存到 ~/.openclaw/cron/jobs.json,重启 Gateway,今晚就可以睡了。

如果你还不知道该如何配置,把这篇文章发给你的龙虾,告诉它你的需求,它会帮你配好的


🎯 关注 泡壶 AI

及时获取更多新鲜、有料还有味的 AI 资讯与观点


参考资料

  • 今日头条:《OpenClaw进阶:让AI主动找你干活》
  • 今日头条:《OpenClaw 团队版,开源了!》
  • AI 天天看:《我,花2700元,用OpenClaw养了支24小时运转的AI团队》
  • CSDN:《OpenClaw的工程化困局:1.28亿Token灾难背后的架构反思》
  • OpenClaw 官方文档:docs.openclaw.ai