当前位置: 首页 > news >正文

OpenClaw从入门到应用——自动化:对比Cron 与 Heartbeat

通过OpenClaw实现副业收入:《OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南》

心跳(Heartbeat)和定时任务(Cron)都能让你按计划运行任务。本指南帮助你根据实际场景选择最合适的机制。

快速决策指南

场景推荐方案理由
每 30 分钟检查一次收件箱心跳与其他检查任务批量处理,感知上下文
上午 9 点整发送日报定时任务(隔离)需要精确计时
监控日历中即将发生的事件心跳天然适合周期性感知
每周运行一次深度分析定时任务(隔离)独立任务,可使用不同模型
20 分钟后提醒我定时任务(主会话,--at一次性且需要精确计时
后台项目健康检查心跳搭载在现有循环上

心跳:周期性感知

心跳在主会话中以固定间隔(默认:30 分钟)运行。它们的设计初衷是让代理检查各项事务,并提醒任何重要情况。

何时使用心跳

  • 多项周期性检查:与其创建 5 个独立的定时任务来分别检查收件箱、日历、天气、通知和项目状态,不如用单个心跳将所有检查批量处理。
  • 上下文感知决策:代理拥有完整的主会话上下文,因此能够智能判断哪些事项紧急,哪些可以稍后处理。
  • 对话连续性:心跳运行共享同一会话,因此代理能记住最近的对话,并自然地进行跟进。
  • 低开销监控:一个心跳可替代许多零散的轮询任务。

心跳的优势

  • 批量处理多项检查:代理的一次动作便可同时检查收件箱、日历和通知。
  • 减少 API 调用:单个心跳比 5 个隔离的定时任务更经济。
  • 上下文感知:代理知道你正在处理什么工作,并能相应地进行优先级排序。
  • 智能静默:如果没有需要关注的事项,代理会回复HEARTBEAT_OK,不会发送任何消息。
  • 自然的时间偏差:基于队列负载会有轻微延迟,这对大多数监控任务来说完全可以接受。

心跳示例:HEARTBEAT.md 检查清单

# 心跳检查清单 - 检查邮件是否有紧急消息 - 查看日历中未来 2 小时内的事件 - 如果后台任务完成,总结结果 - 如果空闲超过 8 小时,发送一个简短的签到消息

代理在每次心跳时读取此清单,并在一个动作中处理所有事项。

配置心跳

{ agents: { defaults: { heartbeat: { every: "30m", // 间隔时间 target: "last", // 明确的警报送达目标(默认为 "none") activeHours: { start: "08:00", end: "22:00" }, // 可选 }, }, }, }

完整配置请参阅 Heartbeat。

定时任务:精确调度

定时任务在精确的时间点运行,并且可以在隔离的会话中运行,不影响主会话的上下文。整点重复执行的任务计划会自动通过一个确定性的、每个任务独有的、在 0-5 分钟窗口内的偏移量来进行负载分散。

何时使用定时任务

  • 需要精确计时:“每周一上午 9:00 发送此内容”(而不是"9点左右")。
  • 独立任务:不需要对话上下文的任务。
  • 不同的模型或思维模式:值得使用更强大模型进行深度分析。
  • 一次性提醒:使用--at参数实现"20 分钟后提醒我"。
  • 频繁或嘈杂的任务:会扰乱主会话历史记录的任务。
  • 外部触发器:应独立于代理是否处于活动状态而运行的任务。

定时任务的优势

  • 精确计时:支持 5 位或 6 位(含秒)的 cron 表达式,并支持时区。
  • 内置负载分散:默认情况下,整点执行的周期性任务最多会错开 5 分钟。
  • 每个任务独立控制:使用--stagger覆盖错开策略,或使用--exact强制精确计时。
  • 会话隔离:在cron:会话中运行,不会污染主会话历史。
  • 模型覆盖:可为每个任务单独指定更便宜或更强大的模型。
  • 投递控制:隔离任务默认为announce(摘要);可根据需要选择none
  • 即时投递:宣告模式直接发布消息,无需等待心跳。
  • 无需代理上下文:即使主会话空闲或已压缩也能运行。
  • 支持一次性任务:使用--at指定精确的未来时间戳。

定时任务示例:每日早间简报

openclawcronadd\--name"晨间简报"\--cron"0 7 * * *"\--tz"America/New_York"\--sessionisolated\--message"生成今天的简报:天气、日历、重要邮件、新闻摘要。"\--modelopus\--announce\--channelwhatsapp\--to"+15551234567"

这将在纽约时间上午 7:00 准时运行,使用 Opus 模型确保质量,并直接宣告摘要到 WhatsApp。

定时任务示例:一次性提醒

openclawcronadd\--name"会议提醒"\--at"20m"\--sessionmain\--system-event"提醒:站会将在 10 分钟后开始。"\--wakenow\--delete-after-run

完整的 CLI 参考请查看 Cron jobs。

决策流程图

任务是否需要在精确的时间运行? 是 -> 使用定时任务 否 -> 继续... 任务是否需要与主会话隔离? 是 -> 使用定时任务 (隔离) 否 -> 继续... 此任务能否与其他周期性检查批量处理? 是 -> 使用心跳 (添加到 HEARTBEAT.md) 否 -> 使用定时任务 这是一个一次性提醒吗? 是 -> 使用定时任务 (带 --at) 否 -> 继续... 是否需要不同的模型或思维模式级别? 是 -> 使用定时任务 (隔离) 并设置 --model/--thinking 否 -> 使用心跳

结合使用两者

最高效的设置是两者并用

  1. 心跳:每 30 分钟在一个批量动作中处理日常监控(收件箱、日历、通知)。
  2. 定时任务:处理精确的时间计划(每日报告、每周回顾)和一次性提醒。

示例:高效的自动化设置

HEARTBEAT.md(每 30 分钟检查一次):

# 心跳检查清单 - 扫描收件箱中的紧急邮件 - 检查日历中未来 2 小时内的事件 - 审查所有待处理的任务 - 如果超过 8 小时没有活动,发送一个简短的签到消息

定时任务(精确计时):

# 每天早上7点发布早间简报openclawcronadd--name"晨间简报"--cron"0 7 * * *"--sessionisolated--message"..."--announce# 每周一上午9点进行项目回顾openclawcronadd--name"每周回顾"--cron"0 9 * * 1"--sessionisolated--message"..."--modelopus# 一次性提醒openclawcronadd--name"回电"--at"2h"--sessionmain --system-event"给客户回电"--wakenow

Lobster:带审批的确定性工作流

Lobster 是用于多步骤工具流水线的工作流运行时,这些流水线需要确定性执行和明确的审批。当任务不止是单次代理动作,并且你想要一个带有人工检查点的、可恢复的工作流时,可以使用它。

Lobster 适用场景

  • 多步骤自动化:你需要一个固定的工具调用流水线,而不是一次性的提示。
  • 审批关卡:副作用操作应暂停,直到你批准后再恢复。
  • 可恢复运行:无需重新运行前面的步骤,即可继续暂停的工作流。

它如何与心跳和定时任务搭配使用

  • 心跳/定时任务决定了运行发生的时间。
  • Lobster定义了运行开始后需要执行的步骤。

对于计划性工作流,使用定时任务或心跳来触发一个代理动作,该动作再调用 Lobster。对于临时工作流,则直接调用 Lobster。

操作说明(源自代码)

  • Lobster 作为本地子进程lobsterCLI)以工具模式运行,并返回一个JSON 信封
  • 如果工具返回needs_approval,你可以使用resumeTokenapprove标志来恢复运行。
  • 该工具是一个可选插件;建议通过tools.alsoAllow: ["lobster"]来额外启用它。
  • Lobster 期望lobsterCLI 在系统的PATH路径中可用。

完整用法和示例请参见 Lobster。

主会话 vs 隔离会话

心跳和定时任务都可以与主会话交互,但方式有所不同:

心跳定时任务 (主会话)定时任务 (隔离)
会话主会话主会话 (通过系统事件)cron:或自定义会话
历史共享共享每次运行都是全新的 (隔离) / 持久化 (自定义)
上下文完整完整无 (隔离) / 累积的 (自定义)
模型主会话模型主会话模型可以覆盖
输出如果不是HEARTBEAT_OK则投递心跳提示 + 事件宣告摘要 (默认)

何时使用主会话定时任务

当你想要以下效果时,使用--session main--system-event

  • 提醒/事件出现在主会话上下文中
  • 代理在下一次心跳期间利用完整上下文处理它
  • 不需要单独的隔离运行
openclawcronadd\--name"检查项目"\--every"4h"\--sessionmain\--system-event"是时候进行一次项目健康检查了"\--wakenow

何时使用隔离定时任务

当你想要以下效果时,使用--session isolated

  • 一个没有先前上下文的干净环境
  • 不同的模型或思维模式设置
  • 直接向频道宣告摘要
  • 历史记录不会扰乱主会话
openclawcronadd\--name"深度分析"\--cron"0 6 * * 0"\--sessionisolated\--message"每周代码库分析..."\--modelopus\--thinkinghigh\--announce

成本考量

机制成本概况
心跳每隔 N 分钟一个动作;成本随 HEARTBEAT.md 内容大小而增加
定时任务 (主会话)向下一个心跳添加事件(无隔离动作)
定时任务 (隔离)每个任务一个完整的代理动作;可以使用更便宜的模型

提示

  • 保持HEARTBEAT.md精简以最小化 Token 开销。
  • 将相似的检查批量合并到心跳中,而不是创建多个定时任务。
  • 如果你只需要内部处理,可在心跳中设置target: "none"
  • 对于常规任务,使用带有更便宜模型的隔离定时任务。

相关链接

  • Heartbeat - 完整的心跳配置
  • Cron jobs - 完整的定时任务 CLI 和 API 参考
  • System - 系统事件与心跳控制
http://www.jsqmd.com/news/873325/

相关文章:

  • 14001开源:黄大年茶思屋 难题揭榜 第140期全加密流量高精度识别与轻量化推理技术 标准化解题写作框架
  • 别再只用运放了!用HCNR201A光耦给你的Arduino/STM32项目加个高速模拟隔离“盾牌”
  • 别再乱点按钮了!LabVIEW布尔控件6种机械动作的保姆级图解(附官方范例查找方法)
  • C++类的构造与析构特点及作用详解
  • 创业公司如何用 Taotoken 控制 AI 应用开发与测试成本
  • AutoUnipus:三步实现U校园自动化答题,100%正确率解放学习时间!
  • 企业财税合规实战:3步帮你重构账务数据,化解现金流风险
  • 告别静默推送!用UniApp+UniPush2.0打造高点击率消息通知(附完整项目配置)
  • 无需编程的13种语言文本挖掘工具:KH Coder完整指南带你5分钟上手
  • 成年人最大的牢笼:活在别人的操作系统里
  • 如何在苹果电脑上免费运行Windows应用:Whisky的完整指南
  • 书匠策AI拆解|毕业论文全流程“开挂指南“,2025届毕业生必看的写论文黑科技!
  • QGIS插件QuickOSM实战:5分钟搞定城市级路网、水系与POI数据,为你的地图项目快速打底
  • MyOS之Makefile入门
  • 14002开源:黄大年茶思屋 难题揭榜 第140期 非均匀雷达阵列的高精度高效率计算和排布算法 标准化解题写作框架黄大年茶思屋 难题揭榜 第140期
  • 银行业务学习:深入理解直贴(贴现)、转贴现、再贴现
  • 华硕笔记本性能控制终极指南:用G-Helper告别臃肿,重获系统掌控权
  • G-Helper终极指南:华硕笔记本显示优化与色彩管理深度解析
  • Python抖音机器人实战指南:3步实现智能颜值检测与自动化运营
  • 14003开源:黄大年茶思屋 难题揭榜 第140期 异构大规模资源协同分配多目标优化问题 标准化解题写作框架
  • 基于SpringBoot的旅游网站的设计与实现(源码+论文)
  • WeChatExporter深度解析:永久保存微信聊天记录的完整技术方案
  • 创建MQTT连接时如何设置参数?
  • 告别handshake timeout:手把手教你配置NVM镜像源,并附上Node.js各版本国内高速下载地址大全
  • 2026 年免费投票制作平台哪个最好用 丨平台深度测评报告 - 资讯纵览
  • 避坑指南:用MounRiver Studio一键烧录沁恒CH32V208时,WCH-LinkRV连接失败怎么办?
  • 工业计算机是什么?哪个好用?
  • 14004开源:黄大年茶思屋 难题揭榜 第140期 超大规模网络数据面编码建模 标准化解题写作框架
  • 高端设计制造业SD-WAN跨域组网深度解析:头部无人机企业如何实现异地数据高效安全回传和协作
  • 国产化项目实战:SpringBoot 2.6.2 + MyBatis-Plus 3.5.2 连接人大金仓Kingbase 8.6.0保姆级教程