当前位置: 首页 > 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.gsyq.cn/news/1360352.html

相关文章:

  • 2026年10款降AI率工具亲测:最高AI率100%直降至0.12%
  • 143k Star!一个文件让Claude Code和Cursor代码质量翻倍
  • 别再乱并电容了!手把手教你为继电器触点选对RC吸收电路(附参数计算与实测避坑)
  • 从原理到调参:深入理解OpenCV立体校正中R1, R2, P1, P2矩阵到底在做什么
  • Halcon图像处理实战:用傅里叶变换的‘模糊’与‘锐化’搞定工业瑕疵检测
  • 避坑指南:IMX6ULL ADC设备树配置详解与MQ-135采样精度优化
  • BepInEx插件框架:5分钟打造你的专属游戏模组体验
  • taotoken如何解决claude code用户token不足与封号风险
  • 通过TaotokenCLI工具一键为团队虚拟机开发环境注入配置
  • 观察Taotoken按Token计费模式如何实现用量精细化管理
  • 别再瞎连了!Verilog里多个信号驱动同一根线会发生什么?一个例子讲清楚
  • C++深入讲解类与封装的概念与使用
  • QGIS插件QuickOSM实战:5分钟搞定城市级路网、水系与POI数据,为你的地图项目快速打底
  • Deepseek-V4-Flash-20260423 深度评测与实战指南
  • 避坑指南:用MounRiver Studio一键烧录沁恒CH32V208时,WCH-LinkRV连接失败怎么办?
  • 2026 年免费投票制作平台哪个最好用 丨平台深度测评报告 - 资讯纵览
  • AI写作辅助平台的合规秘籍:如何界定“合理使用”与学术不端?
  • 用LabVIEW和USRP玩转高阶QAM:从16QAM到1024QAM的星座图调试实战
  • 书匠策AI官网www.shujiangce.com|论文降重降AIGC的“隐形铠甲“,毕业季救命装备实测拆解
  • 书匠策AI拆解|毕业论文全流程“开挂指南“,2025届毕业生必看的写论文黑科技!
  • 告别静默推送!用UniApp+UniPush2.0打造高点击率消息通知(附完整项目配置)
  • Envoy支持Go Wasm插件,就真的更安全了吗?
  • 设计职场人脉标签精细化管理程序,给人脉分类标注领域,精细对接工作合作需求,
  • 开发团队头脑风暴创意收集评级程序,批量收集创意,按照可行性自动分级筛选。
  • STC89C52控制DAC0832的三种姿势详解:直通、单缓冲、双缓冲到底怎么选?
  • 编写加班时长合理管控程序,统计无效加班,提醒及时下班,守护个人生活边界。
  • 保姆级教程:用闲置旧电脑和U盘,5分钟搞定OpenWrt软路由安装与基础网络配置
  • Unity打包踩坑实录:用了EPPlus读取Excel,为什么PC打包后报错?附I18N.dll解决方案
  • 告别Fiddler和Charles!用Whistle这个网页版抓包神器,团队调试效率翻倍
  • 贵阳纳海川·上门维修数字化解决方案