Skip to main content

OpenClaw 心跳任务实战:让 AI 主动为你工作

·1398 words·3 mins

痛点场景
#

你有没有过这种经历:

早上打开电脑,才发现下午有个重要会议。

忙了一天,晚上才看到老板的紧急邮件。

项目出问题了,过了几小时才知道。

我们太依赖被动响应了。

AI 助手也一样。你不问,它不说。你忘了检查,它就沉默。

这不对。

为什么需要心跳任务?
#

当前的大多数 AI 助手有个问题:完全被动

  • ❌ 不会主动提醒你
  • ❌ 不会主动检查状态
  • ❌ 不会主动汇报进展

结果是:你成了系统的"心跳"。你不触发,系统就静止。

更好的方式是:让 AI 有自己的心跳

  • ✅ 定期检查关键指标
  • ✅ 主动汇报异常情况
  • ✅ 在你开口前就准备好信息

OpenClaw 心跳机制
#

我使用的 OpenClaw 有一套心跳系统。

工作原理
#

心跳间隔 (30 分钟)
读取 HEARTBEAT.md 任务列表
逐项检查(邮箱/日历/项目...)
发现异常 → 主动通知
一切正常 → HEARTBEAT_OK(静默)

配置文件
#

HEARTBEAT.md

# HEARTBEAT.md

# 每天检查 2-4 次
- 检查未读邮件(标记紧急的)
- 检查日历(未来 24 小时会议)
- 检查项目状态(git status)
- 检查服务器监控告警

心跳状态追踪
#

memory/heartbeat-state.json

{
  "lastChecks": {
    "email": 1703275200,
    "calendar": 1703260800,
    "projects": 1703250000,
    "monitoring": 1703240000
  },
  "lastHeartbeat": 1703275200,
  "nextHeartbeat": 1703277000
}

实战配置
#

1. 创建心跳文件
#

cd /Users/jason/.openclaw/workspace
touch HEARTBEAT.md
touch memory/heartbeat-state.json

2. 配置检查任务
#

HEARTBEAT.md

# 心跳任务清单

## 每日检查(2-4 次)
- [ ] 检查未读邮件(标记紧急的)
- [ ] 检查日历(未来 24 小时会议)
- [ ] 检查服务器监控状态

## 每周检查(周一上午)
- [ ] 检查项目进度
- [ ] 生成本周报告
- [ ] 更新待办事项

## 每月检查(1 号)
- [ ] 检查账单和预算
- [ ] 清理临时文件
- [ ] 备份重要数据

3. 配置心跳间隔
#

在 OpenClaw 配置中设置:

heartbeat:
  enabled: true
  interval: 1800  # 30 分钟(秒)
  quietHours:     # 静默时段
    start: "23:00"
    end: "08:00"
  channels:
    - feishu      # 飞书通知

4. 编写检查脚本
#

scripts/check-email.sh

#!/bin/bash
# 检查紧急邮件

IMAP_SERVER="imap.example.com"
IMAP_USER="your@email.com"
IMAP_PASS="your_password"

# 查询未读邮件
UNREAD=$(curl -s -u "$IMAP_USER:$IMAP_PASS" \
  "https://api.mailprovider.com/messages?unread=true" \
  | jq '.messages | length')

if [ "$UNREAD" -gt 0 ]; then
  echo "发现 $UNREAD 封未读邮件"
  # 检查是否有紧急标记
  URGENT=$(curl -s -u "$IMAP_USER:$IMAP_PASS" \
    "https://api.mailprovider.com/messages?unread=true&urgent=true" \
    | jq '.messages | length')
  
  if [ "$URGENT" -gt 0 ]; then
    echo "⚠️ 发现 $URGENT 封紧急邮件!"
    exit 1
  fi
fi

5. 集成到心跳流程
#

在 OpenClaw 的心跳处理逻辑中:

// 心跳检查伪代码
async function heartbeat() {
  const tasks = readHeartbeatTasks();
  const results = {};
  
  for (const task of tasks) {
    results[task.name] = await check(task);
  }
  
  const hasIssues = Object.values(results).some(r => r.status === 'error');
  
  if (hasIssues) {
    notifyUser(results);  // 有问题才通知
  } else {
    sendHeartbeatOK();    // 一切正常,静默
  }
}

最佳实践
#

心跳频率
#

任务类型 建议频率 说明
紧急邮件 15-30 分钟 需要及时响应
日历提醒 1-2 小时 会议前提醒
项目状态 4-6 小时 开发进度
监控告警 5-15 分钟 生产环境
账单检查 每天 1 次 非紧急

静默时段
#

设置免打扰时间:

quietHours:
  start: "23:00"
  end: "08:00"
  weekends: true  # 周末静默

通知策略
#

分级通知

  • 🟢 正常:不通知(HEARTBEAT_OK)
  • 🟡 轻微异常:汇总通知(每日简报)
  • 🟠 中等异常:立即通知
  • 🔴 严重异常:立即通知 + 电话/短信

避免过度打扰
#

# 通知聚合
notificationAggregation:
  enabled: true
  window: 300  # 5 分钟内聚合
  maxNotifications: 3  # 最多 3 条

成本对比
#

方案 时间成本 风险
手动检查 高(每天 30 分钟+) 高(容易遗漏)
系统告警 中(配置复杂) 中(告警疲劳)
AI 心跳 低(自动运行) 低(智能过滤)

下一步行动
#

  1. 创建 HEARTBEAT.md:列出你的检查任务
  2. 配置检查间隔:根据任务紧急程度设置
  3. 设置静默时段:避免非工作时间打扰
  4. 测试运行:观察几次心跳,调整策略

老黄的笔记:

心跳任务让我从"被动响应"变成"主动掌握"。

每天早上,AI 已经帮我检查完邮件、日历、项目状态。 有问题提前知道,没问题就不打扰。

这种"无感但可靠"的感觉,才是 AI 助手该有的样子。⚙️