El heartbeat es lo que separa a OpenClaw de cualquier chatbot. No es que el agente esté sentado esperando tu mensaje — cada 30 minutos, despierta, revisa su checklist, y actúa si hay algo que hacer.
Técnicamente es simple: un timer que ejecuta un turno del agente en la sesión principal. El agente lee HEARTBEAT.md, revisa si hay algo pendiente, y:
HEARTBEAT_OK y vuelve a dormirNo es un proceso corriendo 24/7. Es un check periódico — eficiente y barato.
En openclaw.json:
{
"agents": {
"defaults": {
"heartbeat": {
"every": "30m", // Cada 30 minutos
"target": "last", // Envía al último canal usado
"lightContext": true, // Usa solo HEARTBEAT.md (ahorra tokens)
"isolatedSession": false // Comparte contexto con tu conversación
}
}
}
}
| Caso de uso | Intervalo | Por qué |
|---|---|---|
| EA de trabajo | 30m | Suficiente para email e inbox |
| Familia/Logística | 1h | No necesita ser tan frecuente |
| Solo reminders | 2h | Mínimo overhead |
| Testing/desarrollo | 5m | Para ver resultados rápido |
| Desactivado | 0m | Sin heartbeat |
Este archivo es el "qué revisar" de tu agente. Puede ser tan simple o complejo como quieras:
# Heartbeat Check
- Check my calendar for upcoming meetings in the next 2 hours
- If there's a meeting soon, remind me with prep notes
- Check email for anything urgent (flagged or from VIP contacts)
- If it's 3pm on a weekday, ask who's picking up the kids
tasks:
- name: inbox-triage
interval: 30m
prompt: "Check Gmail for urgent emails. Summarize anything from clients or marked important."
- name: calendar-prep
interval: 1h
prompt: "Look at next 2 hours of calendar. If there's a meeting, prepare a brief with attendee info."
- name: kid-pickup
interval: 1h
prompt: "If it's between 2:30-3:30pm on weekdays, ask in the family group chat who's picking up the kids."
Solo las tasks "due" se ejecutan — si inbox-triage corrió hace 10 minutos, no corre de nuevo hasta que pasen 30m.
No quieres que tu agente te despierte a las 3am:
{
"heartbeat": {
"every": "30m",
"activeHours": {
"start": "07:00",
"end": "22:00",
"timezone": "America/Bogota"
}
}
}
Fuera de horario activo, el heartbeat simplemente no corre.
Cada heartbeat es una llamada al modelo. Con Opus a ~$15/1M tokens, eso puede sumar. Tips:
lightContext: true: Solo carga HEARTBEAT.md, no todo el workspace. Reduce tokens dramáticamente.isolatedSession: true: Sesión fresh sin historial. De ~100K tokens a 2-5K por heartbeat.Con lightContext + isolatedSession, cada heartbeat puede costar menos de $0.01.
Claire — Finn (agente familiar):
Cada tarde a las 3pm, Finn envía al group chat con su marido: "¿Quién recoge a cuál niño hoy?" Suena simple, pero es una conversación que antes olvidaban y terminaban coordinando a las 4:45pm en pánico.
Claire — Polly (EA de trabajo):
Cada hora revisa el inbox. Si hay un email de un cliente grande, notifica inmediatamente. Si es newsletter, archiva sin molestar.
Lenny (podcaster):
Su agente le avisa cuando tiene que salir para una reunión, considerando el tráfico actual. "You should leave now — traffic is a little higher right now."
Si no quieres esperar al próximo heartbeat:
openclaw system event --text "Check follow-ups" --mode now
Esto ejecuta todos los heartbeats configurados inmediatamente.