心跳机制完全指南:让你的 AI 助理学会主动找你
之前 Agent 是被动的——你问它答,沉默的时候它就真的在沉默。v0.2 引入的心跳机制改变了这个局面:Agent 可以按设定的时间间隔主动醒来,检查环境、推送消息、执行例行任务。
这篇教程带你从零开始配置心跳,看完就能用。
心跳是什么
心跳是一组定时触发的规则。每隔一段时间,Agent 会被唤醒,执行你预设的指令,然后回去睡觉。
类比一下:之前 Agent 像是一个等电话的客服,现在它变成了一个会主动汇报的助理。
第一个心跳:每天早上推送天气
先从一个最简单的例子开始——每天早上 8 点推送天气和日程。
打开 Agent 配置文件(通常在 ~/.openclaw/openclaw.json),找到 agents 数组,在对应 Agent 的配置中加入 heartbeat:
{
"heartbeat": {
"every": "6h",
"prompt": "检查今天的天气和日程,如果有重要事项提醒我。"
}
}
every 字段支持以下格式:
| 格式 | 示例 | 说明 |
|---|---|---|
Nh | 6h | 每 N 小时 |
Nm | 30m | 每 N 分钟 |
cron 表达式 | 0 8 * * * | 每天 8 点 |
如果要用 cron 实现每天 8 点:
{
"heartbeat": {
"every": "0 8 * * *",
"prompt": "推送今天的天气、日程和待办事项。"
}
}
心跳的典型用法
1. 定时信息汇总
每天早上推送一次聚合信息:
{
"heartbeat": {
"every": "0 8 * * *",
"prompt": "整理今天的天气、日程、待办事项,用简洁的方式推送给我。"
}
}
2. 网页监控
每小时检查一次指定网页是否有更新:
{
"heartbeat": {
"every": "1h",
"prompt": "检查 https://example.com/changelog 页面内容是否有变化,有变化就通知我。"
}
}
3. 每日工作总结
每天晚上生成当日工作总结:
{
"heartbeat": {
"every": "0 20 * * *",
"prompt": "回顾今天和我的对话,生成一份简洁的工作总结,包括完成的事项和待跟进的事项。"
}
}
4. 定期数据巡检
每 6 小时检查一次设备状态:
{
"heartbeat": {
"every": "6h",
"prompt": "检查设备运行状态:磁盘使用率、内存占用、CPU 温度、网络连接。有异常直接告警。"
}
}
心跳的三种响应模式
心跳醒来后,Agent 的行为取决于你配置的 mode:
| 模式 | 行为 | 适用场景 |
|---|---|---|
silent(默认) | 执行任务,只在有结果时才通知 | 定期巡检、网页监控 |
always | 每次醒来都发消息 | 每日推送、早间问候 |
never | 执行任务但不通知 | 纯后台任务 |
配置示例:
{
"heartbeat": {
"every": "6h",
"prompt": "检查系统状态",
"mode": "silent"
}
}
实用技巧
给心跳加上上下文
心跳的 prompt 可以引用文件和记忆。比如:
检查今天的日程(参考 ~/.openclaw/workspace/heyumo/MEMORY.md 中的偏好),
如果有需要关注的事项,列出优先级。
避免心跳泛滥
几个原则:
- 不要设太短间隔:心跳间隔不建议低于 30 分钟,频繁唤醒浪费资源
- 合并同类任务:能在一个心跳里做的事不要拆成多个
- silent 优先:没事就别吵你,这是好助理的基本素养
调试心跳
如果想看心跳的执行记录:
openclaw heartbeat list # 查看所有心跳配置
openclaw heartbeat log # 查看最近执行记录
常见问题
Q: 心跳会消耗很多 API 额度吗?
A: 心跳醒来后如果没有实际任务需要执行,只是简单的状态检查,消耗很小。建议大部分心跳用 silent 模式,只在有结果时生成通知。
Q: 能设多个心跳吗?
A: 可以。每个 Agent 可以配置多个心跳规则,通过 heartbeats 数组配置:
{
"heartbeats": [
{ "every": "0 8 * * *", "prompt": "早上推送", "mode": "always" },
{ "every": "6h", "prompt": "巡检状态", "mode": "silent" }
]
}
Q: 心跳和 cron 定时任务有什么区别?
A: 心跳是 Agent 的主动唤醒机制,醒来后 Agent 可以根据上下文智能判断要做什么;cron 是精确的定时任务,执行固定的指令。心跳更灵活,cron 更精确。两者可以配合使用。
配置好心跳了?来社区分享你的心跳玩法。