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

OpenClaw 入门教程(2):定时任务系统详解

创建日期:2026-04-21作者:小龙 🐉版本:v1.0适用版本:OpenClaw 2026.4.14+


📖 概述

OpenClaw 支持三种定时任务方式:

  1. Dashboard 定时任务(内置)
  2. Cron定时任务(系统级)
  3. Cron+Heartbeat(混合模式)

本文详细解释三种方式的区别和使用场景。


️ 1. Dashboard 定时任务

什么是 Dashboard 定时任务?

OpenClaw内置的定时任务系统,通过 Web UI 配置。


界面显示

定时任务 唤醒和重复运行。 已启用:是 任务数:0 下次唤醒:不适用 任务列表:没有匹配的任务 [新建定时任务]

功能特点

特性说明
配置方式Web UI 图形化配置
存储位置OpenClaw 内部数据库
执行方式Gateway 内部调度
任务类型OpenClaw 内置操作
状态监控Dashboard 可视化

适用场景

✅ 简单的 OpenClaw 内置操作 ✅ 不需要自定义脚本 ✅ 想要图形化管理 ✅ 不介意 Gateway 必须运行

局限性

❌ 无法执行自定义 Shell 脚本 ❌ 无法调用外部 API ❌ Gateway 挂了就停了 ❌ 任务类型有限

️ 2. Cron 定时任务(系统级)

什么是 Cron?

Linux 系统级定时任务,通过 crontab 配置。


我们的配置

# crontab -l 0 2 * * * /home/admin/.openclaw/workspace/scripts/backup-feishu.sh 0 8 * * * /home/admin/.openclaw/workspace/scripts/skills-recommend.sh 0 23 * * * /home/admin/.openclaw/workspace/scripts/heartbeat-trigger.sh 0 17 * * 5 /home/admin/.openclaw/workspace/scripts/weekly-report-reminder.sh

功能特点

特性说明
配置方式命令行(crontab)
存储位置/var/spool/cron/admin
执行方式Linux cron 守护进程
任务类型任意 Shell 脚本
状态监控日志文件

任务详解

任务 1:记忆备份(02:00)
0 2 * * * /home/admin/.openclaw/workspace/scripts/backup-feishu.sh

