OpenClaw Heartbeat и Cron: как сделать AI-агента проактивным

OpenClaw Heartbeat и Cron: как сделать AI-агента проактивным

OpenClaw Heartbeat и Cron превращают обычного чат-бота в проактивного AI-агента, который сам проверяет почту, напоминает о встречах и мониторит серверы — без единого вашего запроса. В этой статье разберём, как настроить оба механизма, чтобы агент работал на вас 24/7.

🤔 Что такое Heartbeat в OpenClaw и зачем он нужен?

Heartbeat — это «пульс» вашего AI-агента. Каждые N минут Gateway отправляет агенту сигнал пробуждения. Агент просыпается, читает файл HEARTBEAT.md из рабочей директории и решает: есть ли что-то, требующее внимания?

Если нечего делать — агент отвечает HEARTBEAT_OK и засыпает. Если есть задачи — выполняет их и отправляет результат в указанный чат.

Параметр Значение по умолчанию Описание
every 30m Интервал пробуждения (m — минуты, h — часы, 0m — выключить)
target none Куда отправлять результат: none, last (последний чат)
lightContext false Если true — в контекст попадает только HEARTBEAT.md (экономия токенов)
model основная модель Можно задать дешёвую модель специально для heartbeat
activeHours 24/7 Окно активности: start и end (например, 09:00–18:00)

⚙️ Как настроить Heartbeat в openclaw.json?

Вся конфигурация heartbeat находится в файле ~/.openclaw/openclaw.json. Вот рабочий пример с комментариями:

{
  "agents": {
    "defaults": {
      "heartbeat": {
        "every": "30m",
        "target": "last",
        "lightContext": false,
        "model": "gpt-4o-mini",
        "activeHours": {
          "start": "09:00",
          "end": "22:00"
        }
      }
    }
  }
}

Пошаговая настройка:

  1. 📂 Откройте файл конфигурации: nano ~/.openclaw/openclaw.json
  2. ⏱️ Установите интервал: "every": "30m" для проверки каждые полчаса
  3. 📬 Укажите target: "last" — результат пойдёт в последний активный чат
  4. 💰 Для экономии добавьте: "model": "gpt-4o-mini" — дешёвая модель для рутинных проверок
  5. 🕐 Ограничьте по времени через activeHours, чтобы агент не работал ночью
  6. 🔄 Перезапустите: openclaw gateway restart

📋 HEARTBEAT.md — чеклист для проактивного агента

Файл HEARTBEAT.md в корне workspace — это инструкция для агента на каждое пробуждение. Агент читает его и выполняет по пунктам.

Пример рабочего HEARTBEAT.md:

# Heartbeat Checklist

1. Проверь непрочитанные email — если есть срочные, сообщи
2. Календарь: есть ли встречи в ближайшие 2 часа?
3. Git: есть ли незакоммиченные изменения в проектах?
4. Сервер: CPU > 80%? Диск > 90%? Сообщи.

Если ничего не требует внимания — ответь HEARTBEAT_OK

Правила эффективного HEARTBEAT.md:

  • 📏 Держите объём до 150–200 слов — каждый символ тратит токены
  • 🎯 Пишите конкретные действия, а не абстрактные пожелания
  • ✅ Всегда добавляйте условие HEARTBEAT_OK для тихого режима
  • 🔄 Обновляйте регулярно — агент может сам редактировать этот файл

⏰ Cron-задачи в OpenClaw: точное расписание без heartbeat

Cron — второй механизм автоматизации. В отличие от heartbeat, cron срабатывает строго по расписанию и inject'ит системное сообщение в сессию агента.

Когда использовать cron вместо heartbeat?

Критерий Heartbeat Cron
Точность времени Приблизительная (±5 мин) Точная (по минутам)
Контекст Полный (история чата) Изолированный
Расход токенов Каждый тик (даже HEARTBEAT_OK) Только при срабатывании
Лучший сценарий Мониторинг, динамические проверки Ежедневные отчёты, напоминания

Примеры cron-задач:

# Утренний брифинг в 9:00 по будням
schedule: { kind: "cron", expr: "0 9 * * 1-5", tz: "Europe/Moscow" }
payload: { kind: "agentTurn", message: "Составь утренний брифинг: погода, задачи на день, непрочитанные письма" }

# Еженедельный отчёт в пятницу в 18:00
schedule: { kind: "cron", expr: "0 18 * * 5" }
payload: { kind: "agentTurn", message: "Подведи итоги недели: выполненные задачи, метрики, планы" }

# Напоминание через 20 минут (одноразовое)
schedule: { kind: "at", at: "2026-03-28T15:20:00Z" }
payload: { kind: "systemEvent", text: "Напоминание: созвон через 10 минут" }

🚀 Практические кейсы: 5 сценариев проактивного агента

Вот реальные конфигурации, которые можно внедрить за 10 минут:

1. Утренний ассистент

  • 📅 Cron на 09:00 — собирает погоду, календарь, задачи
  • 📧 Heartbeat каждые 30 мин — проверяет новые письма
  • 💬 Target: Telegram или Discord — получаете брифинг в мессенджер

2. Мониторинг сервера

  • ⚡ Heartbeat каждые 15 мин с lightContext: true
  • 🖥️ HEARTBEAT.md: «Проверь CPU, RAM, диск. Если > 85% — алерт»
  • 🔧 Модель: gpt-4o-mini — дёшево и достаточно для метрик

