首页openclaw教程中心 › 自动化与定时任务教程

自动化与定时任务教程

自动化机制选择指南

OpenClaw 提供了五种自动化机制,适用于不同场景。先看一张决策表,帮你快速选择: | 机制 | 触发方式 | 精度 | 适用场景 | 复杂度 | |------|----------|------|----------|--------| | Cron | 精确定时 | 分钟级 | 每天 9 点发报告、每周一清理日志 | ⭐⭐ | | Heartbeat | 近似周期 | ~30 分钟 | 定期检查收件箱、监控通知 | ⭐ | | Hooks | 事件驱动 | 实时 | 新会话初始化、会话压缩后处理 | ⭐⭐⭐ | | Standing Orders | 持久指令 | 每次会话 | "每次回答都用中文"、"总是先搜索再回答" | ⭐ | | Task Flow | 多步骤编排 | 按步骤 | 复杂工作流、需要修订跟踪的任务 | ⭐⭐⭐⭐ | 简单来说: - 需要精确时间触发 → 用 Cron - 需要定期巡检但不要求精确 → 用 Heartbeat - 需要响应特定事件 → 用 Hooks - 需要永久生效的行为规则 → 用 Standing Orders - 需要多步骤复杂流程 → 用 Task Flow

Cron 定时任务

Cron 是最直观的定时机制,让智能体在指定时间自动执行任务。

基本用法

``bash

添加一个定时任务

openclaw cron add "每天早上 9 点给我发天气预报" --schedule "0 9 * * *"

查看所有定时任务

openclaw cron list

删除定时任务

openclaw cron remove
`

Cron 表达式速查

` ┌───────────── 分钟 (0-59) │ ┌───────────── 小时 (0-23) │ │ ┌───────────── 日 (1-31) │ │ │ ┌───────────── 月 (1-12) │ │ │ │ ┌───────────── 星期 (0-7, 0和7都是周日) │ │ │ │ │ * * * * * ` 常用表达式: | 表达式 | 含义 | |--------|------| | 0 9 * * * | 每天早上 9:00 | | 0 9 * * 1 | 每周一早上 9:00 | | 0 9,18 * * * | 每天 9:00 和 18:00 | | */30 * * * * | 每 30 分钟 | | 0 0 1 * * | 每月 1 号 0:00 | | 0 9 * * 1-5 | 工作日每天 9:00 |

一次性提醒

如果只需要一次性提醒(不是周期性的),使用
--at 参数: `bash

明天下午 3 点提醒我开会

openclaw cron add "提醒我下午 3 点有产品评审会议" --at "2025-01-16 15:00"
`

输出到渠道或 Webhook

定时任务的输出可以发送到指定渠道:
`bash

输出到 Telegram

openclaw cron add "检查服务器状态并报告" --schedule "0 */6 * * *" --channel telegram

输出到 Webhook

openclaw cron add "生成日报" --schedule "0 18 * * 1-5" --webhook "https://hooks.example.com/daily"
`

Heartbeat 周期检查

Heartbeat 是一种"近似周期"机制,默认每 30 分钟触发一次。它不像 Cron 那样精确,但更适合"定期巡检"类任务。

工作原理

1. Gateway 每隔约 30 分钟触发一次 Heartbeat 2. 智能体读取
HEARTBEAT.md 文件中的检查清单 3. 逐项执行检查任务 4. 将结果汇总或发送通知

配置 HEARTBEAT.md

在工作区中创建
HEARTBEAT.md`markdown

Heartbeat 检查清单

收件箱检查

检查邮箱是否有新邮件,如果有重要邮件,通过 Telegram 通知我。

日历提醒

检查接下来 2 小时内是否有会议,如果有,提前提醒我。

通知汇总

检查 GitHub 通知,汇总未读的 PR 评审请求。
`

调整 Heartbeat 间隔

openclaw.json 中配置: `json { "heartbeat": { "interval": 1800, "enabled": true } } ` interval 单位为秒,默认 1800(30 分钟)。

适用场景

- 收件箱监控:定期检查邮件,汇总重要信息 - 日历提醒:提前通知即将到来的会议 - 通知聚合:批量处理 GitHub/GitLab 通知 - 状态巡检:定期检查服务器或服务状态

Hooks 事件脚本

Hooks 是事件驱动的自动化机制,当特定事件发生时自动执行脚本。

支持的事件类型

| 事件 | 触发时机 | 典型用途 | |------|----------|----------| |
/new | 新会话创建 | 初始化会话、加载上下文 | | /reset | 会话重置 | 清理临时数据 | | /stop | 会话结束 | 保存会话摘要 | | compaction | 会话压缩完成 | 压缩后处理、更新记忆 | | gateway.start | Gateway 启动 | 初始化检查、发送上线通知 | | message.pre | 消息处理前 | 消息预处理、过滤 | | message.post | 消息处理后 | 日志记录、统计 | | tool.pre | 工具调用前 | 权限检查、参数验证 | | tool.post | 工具调用后 | 结果处理、审计日志 |

Hook 文件结构

Hooks 存放在工作区的
hooks/ 目录下: ` ~/.openclaw/workspace/ └── hooks/ ├── on-new-session.md # /new 事件 ├── on-compaction.md # 压缩事件 └── on-gateway-start.md # Gateway 启动事件 `

创建第一个 Hook

创建一个新会话初始化 Hook:
`markdown --- event: /new ---

新会话初始化

当新会话开始时: 1. 读取 MEMORY.md 中的用户偏好 2. 检查今天的日历安排 3. 用一句话问候用户,提及今天的重要事项
`

按事件类型过滤

一个 Hook 文件可以监听多个事件:
`markdown --- event: - /new - /reset ---

会话初始化/重置

无论是新会话还是重置会话,都执行以下初始化步骤...
`

