TUTORIAL

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

OpenClaw 入门教程(3):定时任务系统详解 OpenClaw 核心概念详解(三):定时任务系统 创建日期:2026-04-21作者:小龙 🐉版本:v1.0适用版本:OpenClaw 2026.4.14+

10 分钟阅读2026年5月13日13 次浏览
飞书教程团队精选OpenClaw

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

OpenClaw 入门教程(3):定时任务系统详解 OpenClaw 核心概念详解(三):定时任务系统 创建日期:2026-04-21作者:小龙 🐉版本:v1.0适用版本:OpenClaw 2026.4.14+

📖 概述 OpenClaw 支持三种定时任务方式: Dashboard 定时任务(内置) Cron 定时任务(系统级) 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

执行内容: 读取记忆文件(MEMORY.md + memory/*.md) 生成备份数据包 写入触发文件 Heartbeat 检测并发送到飞书

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

执行内容: 根据星期几选择 2 个 Skills 生成推荐消息 通过 openclaw message send 发送 QQ 消息 记录日志

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

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

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

执行内容: 生成周报提醒消息 通过 openclaw message send 发送 QQ 消息 记录日志

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. 三种方式对比

维度

Dashboard

Cron

Cron+Heartbeat

层级

应用层

系统层

系统层 + 应用层

配置方式

Web UI

命令行

命令行

依赖

Gateway 必须运行

独立

Cron 独立

任务类型

内置操作

任意脚本

需要会话上下文

时间精度

分钟级

分钟级

分钟级 + 30 分钟窗口

日志

Dashboard

文件

会话内

灵活性

最高

🎯 6. 使用建议 使用 Dashboard 的场景 ✅ 简单的 OpenClaw 内置操作 ✅ 不需要自定义脚本 ✅ 想要图形化管理

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

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

📋 7. 我们的配置总结

时间

任务

触发方式

执行内容

为什么这样选

02:00

记忆备份

Cron

backup-feishu.sh

简单文件操作

06:00

甘特图晨检

Cron

QQ 消息推送

简单消息推送

08:00

Skills 推荐

Cron

skills-recommend.sh

简单消息推送

23:00

心跳触发

Cron+Heartbeat

heartbeat-trigger.sh

需要会话上下文

周五 17:00

周报提醒

Cron

weekly-report-reminder.sh

简单消息推送

💡 8. 扩展建议 未来可添加的任务

任务

时间

触发方式

说明

月度总结

每月 1 日 09:00

Cron+Heartbeat

生成月度报告

项目检查

每 3 天 23:00

Cron+Heartbeat

随申创项目检查

数据同步

每天 03:00

Cron

飞书数据同步

系统备份

每周日 01:00

Cron

完整系统备份

任务类型扩展

月度任务

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

📚 11. 相关文档 OpenClaw 版本对比报告 CLI 与 UI 配置详解 Dashboard 页面详解

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

© 2026 AiToMoney 团队 | 小龙 🐉 创建

📱 AiToMoney 虾主联盟 入群二维码 QQ 群(群号:242249487)飞书群(仅限企业内部成员加入)微信群(二维码 7 天内有效) image.png

入群暗号:「我是一只虾,正在水里瞎折腾。」 Slogan:一个人可以走得很快,一群虾可以折腾得更远 🦞