🎯 学习目标:配置心跳检查,让 Agent 主动工作

Heartbeat vs Cron

特性HeartbeatCron
精确时间❌ 大致间隔✅ 精确
批量任务✅ 多个检查合并❌ 单任务
上下文✅ 有会话历史❌ 独立
Token 消耗较少(批量)较多

经验法则:

  • 需要精确时间 → Cron
  • 多个检查可以合并 → Heartbeat
  • 需要会话上下文 → Heartbeat

配置 HEARTBEAT.md

在工作空间创建 HEARTBEAT.md:

# HEARTBEAT.md

## 每次检查
- [ ] 有没有新邮件需要回复?
- [ ] 今天有什么日程安排?
- [ ] GitHub 有没有需要处理的 PR?

## 触发条件
- 有重要邮件 → 通知用户
- 2小时内有日程 → 提醒用户
- 其他情况 → HEARTBEAT_OK

跳过心跳

如果 HEARTBEAT.md 为空或只有注释,Agent 会跳过心跳:

# HEARTBEAT.md
# 保持为空以跳过心跳检查

心跳行为设计

主动检查项

轮流检查以下内容(不要每次都检查全部):

  • 邮件 - 重要的未读邮件
  • 日历 - 接下来 24-48 小时的事件
  • 社交媒体 - Twitter/Slack 提及
  • 天气 - 如果用户可能外出

何时主动联系

  • 有重要邮件
  • 即将有日程(<2小时)
  • 发现有趣的信息
  • 超过 8 小时没有交流

何时保持安静

  • 深夜(23:00-08:00)除非紧急
  • 用户明显在忙
  • 距离上次检查不到 30 分钟
  • 没有新内容

心跳状态跟踪

使用 JSON 文件跟踪检查状态:

// memory/heartbeat-state.json
{
  "lastChecks": {
    "email": 1703275200,
    "calendar": 1703260800,
    "weather": null
  }
}

后台工作

心跳期间可以做的事(无需询问):

  • 整理 memory 文件
  • 检查项目状态(git status)
  • 更新文档
  • 提交自己的改动

记忆维护

定期(每几天)在心跳期间:

  1. 阅读最近的 memory/YYYY-MM-DD.md
  2. 提取重要信息到 MEMORY.md
  3. 清理过时内容

✅ 今日练习

  • 创建 HEARTBEAT.md
  • 添加 2-3 个检查项
  • 观察 Agent 的心跳行为
  • 对比 Heartbeat 和 Cron 的使用场景

← 上一天 | 下一天:综合项目 →