第6课 自动化#
为什么需要了解这个#
到目前为止,我们都是按需与助手交流——发送消息,收到回复。但 OpenClaw 能够自主工作:按时间表检查邮件、每天早上发送简报、对事件做出反应。自动化把助手从"聊天对象"变成了真正的自主帮手,在你睡觉的时候也在工作。
四种自动化机制#
| 机制 | 用途 | 类比 |
|---|---|---|
| Heartbeat(心跳) | 定期检查 | 每30分钟响一次的闹钟 |
| Cron(定时任务) | 按时间表执行任务 | 写有计划事项的日程表 |
| Webhooks | 对外部事件做出反应 | 门铃——有人来了,助手做出反应 |
| Hooks | 对内部事件做出反应 | 自动应答机——在特定事件时触发 |
Heartbeat —— 助手的"心跳"#
Heartbeat 是助手定期的"唤醒"。每隔 N 分钟它会醒来,检查情况,决定是否需要通知你。
如何配置#
{
agents: {
defaults: {
heartbeat: {
every: "30m", // 每30分钟
target: "last", // 发送到最后一次对话的地方
}
}
}
}every —— 间隔。示例:
"15m"(15分钟)、"1h"(1小时)、"2h"(2小时)。"0m"表示关闭心跳。target —— 消息发送到哪里:
"last"—— 最后使用的聊天工具"telegram"、"whatsapp"—— 特定的聊天工具"none"—— 不发送(助手工作但不通知)
HEARTBEAT.md 文件#
在工作文件夹中创建 HEARTBEAT.md 文件——这是助手的检查清单:
# 唤醒时的检查清单
- 今天有紧急任务吗?
- 检查项目截止日期是否到期
- 如果是白天——简要检查一切是否正常如果没有重要的事情,助手会回复 HEARTBEAT_OK 并保持沉默。
活跃时间#
为了让助手不在夜间打扰你:
{
agents: {
defaults: {
heartbeat: {
every: "30m",
target: "last",
activeHours: {
start: "09:00", // 从早上9点
end: "22:00", // 到晚上10点
timezone: "Asia/Shanghai"
}
}
}
}
}Cron —— 按时间表执行任务#
Cron(读作"克朗")是任务调度器。与 heartbeat 不同,cron 可以设置精确的时间和具体的操作。
一次性提醒#
openclaw cron add \
--name "提醒" \
--at "2026-02-20T10:00:00Z" \
--session main \
--system-event "提醒:给医生打电话" \
--wake now \
--delete-after-run逐项解释:
--name—— 任务名称(给你看的)--at—— 什么时候执行(日期和时间)--session main—— 在主会话中执行--system-event—— 提醒文本--wake now—— 立即唤醒助手--delete-after-run—— 执行后删除任务
快速提醒"N分钟后"#
openclaw cron add \
--name "打电话" \
--at "20m" \
--session main \
--system-event "该打电话了!" \
--wake now每日任务#
openclaw cron add \
--name "早报" \
--cron "0 7 * * *" \
--tz "Asia/Shanghai" \
--session isolated \
--message "准备今天的简报:天气、任务、重要事件。" \
--announce \
--channel telegram \
--to "123456789"
0 7 * * *是什么意思? 这是 cron 时间表格式:分钟 小时 日 月 星期
0 7 * * *—— 每天7:000 9 * * 1-5—— 工作日9:0030 12 * * *—— 每天12:30
管理任务#
# 查看所有任务
openclaw cron list
# 手动运行任务(用于测试)
openclaw cron run <任务ID>
# 查看执行历史
openclaw cron runs --id <任务ID>
# 修改任务
openclaw cron edit <任务ID> --message "新文本"
# 删除任务
openclaw cron remove <任务ID>两种执行模式#
| 模式 | 说明 | 适用场景 |
|---|---|---|
| main | 在主会话中执行(在你的对话上下文中) | 提醒、简单通知 |
| isolated | 在单独的会话中执行 | 复杂任务、早报、后台检查 |
Webhooks —— 对外部事件的反应#
Webhook(网络钩子)是一个 HTTP 地址,外部服务可以向其发送通知。例如,Gmail 可以通知新邮件,GitHub 可以通知新提交。
在 openclaw.json 中配置#
{
hooks: {
enabled: true,
token: "你的密钥", // 保护用的密码
path: "/hooks", // webhook 地址
mappings: [
{
match: { path: "gmail" }, // 响应路径 /hooks/gmail
action: "agent", // 发送给智能体
agentId: "main",
deliver: true
}
]
}
}现在外部服务可以向 http://你的服务器:18789/hooks/gmail 发送请求,助手会收到这个通知。
Hooks —— 对内部事件的反应#
Hooks(钩子)是在 OpenClaw 内部特定事件发生时运行的脚本。
内置钩子#
| 钩子 | 事件 | 作用 |
|---|---|---|
| 💾 session-memory | /new |
重置前将会话上下文保存到记忆中 |
| 📝 command-logger | 任何命令 | 将所有命令记录到日志文件 |
| 🚀 boot-md | Gateway 启动 | 启动时执行 BOOT.md 中的指令 |
管理钩子#
# 查看可用的钩子
openclaw hooks list
# 启用钩子
openclaw hooks enable session-memory
# 禁用钩子
openclaw hooks disable command-logger
# 详细信息
openclaw hooks info session-memory建议#
启用 session-memory 钩子——它会在每次 /new 时自动将对话中的重要内容保存到记忆文件中。这样你就不会丢失上下文:
openclaw hooks enable session-memoryHeartbeat 还是 Cron —— 怎么选?#
| 任务 | 使用 |
|---|---|
| “每30分钟检查一下情况” | Heartbeat |
| “每天早上9点发送简报” | Cron |
| “20分钟后提醒我” | Cron(一次性) |
| “每周检查一次更新” | Cron |
| “保持警惕,有情况就通知” | Heartbeat |
总原则:heartbeat 用于"保持了解",cron 用于"在特定时间执行"。
本课总结#
- Heartbeat —— 定期"唤醒"助手检查情况
- Cron —— 按精确时间表执行任务(提醒、每日简报)
- Webhooks —— 对外部事件的反应(新邮件、GitHub 提交)
- Hooks —— 对 OpenClaw 内部事件的反应(会话重置、启动)
HEARTBEAT.md文件是 heartbeat 检查的清单- 启用
session-memory钩子以自动保存上下文 - Heartbeat 用于监控,Cron 用于计划操作
下一课:移动设备 (Nodes)