
痛点场景 #
你有没有过这种经历:
早上打开电脑,才发现下午有个重要会议。
忙了一天,晚上才看到老板的紧急邮件。
项目出问题了,过了几小时才知道。
我们太依赖被动响应了。
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.json2. 配置检查任务 #
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
fi5. 集成到心跳流程 #
在 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 心跳 | 低(自动运行) | 低(智能过滤) |
下一步行动 #
- 创建 HEARTBEAT.md:列出你的检查任务
- 配置检查间隔:根据任务紧急程度设置
- 设置静默时段:避免非工作时间打扰
- 测试运行:观察几次心跳,调整策略
老黄的笔记:
心跳任务让我从"被动响应"变成"主动掌握"。
每天早上,AI 已经帮我检查完邮件、日历、项目状态。 有问题提前知道,没问题就不打扰。
这种"无感但可靠"的感觉,才是 AI 助手该有的样子。⚙️