执行内容

  1. 读取记忆文件(MEMORY.md + memory/*.md)
  2. 生成备份数据包
  3. 写入触发文件
  4. Heartbeat 检测并发送到飞书

任务 2:Skills 推荐(08:00)
0 8 * * * /home/admin/.openclaw/workspace/scripts/skills-recommend.sh

执行内容

  1. 根据星期几选择 2 个 Skills
  2. 生成推荐消息
  3. 通过openclaw message send发送 QQ 消息
  4. 记录日志

任务 3:心跳触发(23:00)
0 23 * * * /home/admin/.openclaw/workspace/scripts/heartbeat-trigger.sh

执行内容

  1. 写入触发文件.heartbeat-trigger
  2. Heartbeat 检测并执行记忆整理
  3. 检查会话状态
  4. 发送 QQ 通知

任务 4:周报提醒(周五 17:00)
0 17 * * 5 /home/admin/.openclaw/workspace/scripts/weekly-report-reminder.sh

执行内容

  1. 生成周报提醒消息
  2. 通过openclaw message send发送 QQ 消息
  3. 记录日志

Cron 优势

优势说明
系统级可靠不依赖 Gateway
灵活性强可执行任意脚本
时间精确分钟级精度
日志独立便于排查问题

🔄 3. Heartbeat 机制

什么是 Heartbeat?

OpenClaw 内置的定时检测机制

特性说明
本质OpenClaw 核心代码中的检测器
执行频率每 30 分钟自动运行一次
触发方式OpenClaw 内部调度
作用检测是否有任务需要处理

Heartbeat 工作流程

每 30 分钟自动执行: 1. 检测触发文件(.heartbeat-trigger) 2. 如果文件存在: - 读取任务类型(daily/weekly_summary/weekly_review) - 执行对应任务 - 删除触发文件 3. 如果文件不存在: - 继续等待下一个周期

Heartbeat 执行的任务

每日任务(daily)
1. 读取当日记忆文件 → memory/2026-04-21.md 2. 提取重要事件和决策 → 分析内容,识别关键信息 3. 更新长期记忆 → 更新 MEMORY.md 4. 检查会话状态 → Context 使用率 → Compactions 次数 5. 发送 QQ 通知 → "记忆整理完成"

周总结任务(weekly_summary)
1. 读取本周记忆文件 → memory/2026-04-15.md ~ memory/2026-04-21.md 2. 生成周总结 → 工作概览 → 项目进展 → 待办事项 3. 创建周总结文档 → 飞书云文档 4. 发送 QQ 通知 → "周总结已完成"

周回顾任务(weekly_review)
1. 分析本周任务完成情况 2. 识别未完成事项 3. 生成下周计划建议 4. 更新项目管理表格

🎯 4. Cron+Heartbeat 混合模式

架构设计

┌─────────────────────────────────────────────┐ │ Cron(系统层) │ │ ┌─────────────────────────────────────┐ │ │ │ 0 23 * * * heartbeat-trigger.sh │ │ │ └──────────────┬──────────────────────┘ │ │ │ 执行 │ │ ▼ │ │ ┌─────────────────────────────────────┐ │ │ │ 写入触发文件 │ │ │ │ .heartbeat-trigger │ │ │ └──────────────┬──────────────────────┘ │ └─────────────────┼───────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────┐ │ OpenClaw Heartbeat(应用层) │ │ ┌─────────────────────────────────────┐ │ │ │ 每 30 分钟检测一次 │ │ │ │ if (.heartbeat-trigger exists) │ │ │ │ → 执行记忆整理 │ │ │ │ → 检查会话状态 │ │ │ │ → 发送 QQ 通知 │ │ │ └─────────────────────────────────────┘ │ └─────────────────────────────────────────────┘

时序图

时间线: ───────────────────────────────────────────────────────────── 23:00:00 Cron 触发 heartbeat-trigger.sh ↓ 23:00:01 脚本执行,写入 .heartbeat-trigger 文件 ↓ 23:00:02 脚本退出(任务完成) ↓ ... 等待 Heartbeat 巡检 ... ↓ 23:30:00 OpenClaw Heartbeat 自动运行(每 30 分钟一次) ↓ 23:30:01 Heartbeat 检测 .heartbeat-trigger 文件 ↓ 23:30:02 发现文件存在,读取内容:"daily" ↓ 23:30:03 执行记忆整理任务 ↓ 23:35:00 任务完成,删除触发文件 ↓ 00:00:00 Heartbeat 再次巡检(没发现触发文件,继续等待) ─────────────────────────────────────────────────────────────

为什么这样设计?

方案 A:只用 Cron(❌ 不采用)
0 23 * * * openclaw agent --message "整理记忆"

问题

  • ❌ 需要启动新的 CLI 进程(慢)
  • ❌ 没有会话上下文(记忆系统不可用)
  • ❌ 日志分散(cron 日志 + OpenClaw 日志)

方案 B:只用 Heartbeat(❌ 不采用)
// Heartbeat 内部检查时间 if (currentTime.hour === 23 && currentTime.minute === 0) { await runDailyTasks(); }

问题

  • ❌ 时间不精确(可能 23:00~23:30 之间任意时间执行)
  • ❌ 依赖 OpenClaw 持续运行(Gateway 重启会错过)
  • ❌ 无法区分任务类型(daily/weekly)

方案 C:Cron+Heartbeat(✅ 我们的方案)

优点

优势说明
时间精确Cron 保证 23:00 准时写入触发文件
执行可靠Heartbeat 在会话内执行,有完整上下文
系统独立Cron 是系统级,不依赖 Gateway
日志统一所有日志在 OpenClaw 会话中
任务分类可以区分 daily/weekly_summary/weekly_review

📊 5. 三种方式对比

维度DashboardCronCron+Heartbeat
层级应用层系统层系统层 + 应用层
配置方式Web UI命令行命令行
依赖Gateway 必须运行独立Cron 独立
任务类型内置操作任意脚本需要会话上下文
时间精度分钟级分钟级分钟级 + 30 分钟窗口
日志Dashboard文件会话内
灵活性最高

🎯 6. 使用建议

使用 Dashboard 的场景

✅ 简单的 OpenClaw 内置操作 ✅ 不需要自定义脚本 ✅ 想要图形化管理

使用 Cron 的场景

✅ 需要执行自定义脚本 ✅ 需要系统级可靠性 ✅ 需要调用外部 API ✅ 需要灵活的文件操作 ✅ 简单的消息推送

使用 Cron+Heartbeat 的场景

✅ 需要精确时间 + 会话上下文 ✅ 任务需要在 OpenClaw 内部执行 ✅ 需要利用 Heartbeat 的记忆系统 ✅ 需要与会话状态联动 ✅ 复杂的记忆整理任务

📋 7. 我们的配置总结

时间任务触发方式执行内容为什么这样选
02:00记忆备份Cronbackup-feishu.sh简单文件操作
06:00甘特图晨检CronQQ 消息推送简单消息推送
08:00Skills 推荐Cronskills-recommend.sh简单消息推送
23:00心跳触发Cron+Heartbeatheartbeat-trigger.sh需要会话上下文
周五 17:00周报提醒Cronweekly-report-reminder.sh简单消息推送

💡 8. 扩展建议

未来可添加的任务

任务时间触发方式说明
月度总结每月 1 日 09:00Cron+Heartbeat生成月度报告
项目检查每 3 天 23:00Cron+Heartbeat随申创项目检查
数据同步每天 03:00Cron飞书数据同步
系统备份每周日 01:00Cron完整系统备份

任务类型扩展

# 月度任务 echo "$(date '+%Y-%m-%d %H:%M:%S') - monthly" > .heartbeat-trigger # 项目特定任务 echo "$(date '+%Y-%m-%d %H:%M:%S') - suishenchuang-review" > .heartbeat-trigger # 临时任务 echo "$(date '+%Y-%m-%d %H:%M:%S') - custom-task" > .heartbeat-trigger

📝 9. 日志示例

Cron 日志

# /home/admin/.openclaw/workspace/logs/heartbeat-trigger.log [2026-04-21 23:00:00] ========================================== [2026-04-21 23:00:00] 🫀 心跳触发开始 [2026-04-21 23:00:00] ========================================== [2026-04-21 23:00:00] ✓ 触发文件已更新:daily [2026-04-21 23:00:00] ========================================== [2026-04-21 23:00:00] ✅ 心跳触发完成 [2026-04-21 23:00:00] ==========================================

Heartbeat 日志(会话内)

[2026-04-21 23:30:00] 🫀 Heartbeat 检测开始 [2026-04-21 23:30:01] 📄 发现触发文件:.heartbeat-trigger [2026-04-21 23:30:02] 📋 任务类型:daily [2026-04-21 23:30:03] 📖 读取当日记忆:memory/2026-04-21.md [2026-04-21 23:31:00] ✏️ 更新长期记忆:MEMORY.md [2026-04-21 23:32:00] 📊 检查会话状态:Context 0%, Compactions 0 [2026-04-21 23:33:00] ✅ 记忆整理完成 [2026-04-21 23:33:01] 🗑️ 删除触发文件 [2026-04-21 23:33:02] 🫀 Heartbeat 检测完成

⚠️ 10. 注意事项

Cron 配置

# 编辑 crontab crontab -e # 查看 crontab crontab -l # 备份 crontab crontab -l > crontab.bak # 恢复 crontab crontab crontab.bak

脚本权限

# 确保脚本有执行权限 chmod +x /home/admin/.openclaw/workspace/scripts/*.sh # 检查权限 ls -la /home/admin/.openclaw/workspace/scripts/

日志管理

# 查看日志 tail -f /home/admin/.openclaw/workspace/logs/heartbeat-trigger.log # 清理旧日志(保留 30 天) find /home/admin/.openclaw/workspace/logs/ -name "*.log" -mtime +30 -delete

文档维护:小龙 🐉最后更新:2026-04-21下次更新:2026-05-21


© 2026 AiToMoney 团队 | 小龙 🐉 创建


http://www.jsqmd.com/news/726970/

相关文章:

  • 机器学习笔记(14): MoE Gating Networks
  • 铲屎官选粮避坑难?软便、不长肉、怕劣质粮,3 款优质猫粮实测,帮铲屎官选对适配口粮 - 品牌策略主理人
  • 反激变换器同步整流控制原理
  • 潮乎盲盒H5商城系统源码|全新UI界面支持快捷注册登录|Laravel+UniApp全栈开源
  • Magnet2Torrent终极指南:将磁力链接永久保存为种子文件的简单方法
  • BarrageGrab:企业级直播数据采集架构设计与工程实践
  • 长春餐饮门店工装好评榜:5家本地实力服务商盘点 - 奔跑123
  • 2026寿光中考高考全日制机构排行 适配不同提分需求 - 奔跑123
  • 矿影智测版|矿山自动化测绘,省时精准更省心!
  • 如何快速检测微信单向好友?WechatRealFriends帮你发现谁悄悄删除了你
  • 金融数据风控:股票、基金净值实时抓取如何做到“0封禁”
  • SteamAutoCrack:如何用3步自动化工具解除Steam游戏DRM限制?
  • 权威发布:2026年卫生高级职称考试押题预测机构口碑排行榜 - 医考机构品牌测评专家
  • 2026寿光中考高考全日制机构排行:提分实力与服务全对比 - 奔跑123
  • 小爱音箱彻底告别VIP!NAS+AI部署本地曲库,保姆级教程!
  • 3分钟快速掌握PinWin:Windows窗口置顶的终极解决方案
  • 从‘对齐’到‘适配’:手把手教你为PCL点云配准定制加权FitnessScore(附C++代码)
  • AI规则构建引擎:用自然语言生成可执行业务逻辑的技术实践
  • 047、Pandas数据清洗:处理缺失值与重复值
  • QTTabBar终极指南:Windows资源管理器标签页功能完全攻略
  • 如何快速解锁网盘全速下载:LinkSwift直链助手完整指南
  • 西工大计算机801/871专业课二选一?过来人用血泪史告诉你:操作系统是保底,数据结构慎选!
  • 2026年物流园重卡充电桩十大品牌横评:补能效率、并发能力与运维成本全对比 - 科技焦点
  • 2026寿光中考高考全日制机构排行 基于提分实效与本地适配 - 奔跑123
  • 群晖NAS百度网盘套件终极指南:简单三步实现云端文件同步
  • 3分钟解锁Windows新体验:告别模拟器,直接运行安卓应用
  • 共享设备无人管理程序,颠覆老板收租,设备规则上链,用户自治运维,收益均分。
  • 使用 Node.js 快速构建基于 Taotoken 多模型的内容生成服务
  • osgEarth深度分析(4): 矢量数据与样式系统:从要素到几何体的符号化渲染
  • 3分钟掌握FF14动画跳过插件:告别副本等待,效率提升50%