3. Контент-менеджер

  • 📝 Cron на 10:00 — публикация запланированной статьи
  • 📊 Cron на 18:00 — отчёт по метрикам за день
  • 🔍 Heartbeat — проверка комментариев и упоминаний

4. Трекер задач

  • ✅ Heartbeat проверяет Git-репозитории на незакоммиченные изменения
  • 📋 Cron в пятницу — еженедельный дайджест прогресса
  • ⏰ Одноразовые cron — напоминания о дедлайнах

5. Финансовый помощник

  • 💰 Cron ежедневно — проверка курсов валют и крипто
  • 📈 Heartbeat — мониторинг порогов (курс > X → уведомление)
  • 📊 Еженедельный cron — отчёт по расходам и подпискам

💰 Как не сжечь бюджет на heartbeat?

Главная ловушка heartbeat — неконтролируемый расход токенов. Агент просыпается каждые 30 минут, загружает контекст, делает запрос к API. За сутки это 48 пробуждений, за месяц — 1440.

Формула расхода:

Токены/месяц = (контекст + ответ) × (60/интервал_мин) × 24 × 30

Пример: 500 токенов × 48 раз/день × 30 дней = 720 000 токенов/месяц
С GPT-4o-mini: ~$0.10/месяц
С Claude Sonnet: ~$2.16/месяц

7 способов оптимизации:

  1. 🔄 Увеличьте интервал до 1–2 часов после отладки
  2. 💡 Включите lightContext: true — только HEARTBEAT.md в контексте
  3. 🤖 Используйте дешёвую модель: "model": "gpt-4o-mini"
  4. 🕐 Настройте activeHours — не тратьте токены ночью
  5. 📏 Держите HEARTBEAT.md компактным (до 200 слов)
  6. 📦 Перенесите повторяющиеся задачи в cron — они экономичнее
  7. 📊 Мониторьте расход через /status в чате с агентом

🔧 Пошаговая инструкция: от нуля до проактивного агента за 10 минут

Если вы уже установили OpenClaw, вот минимальный набор действий:

  1. ⏰ Добавьте cron для утреннего брифинга (через интерфейс OpenClaw или конфиг)
  2. 🔄 Перезапустите gateway: openclaw gateway restart
  3. ✅ Проверьте: напишите агенту «покажи статус heartbeat» — он ответит текущей конфигурацией

⚙️ Настройте heartbeat в openclaw.json:

"heartbeat": {
  "every": "30m",
  "target": "last",
  "model": "gpt-4o-mini",
  "activeHours": { "start": "08:00", "end": "23:00" }
}

📝 Создайте HEARTBEAT.md в workspace:

echo "1. Проверь email — срочные сообщи
2. Календарь — встречи через 2 часа?
3. Иначе HEARTBEAT_OK" > ~/workspace/HEARTBEAT.md

Частые вопросы

Что будет, если агент не ответит HEARTBEAT_OK?

Агент выполнит действия из HEARTBEAT.md и отправит результат в указанный target (чат, канал). Если target = "none", результат сохранится только в логах сессии. Следующий heartbeat придёт через заданный интервал независимо от ответа.

Можно ли использовать heartbeat и cron одновременно?

Да, и это рекомендуемый подход. Heartbeat — для динамических проверок (мониторинг, новые письма). Cron — для задач с точным расписанием (утренний брифинг в 09:00, еженедельный отчёт). Они дополняют друг друга.

Сколько стоит heartbeat в месяц?

При интервале 30 минут и модели gpt-4o-mini — около $0.10/месяц. С Claude Sonnet — около $2–3/месяц. С lightContext: true и activeHours экономия достигает 50–75%. Главное — не оставлять полный контекст на дешёвых интервалах.

Как ограничить heartbeat только рабочими часами?

Добавьте в конфигурацию параметр activeHours: {"start": "09:00", "end": "18:00"}. За пределами этого окна агент не будет просыпаться. Часовой пояс определяется настройками сервера или агента.

Можно ли задать разные heartbeat для разных агентов?

Да. В секции agents.list файла openclaw.json можно переопределить heartbeat для конкретного агента: {"name": "monitor", "heartbeat": {"every": "10m"}}. Остальные используют defaults.

Что лучше для напоминаний — heartbeat или cron?

Для одноразовых напоминаний (через 20 минут, завтра в 15:00) — cron с типом "at". Для регулярных (каждый день в 09:00) — cron с типом "cron". Heartbeat для напоминаний избыточен: он тратит токены на каждое пробуждение, даже если напоминать не о чем.

Heartbeat работает, но агент молчит — что делать?

Проверьте параметр target: если он равен "none" (по умолчанию), результат не отправляется в чат. Измените на "last". Также проверьте activeHours — возможно, текущее время вне окна активности. Команда openclaw doctor --fix поможет диагностировать проблему.

OpenClaw Heartbeat и Cron — это то, что отличает настоящего AI-агента от обычного чат-бота. Настройте один раз, и ваш ассистент начнёт работать проактивно — без напоминаний и ручных запросов.

👉 Подписывайтесь на наш Telegram-канал @aaakalsin — делимся практическими гайдами по AI-агентам каждый день.