20-OpenClaw定时任务与自动化工作流
OpenClaw 定时任务与自动化工作流
✦ 免费专栏|全套教程: OpenClaw 从入门到精通
✦ 开篇总览|最新目录: 最新 OpenClaw 教程|从入门到精通|AI 智能助手 / 自动化 / Skills 实战(原 Clawdbot/Moltbot)
本文档详细介绍 OpenClaw 的定时任务和自动化功能,包括 Cron 配置、Heartbeat 心跳机制以及自动化工作流的设计与实践。
目录
1. 概述
OpenClaw 提供了强大的定时任务和自动化能力,让 AI 助手能够主动执行任务,而不仅仅是响应用户请求。这种能力使 OpenClaw 从"被动响应"转变为"主动协作"的智能助手。
1.1 核心能力
┌─────────────────────────────────────────────────────────────────┐ │ OpenClaw 自动化能力架构 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ Cron 任务 │ │ Heartbeat │ │ 事件驱动 │ │ │ │ (精确定时) │ │ (周期检查) │ │ (触发响应) │ │ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ │ │ │ │ └──────────────────┼──────────────────┘ │ │ ▼ │ │ ┌─────────────────────────┐ │ │ │ 自动化工作流引擎 │ │ │ └─────────────────────────┘ │ │ │ │ │ ┌──────────────────┼──────────────────┐ │ │ ▼ ▼ ▼ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ 邮件处理 │ │ 日程提醒 │ │ 数据同步 │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ 1.2 两种机制对比
| 特性 | Cron 定时任务 | Heartbeat 心跳 |
|---|---|---|
| 触发方式 | 时间驱动 | 周期轮询 |
| 精确度 | 精确到秒级 | 可漂移,约 30 分钟 |
| 执行环境 | 独立子代理会话 | 主会话上下文 |
| 适用场景 | 固定时间任务 | 批量检查任务 |
| 模型配置 | 可指定不同模型 | 继承主会话模型 |
| 输出方式 | 直接发送到通道 | 经过主会话处理 |
2. Cron 定时任务配置
2.1 Cron 基础概念
Cron 是一种时间基础的作业调度器,使用特定的表达式来定义任务执行的时间规则。
Cron 表达式格式
┌───────────── 分钟 (0 - 59) │ ┌───────────── 小时 (0 - 23) │ │ ┌───────────── 日期 (1 - 31) │ │ │ ┌───────────── 月份 (1 - 12) │ │ │ │ ┌───────────── 星期几 (0 - 6,0 = 周日) │ │ │ │ │ * * * * * 常用表达式示例
| 表达式 | 含义 |
|---|---|
0 9 * * * | 每天上午 9:00 |
0 9 * * 1 | 每周一上午 9:00 |
0 9,18 * * * | 每天上午 9:00 和下午 6:00 |
*/30 * * * * | 每 30 分钟 |
0 0 1 * * | 每月 1 号午夜 |
2.2 OpenClaw 中的 Cron 配置
2.2.1 通过 CLI 配置
# 查看当前所有定时任务 openclaw cron list # 添加新的定时任务 openclaw cronadd--schedule"0 9 * * *"--message"早安!今天有什么安排?"# 添加指定通道的任务 openclaw cronadd\--schedule"0 18 * * 1-5"\--message"下班时间到了,今天的工作完成了吗?"\--channel"discord"# 使用不同模型 openclaw cronadd\--schedule"0 8 * * *"\--message"总结昨天的邮件"\--model"claude-3-opus"# 删除定时任务 openclaw cron remove <cron-id># 启用/禁用任务 openclaw cronenable<cron-id> openclaw cron disable <cron-id>2.2.2 配置文件方式
在 ~/.openclaw/config.json 中配置定时任务:
{"cron":{"jobs":[{"id":"morning-briefing","schedule":"0 8 * * *","message":"早安!检查今日日程和未读邮件","channel":"feishu","model":"claude-3-sonnet","enabled":true},{"id":"weekly-report","schedule":"0 17 * * 5","message":"生成本周工作总结报告","channel":"discord","enabled":true},{"id":"weather-alert","schedule":"0 7 * * *","message":"检查今日天气,如有异常提前提醒","enabled":true}]}}2.3 Cron 任务执行流程
┌─────────────────────────────────────────────────────────────────┐ │ Cron 任务执行流程 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 时间到达 │ │ │ │ │ ▼ │ │ ┌─────────────┐ │ │ │ Cron 触发器 │ │ │ └──────┬──────┘ │ │ │ │ │ ▼ │ │ ┌─────────────┐ ┌─────────────┐ │ │ │ 检查任务状态 │──否──▶│ 跳过执行 │ │ │ └──────┬──────┘ └─────────────┘ │ │ │ 是 │ │ ▼ │ │ ┌─────────────┐ │ │ │ 创建子代理 │ │ │ │ (独立会话) │ │ │ └──────┬──────┘ │ │ │ │ │ ▼ │ │ ┌─────────────┐ │ │ │ 执行任务指令 │ │ │ └──────┬──────┘ │ │ │ │ │ ▼ │ │ ┌─────────────┐ │ │ │ 发送结果到 │ │ │ │ 指定通道 │ │ │ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ 2.4 Cron 任务高级配置
2.4.1 时区设置
{"cron":{"timezone":"Asia/Shanghai","jobs":[{"id":"daily-standup","schedule":"0 10 * * 1-5","message":"每日站会提醒","timezone":"Asia/Shanghai"}]}}2.4.2 任务重试机制
{"cron":{"jobs":[{"id":"data-backup","schedule":"0 2 * * *","message":"执行数据备份任务","retry":{"maxAttempts":3,"delayMinutes":5,"notifyOnFailure":true}}]}}2.4.3 条件执行
{"cron":{"jobs":[{"id":"smart-reminder","schedule":"0 9 * * *","message":"如果今天有会议,提前提醒准备","conditions":{"checkCalendar":true,"minMeetingCount":1}}]}}3. Heartbeat 心跳机制
3.1 Heartbeat 概述
Heartbeat(心跳)是 OpenClaw 的主动检查机制,允许 AI 助手周期性地检查状态并主动提供服务,而不是等待用户触发。
核心特点
- 主动性:AI 主动发起,而非被动响应
- 灵活性:可根据上下文智能决策
- 批量处理:一次心跳可执行多个检查任务
- 上下文感知:在主会话中执行,可访问历史上下文
3.2 Heartbeat 配置
3.2.1 默认心跳提示词
OpenClaw 默认使用以下心跳提示词:
Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK. 3.2.2 自定义 HEARTBEAT.md
在工作区根目录创建 HEARTBEAT.md 文件,定义心跳检查任务:
# Heartbeat 检查清单 ## 每次检查 - [ ] 检查是否在安静时间(23:00-08:00),如果是则返回 HEARTBEAT_OK ## 轮换检查(每天 2-4 次) ### 邮件检查 - 检查是否有紧急未读邮件 - 如果有重要邮件,简要汇报 ### 日程检查 - 检查未来 24 小时内的日程 - 如果有即将到来的事件(< 2 小时),提醒用户 ### 社交媒体 - 检查是否有重要通知或提及 - 汇报需要关注的内容 ### 天气检查 - 如果用户可能外出,检查天气情况 - 如有异常天气,提前提醒 ## 输出规则 - 如果所有检查都无需关注,回复 HEARTBEAT_OK - 只在有需要通知的内容时才输出信息 - 保持消息简洁,不要过度打扰 3.3 Heartbeat 状态追踪
使用 memory/heartbeat-state.json 追踪检查状态:
{"lastChecks":{"email":1703275200,"calendar":1703260800,"weather":1703253600,"social":null},"checkIntervals":{"email":14400,"calendar":7200,"weather":28800,"social":43200},"quietHours":{"start":"23:00","end":"08:00"}}3.4 Heartbeat 执行流程
┌─────────────────────────────────────────────────────────────────┐ │ Heartbeat 执行流程 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 周期性触发 (~30分钟) │ │ │ │ │ ▼ │ │ ┌─────────────┐ │ │ │ 读取心跳提示 │ │ │ │ HEARTBEAT.md│ │ │ └──────┬──────┘ │ │ │ │ │ ▼ │ │ ┌─────────────┐ │ │ │ 检查安静时间 │ │ │ └──────┬──────┘ │ │ │ │ │ ├── 在安静时间内 ──▶ 返回 HEARTBEAT_OK │ │ │ │ │ ▼ │ │ ┌─────────────┐ │ │ │ 读取检查状态 │ │ │ │ (上次检查时间)│ │ │ └──────┬──────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────┐ │ │ │ 执行需要检查的任务 │ │ │ │ ┌─────────┐ ┌─────────┐ ┌────────┐ │ │ │ │ │ 邮件检查│ │日程检查 │ │天气检查│ │ │ │ │ └─────────┘ └─────────┘ └────────┘ │ │ │ └──────────────┬──────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────┐ │ │ │ 有需要通知的内容? │ │ │ └──────────────┬──────────────────────┘ │ │ │ │ │ ┌───────┴───────┐ │ │ ▼ ▼ │ │ ┌──────────┐ ┌──────────────┐ │ │ │ 有内容 │ │ 无内容 │ │ │ │ 发送通知 │ │ HEARTBEAT_OK │ │ │ └──────────┘ └──────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ 3.5 Heartbeat 与 Cron 的选择策略
┌─────────────────────────────────────────────────────────────────┐ │ 选择 Heartbeat 还是 Cron │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 需要定时执行任务? │ │ │ │ │ ┌────────────┴────────────┐ │ │ ▼ ▼ │ │ 需要精确时间 可以接受时间漂移 │ │ (如: 每天早上9点) (如: 周期性检查) │ │ │ │ │ │ ▼ ▼ │ │ ┌─────────┐ 需要访问会话上下文? │ │ │ Cron │ │ │ │ └─────────┘ ┌───────┴───────┐ │ │ ▼ ▼ │ │ 需要上下文 不需要上下文 │ │ │ │ │ │ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐ │ │ │Heartbeat│ │ Cron │ │ │ └──────────┘ └──────────┘ │ │ │ │ 其他判断因素: │ │ • 需要批量检查多个来源 → Heartbeat │ │ • 需要使用不同模型 → Cron │ │ • 任务需要独立执行 → Cron │ │ • 结果需要直接发送到通道 → Cron │ │ │ └─────────────────────────────────────────────────────────────────┘ 4. 自动化工作流设计
4.1 工作流设计原则
4.1.1 SOLID 原则
| 原则 | 说明 |
|---|---|
| 单一职责 | 每个工作流只做一件事 |
| 开闭原则 | 对扩展开放,对修改关闭 |
| 里氏替换 | 子任务可以替换父任务 |
| 接口隔离 | 任务接口应该最小化 |
| 依赖倒置 | 依赖抽象而非具体实现 |
4.1.2 设计模式
1) 管道模式 (Pipeline)
输入 → [步骤1] → [步骤2] → [步骤3] → 输出 2) 观察者模式 (Observer)
事件源 → [观察者1] → [观察者2] → [观察者3] 3) 责任链模式 (Chain of Responsibility)
请求 → [处理器1] → [处理器2] → [处理器3] → 最终处理 ↓ 未处理 ↓ 未处理 ↓ 处理 4.2 工作流配置示例
4.2.1 每日简报工作流
{"workflow":{"id":"daily-briefing","name":"每日简报","trigger":{"type":"cron","schedule":"0 8 * * 1-5"},"steps":[{"id":"check-email","type":"email","action":"listUnread","params":{"maxResults":10,"priority":"high"}},{"id":"check-calendar","type":"calendar","action":"listEvents","params":{"timeRange":"today"}},{"id":"check-weather","type":"weather","action":"getCurrent","params":{"location":"auto"}},{"id":"generate-report","type":"llm","action":"summarize","params":{"template":"daily-briefing","inputs":["${check-email.result}","${check-calendar.result}","${check-weather.result}"]}},{"id":"send-notification","type":"message","action":"send","params":{"channel":"feishu","content":"${generate-report.result}"}}],"errorHandling":{"continueOnError":true,"notifyOnFailure":true}}}4.2.2 周报生成工作流
{"workflow":{"id":"weekly-report","name":"周报生成","trigger":{"type":"cron","schedule":"0 17 * * 5"},"steps":[{"id":"collect-tasks","type":"task","action":"listCompleted","params":{"timeRange":"week"}},{"id":"collect-commits","type":"git","action":"log","params":{"since":"1 week ago","repos":["project-main","project-api"]}},{"id":"collect-calendar","type":"calendar","action":"listEvents","params":{"timeRange":"week"}},{"id":"generate-report","type":"llm","action":"generate","params":{"template":"weekly-report","model":"claude-3-sonnet"}},{"id":"save-document","type":"document","action":"create","params":{"format":"markdown","path":"/reports/weekly/${date:YYYY-MM-DD}.md"}},{"id":"send-summary","type":"message","action":"send","params":{"channel":"discord","content":"周报已生成:${save-document.url}"}}]}}4.3 工作流执行引擎
┌─────────────────────────────────────────────────────────────────┐ │ 工作流执行引擎 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 触发器层 │ │ │ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │ │ │ │ │ Cron │ │Event │ │Manual │ │Webhook │ │ │ │ │ └────┬───┘ └────┬───┘ └────┬───┘ └────┬───┘ │ │ │ └───────┼────────────┼────────────┼────────────┼────────────┘ │ │ └────────────┴────────────┴────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 调度器层 │ │ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ │ │ 工作流队列 │ 优先级管理 │ 并发控制 │ │ │ │ │ └──────────────────────────────────────────────────┘ │ │ │ └───────────────────────────────┬─────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 执行器层 │ │ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ │ │ 步骤执行 │ 状态管理 │ 错误处理 │ 重试机制 │ │ │ │ │ └──────────────────────────────────────────────────┘ │ │ │ └───────────────────────────────┬─────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 输出层 │ │ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ │ │ Message │ │ File │ │ Webhook│ │ Log │ │ │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ 4.4 工作流最佳实践
4.4.1 错误处理
{"errorHandling":{"strategy":"continue | stop | retry","maxRetries":3,"retryDelay":60,"fallback":{"action":"notify","message":"工作流执行失败,请手动处理"},"notifications":{"onSuccess":false,"onFailure":true,"channels":["feishu","email"]}}}4.4.2 条件分支
{"steps":[{"id":"check-condition","type":"condition","branches":[{"condition":"${weather.result.condition == 'rain'}","steps":[{"id":"rain-alert","type":"message","action":"send","params":{"content":"今天有雨,记得带伞!"}}]},{"condition":"${weather.result.condition == 'sunny'}","steps":[{"id":"sunny-tip","type":"message","action":"send","params":{"content":"今天天气晴朗,适合户外活动"}}]}]}]}4.4.3 并行执行
{"steps":[{"id":"parallel-checks","type":"parallel","tasks":[{"id":"check-email","type":"email","action":"listUnread"},{"id":"check-calendar","type":"calendar","action":"listEvents"},{"id":"check-weather","type":"weather","action":"getCurrent"}]}]}5. 实战案例
5.1 案例一:智能日程助手
场景描述
创建一个智能日程助手,每天早上检查日程并提醒,会议前 15 分钟再次提醒。
配置实现
{"cron":{"jobs":[{"id":"morning-agenda","schedule":"0 8 * * 1-5","message":"检查今日日程,生成日程摘要并发送到飞书","channel":"feishu"},{"id":"meeting-reminder","schedule":"*/15 9-18 * * 1-5","message":"检查未来15分钟是否有会议,如有则发送提醒"}]}}HEARTBEAT.md 配置
# 日程助手心跳配置 ## 检查频率 - 每次心跳都检查日程 - 安静时间(22:00-07:00)跳过 ## 检查内容 1. 获取未来 2 小时内的日程 2. 如果有即将开始的会议(< 15 分钟),立即提醒 3. 如果今天有重要事件,早上提醒 ## 输出格式 - 会议提醒:📅 **会议提醒** - [会议名称] - [剩余时间] - 日程摘要:📋 **今日日程** - 列出所有会议 5.2 案例二:自动化内容发布
场景描述
每天定时收集 AI 行业资讯,生成文章并发布到微信公众号和小红书。
工作流配置
{"workflow":{"id":"auto-publish","name":"自动化内容发布","trigger":{"type":"cron","schedule":"0 9 * * *"},"steps":[{"id":"collect-news","type":"web-search","action":"search","params":{"queries":["AI 最新进展","人工智能行业动态","大模型新闻"],"sources":["google","bing"],"maxResults":20}},{"id":"filter-content","type":"llm","action":"filter","params":{"model":"claude-3-sonnet","criteria":"相关性 > 0.7 且 时效性 > 0.8"}},{"id":"generate-article","type":"llm","action":"generate","params":{"model":"claude-3-opus","template":"wechat-article","style":"专业但易懂"}},{"id":"create-cover","type":"image","action":"generate","params":{"prompt":"AI technology abstract background","style":"modern"}},{"id":"publish-wechat","type":"wechat","action":"publish","params":{"title":"${generate-article.title}","content":"${generate-article.content}","cover":"${create-cover.url}"}},{"id":"publish-xhs","type":"xiaohongshu","action":"publish","params":{"title":"${generate-article.title}","content":"${generate-article.summary}","images":["${create-cover.url}"]}}]}}5.3 案例三:智能邮件管理
场景描述
自动检查邮件,识别重要邮件并分类处理,发送摘要通知。
HEARTBEAT.md 配置
# 邮件管理心跳配置 ## 检查频率 - 邮件检查:每 4 小时 - 紧急邮件:实时推送 ## 检查内容 ### 邮件优先级判断 1. 来自重要联系人(客户、老板)→ 高优先级 2. 标题包含 [紧急]、[重要] → 高优先级 3. 邮件列表订阅 → 低优先级 4. 自动化通知 → 低优先级 ### 处理动作 - 高优先级:立即通知用户 - 中优先级:加入待办清单 - 低优先级:归档处理 ## 输出规则 - 紧急邮件:🔴 **紧急邮件** - [发件人] - [主题摘要] - 普通邮件:📧 **未读邮件** - [数量] 封,其中 [N] 封重要 状态追踪文件
{"lastChecks":{"email":1703275200},"processedEmails":["msg-id-1","msg-id-2"],"importantContacts":["[email protected]","[email protected]"]}5.4 案例四:多时区日程协调
场景描述
团队成员分布在不同时区,自动协调会议时间并发送时区转换提醒。
Cron 配置
{"cron":{"timezone":"UTC","jobs":[{"id":"meeting-prep-beijing","schedule":"0 9 * * *","message":"北京团队:检查今日跨国会议,提供时区转换","timezone":"Asia/Shanghai"},{"id":"meeting-prep-nyc","schedule":"0 9 * * *","message":"纽约团队:检查今日跨国会议,提供时区转换","timezone":"America/New_York"},{"id":"meeting-prep-london","schedule":"0 9 * * *","message":"伦敦团队:检查今日跨国会议,提供时区转换","timezone":"Europe/London"}]}}6. 最佳实践与注意事项
6.1 设计原则
6.1.1 任务粒度
┌─────────────────────────────────────────────────────────────────┐ │ 任务粒度选择指南 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 任务类型 粒度建议 示例 │ │ ───────────────────────────────────────────────── │ │ 监控检查 细粒度 每次检查一个来源 │ │ 数据处理 中粒度 一个处理流程 │ │ 报告生成 粗粒度 完整报告 │ │ 系统维护 细粒度 单一维护操作 │ │ │ │ 💡 原则:小而专注的任务更易于调试和维护 │ │ │ └─────────────────────────────────────────────────────────────────┘ 6.1.2 错误处理策略
## 错误处理分级 ### 致命错误(Critical) - 立即停止工作流 - 发送紧急通知 - 记录详细日志 ### 可恢复错误(Recoverable) - 尝试重试(最多 3 次) - 使用备用方案 - 记录警告日志 ### 警告(Warning) - 继续执行 - 记录信息日志 - 最终报告中提及 ### 忽略(Ignore) - 静默处理 - 记录调试日志 6.2 性能优化
6.2.1 避免过度轮询
{"heartbeat":{"checkIntervals":{"email":14400,"calendar":7200,"weather":28800,"social":43200}}}6.2.2 批量处理
# 推荐:批量检查 每次心跳检查多个来源(邮件、日程、天气) 减少 API 调用次数 # 不推荐:单独任务 为每个来源创建独立的 Cron 任务 增加系统负载 6.2.3 智能跳过
{"skipConditions":{"quietHours":{"start":"23:00","end":"08:00"},"weekends":true,"holidays":true,"outOfOffice":true}}6.3 安全考虑
6.3.1 权限控制
{"permissions":{"email":{"read":true,"send":false},"calendar":{"read":true,"write":false},"files":{"read":true,"write":["~/reports/*"],"delete":false}}}6.3.2 敏感信息处理
## 敏感信息处理规则 1. 不在日志中记录敏感信息 2. 使用环境变量存储 API 密钥 3. 对输出内容进行脱敏处理 4. 定期审计任务权限 6.4 监控与调试
6.4.1 日志记录
{"logging":{"level":"info","format":"json","outputs":["file","console"],"retention":"30d"}}6.4.2 性能指标
{"metrics":{"trackExecutionTime":true,"trackSuccessRate":true,"trackResourceUsage":true,"alertThreshold":{"executionTime":60000,"successRate":0.9}}}6.5 故障排查清单
┌─────────────────────────────────────────────────────────────────┐ │ 故障排查清单 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ □ Cron 任务未执行 │ │ ├─ 检查任务是否启用(enabled: true) │ │ ├─ 检查时区设置是否正确 │ │ ├─ 检查 cron 表达式语法 │ │ └─ 检查系统日志是否有错误 │ │ │ │ □ Heartbeat 未触发 │ │ ├─ 检查 HEARTBEAT.md 是否存在 │ │ ├─ 检查是否在安静时间段 │ │ ├─ 检查上次心跳时间 │ │ └─ 检查主会话是否活跃 │ │ │ │ □ 任务执行失败 │ │ ├─ 检查 API 凭据是否有效 │ │ ├─ 检查网络连接 │ │ ├─ 检查目标服务是否可用 │ │ └─ 检查任务参数是否正确 │ │ │ │ □ 输出未发送到通道 │ │ ├─ 检查通道配置是否正确 │ │ ├─ 检查消息格式是否符合要求 │ │ ├─ 检查通道权限 │ │ └─ 检查是否有频率限制 │ │ │ └─────────────────────────────────────────────────────────────────┘ 附录
A. Cron 表达式速查表
┌────────────────────────────────────────────────────────────────┐ │ Cron 表达式速查表 │ ├────────────────────────────────────────────────────────────────┤ │ │ │ 字段位置: │ │ ┌───────────── 分钟 (0-59) │ │ │ ┌───────────── 小时 (0-23) │ │ │ │ ┌───────────── 日期 (1-31) │ │ │ │ │ ┌───────────── 月份 (1-12) │ │ │ │ │ │ ┌───────────── 星期 (0-6, 0=周日) │ │ │ │ │ │ │ │ │ * * * * * │ │ │ │ 特殊字符: │ │ * 任意值 │ │ , 值列表 (1,3,5) │ │ - 范围 (1-5) │ │ / 步长 (*/5 每 5 单位) │ │ │ │ 常用示例: │ │ ─────────────────────────────────────────────────── │ │ 0 * * * * 每小时整点 │ │ */15 * * * * 每 15 分钟 │ │ 0 9 * * 1-5 工作日早 9 点 │ │ 0 0 1 * * 每月 1 号午夜 │ │ 0 18 * * 5 每周五下午 6 点 │ │ 0 9,12,18 * * * 每天 9 点、12 点、18 点 │ │ │ └────────────────────────────────────────────────────────────────┘ B. HEARTBEAT.md 模板
# Heartbeat 配置 ## 安静时间 - 开始:23:00 - 结束:08:00 - 规则:安静时间内返回 HEARTBEAT_OK ## 检查任务 ### 邮件检查 - 频率:每 4 小时 - 检查项:未读邮件、重要邮件 - 输出:仅在有重要邮件时通知 ### 日程检查 - 频率:每 2 小时 - 检查项:未来 24 小时内的日程 - 输出:即将开始的会议(< 2 小时) ### 天气检查 - 频率:每天早上 - 检查项:今日天气、异常天气预警 - 输出:仅在异常天气时通知 ### 社交媒体 - 频率:每 12 小时 - 检查项:重要提及、互动提醒 - 输出:仅重要内容 ## 输出规则 1. 安静时间不输出 2. 无重要内容返回 HEARTBEAT_OK 3. 保持消息简洁 4. 优先级排序:紧急 > 重要 > 一般 C. 工作流配置模板
{"workflow":{"id":"template-workflow","name":"工作流模板","version":"1.0.0","description":"工作流配置模板","trigger":{"type":"cron | event | manual | webhook","schedule":"0 9 * * *"},"variables":{"timezone":"Asia/Shanghai","outputPath":"/reports"},"steps":[{"id":"step-id","name":"步骤名称","type":"action-type","action":"action-name","params":{},"condition":"${variable} == 'value'","onError":"continue | stop | retry"}],"errorHandling":{"strategy":"continue","maxRetries":3,"retryDelay":60,"notifications":{"onSuccess":false,"onFailure":true,"channels":["feishu"]}},"output":{"type":"message | file | webhook","format":"markdown | json | html","destination":"channel-id | file-path | url"}}}总结
OpenClaw 的定时任务和自动化工作流为 AI 助手提供了强大的主动性能力。通过合理配置 Cron 和 Heartbeat,可以构建高效、可靠的自动化系统:
| 功能 | Cron | Heartbeat |
|---|---|---|
| 定时提醒 | ✅ 精确时间触发 | ✅ 周期检查 |
| 数据处理 | ✅ 独立执行 | ✅ 上下文感知 |
| 条件检查 | ⚠️ 需脚本支持 | ✅ 原生智能判断 |
| 批量任务 | ⚠️ 需合并配置 | ✅ 天然支持 |
| 错误恢复 | ✅ 可配置重试 | ✅ 上下文恢复 |
选择合适的机制,遵循最佳实践,可以让 OpenClaw 成为真正智能的个人助理。