CLI 管理命令

`bash

列出所有 Hooks

openclaw hooks list

查看 Hook 详情

openclaw hooks show on-new-session

测试触发 Hook

openclaw hooks trigger on-new-session
`

Standing Orders 持久指令

Standing Orders 是写在
AGENTS.md 中的永久指令,每次会话都会生效。它不是"定时"触发,而是"始终"生效。

使用方式

AGENTS.md 中添加持久指令: `markdown

Standing Orders

语言规则

- 始终使用中文回答 - 技术术语保留英文原文 - 代码注释用中文

行为规则

- 回答问题前先搜索最新信息 - 涉及文件操作时先确认路径 - 执行危险命令前必须征求确认

输出格式

- 代码块标注语言类型 - 长回答使用标题分段 - 列表不超过 10 项
`

与 Hooks 的区别

| 对比 | Standing Orders | Hooks | |------|----------------|-------| | 生效时机 | 每次会话的每条消息 | 特定事件触发时 | | 定义位置 | AGENTS.md | hooks/ 目录下的独立文件 | | 执行方式 | 作为系统提示词注入 | 作为独立任务执行 | | 适用场景 | 行为规则、输出格式 | 初始化、清理、通知 |

Task Flow 多步骤编排

Task Flow 适用于需要多个步骤、可能跨越多次对话的复杂任务。

基本概念

Task Flow 将一个大任务拆分为多个步骤,每个步骤可以: - 依赖前一步的输出 - 需要人工确认后继续 - 自动跟踪修订历史

创建 Task Flow

`bash

创建一个新的 Task Flow

openclaw tasks create "部署新版本"
` Task Flow 文件示例: `markdown

部署新版本

步骤 1:代码检查

- [ ] 运行测试套件 - [ ] 检查 lint 错误 - [ ] 确认版本号已更新

步骤 2:构建

- [ ] 执行生产构建 - [ ] 验证构建产物

步骤 3:部署

- [ ] 备份当前版本 - [ ] 上传新版本到服务器 - [ ] 重启服务

步骤 4:验证

- [ ] 检查服务状态 - [ ] 运行冒烟测试 - [ ] 通知团队部署完成
`

修订跟踪

Task Flow 自动记录每个步骤的执行时间和结果,方便回溯:
`bash

查看 Task Flow 历史

openclaw tasks history "部署新版本"

查看某个步骤的详情

openclaw tasks show "部署新版本" --step 3
`

常用场景示例

每日报告

使用 Cron 每天下班前自动生成工作日报:
`bash openclaw cron add "汇总今天的工作内容,生成日报发送到 Telegram" \ --schedule "0 18 * * 1-5" \ --channel telegram `

收件箱监控

使用 Heartbeat 定期检查邮箱:
`markdown

HEARTBEAT.md

邮件检查

每次 Heartbeat 时检查 Gmail 收件箱: - 如果有标记为"紧急"的邮件,立即通过 WhatsApp 通知我 - 其他新邮件汇总为列表,等我主动询问时再报告
`

日历提醒

使用 Cron 在会议前提醒:
`bash

每天早上 8:30 检查今天的日程

openclaw cron add "检查今天的日历,列出所有会议和截止日期" \ --schedule "30 8 * * *"
`

PR 审查通知

使用 Heartbeat 监控 GitHub PR:
`markdown

HEARTBEAT.md

GitHub PR 监控

检查我负责审查的 PR: - 新的 PR 请求 → 通知我 - 已审查的 PR 有新提交 → 提醒我重新查看 - 超过 48 小时未审查的 PR → 发送紧急提醒
`

Gateway 启动通知

使用 Hook 在 Gateway 启动时发送通知:
`markdown --- event: gateway.start ---

Gateway 启动通知

Gateway 启动后: 1. 检查所有渠道连接状态 2. 如果有渠道未连接,通过可用渠道通知我 3. 报告当前运行的智能体列表
`

组合使用

实际场景中,多种自动化机制经常组合使用:
` Standing Orders(始终生效) ↓ 定义基本行为规则 Hooks(事件触发) ↓ 处理会话生命周期事件 Heartbeat(周期巡检) ↓ 定期检查外部状态 Cron(精确定时) ↓ 在特定时间执行任务 Task Flow(复杂编排) ↓ 管理多步骤工作流 `` 比如一个完整的"每日工作助手"配置: - Standing Orders:始终用中文回答,优先使用搜索工具 - Hook(/new):新会话时自动加载今天的待办事项 - Heartbeat:每 30 分钟检查邮箱和日历 - Cron:每天 9:00 发送今日计划,18:00 发送日报 - Task Flow:管理周报编写流程

小结

OpenClaw 的自动化体系覆盖了从简单定时到复杂编排的各种需求: - Cron 适合精确定时任务 - Heartbeat 适合周期性巡检 - Hooks 适合事件驱动的自动化 - Standing Orders 适合永久生效的行为规则 - Task Flow 适合多步骤复杂流程 根据实际需求选择合适的机制,或组合使用多种机制,让智能体真正成为你的自动化助手。 --- #OpenClaw自动化 #定时任务 #Cron #Heartbeat #龙虾技能库
#自动化#定时任务#Cron#Heartbeat#Hooks

📚 相关教程

Hooks 事件脚本专题教程进阶
掌握 OpenClaw 的 Hooks 事件驱动机制,学会在特定事件发生时自动执行脚本,实现会话管理、日志记录和通知推送等自动化场景。
浏览器自动化专题教程进阶
掌握 OpenClaw 的浏览器工具,学会控制 Chromium 实例进行网页导航、点击、截图、文本提取等自动化操作。
← WebChat 与仪表板使用教程浏览器自动化专题教程 →