第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:00
  • 0 9 * * 1-5 —— 工作日9:00
  • 30 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-memory

Heartbeat 还是 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)