Skip to main content

Cron vs Heartbeat: когда использовать каждый вариант

И heartbeats, и задания cron позволяют запускать задачи по расписанию. Это руководство помогает выбрать подходящий механизм для вашего сценария использования.

Краткое руководство по выбору

Heartbeat: периодическая осведомлённость

Heartbeats выполняются в основном сеансе с регулярным интервалом (по умолчанию: 30 мин). Они предназначены для того, чтобы агент проверял состояние дел и выявлял всё важное.

Когда использовать heartbeat

  • Несколько периодических проверок: Вместо 5 отдельных заданий cron для проверки почты, календаря, погоды, уведомлений и статуса проекта один heartbeat может объединить всё это.
  • Решения с учётом контекста: У агента есть полный контекст основного сеанса, поэтому он может разумно решать, что срочно, а что может подождать.
  • Непрерывность диалога: Запуски heartbeat используют один и тот же сеанс, поэтому агент помнит недавние разговоры и может естественно продолжать взаимодействие.
  • Мониторинг с низкими накладными расходами: Один heartbeat заменяет множество мелких задач опроса.

Преимущества heartbeat

  • Объединяет несколько проверок: За один ход агент может просмотреть почту, календарь и уведомления вместе.
  • Снижает количество API-вызовов: Один heartbeat дешевле, чем 5 изолированных заданий cron.
  • Учитывает контекст: Агент знает, над чем вы работали, и расставляет приоритеты соответствующим образом.
  • Умное подавление: Если ничего не требует внимания, агент отвечает HEARTBEAT_OK, и сообщение не доставляется.
  • Естественное время выполнения: Возможен небольшой дрейф в зависимости от нагрузки очереди, что подходит для большинства задач мониторинга.

Пример heartbeat: чек-лист HEARTBEAT.md

Агент читает это при каждом heartbeat и обрабатывает все пункты за один ход.

Настройка heartbeat

Полную конфигурацию см. в разделе Heartbeat.

Cron: точное планирование

Задания cron выполняются в строго заданное время и могут запускаться в изолированных сеансах, не влияя на основной контекст.

Когда использовать cron

  • Требуется точное время: «Отправить это в 9:00 утра каждый понедельник» (а не «примерно около 9»).
  • Самостоятельные задачи: Задачи, которым не нужен контекст диалога.
  • Другая модель/мышление: Тяжёлый анализ, для которого оправдано использование более мощной модели.
  • Одноразовые напоминания: «Напомни мне через 20 минут» с --at.
  • Шумные/частые задачи: Задачи, которые захламляли бы историю основного сеанса.
  • Внешние триггеры: Задачи, которые должны выполняться независимо от того, активен ли агент в остальном.

Преимущества cron

  • Точное время: 5-польные cron-выражения с поддержкой часовых поясов.
  • Изоляция сеанса: Выполняется в cron:<jobId> без загрязнения основной истории.
  • Переопределение модели: Используйте более дешёвую или более мощную модель для каждого задания.
  • Контроль доставки: Изолированные задания по умолчанию используют announce (сводка); при необходимости выберите none.
  • Немедленная доставка: Режим announce публикует результат напрямую, не дожидаясь heartbeat.
  • Контекст агента не требуется: Выполняется, даже если основной сеанс простаивает или уплотнён.
  • Поддержка одноразовых задач: --at для точных будущих временных меток.

Пример cron: ежедневный утренний брифинг

Это задание запускается ровно в 7:00 по времени Нью-Йорка, использует Opus для качества и напрямую публикует сводку в WhatsApp.

Пример cron: одноразовое напоминание

Полную справку по CLI см. в разделе Cron jobs.

Блок-схема принятия решения

Сочетание обоих

Наиболее эффективная настройка использует оба механизма:
  1. Heartbeat обрабатывает рутинный мониторинг (почта, календарь, уведомления) одним пакетным запуском каждые 30 минут.
  2. Cron обрабатывает точные расписания (ежедневные отчёты, еженедельные обзоры) и одноразовые напоминания.

Пример: эффективная настройка автоматизации

HEARTBEAT.md (проверяется каждые 30 мин):
Задания cron (точное время):

Lobster: детерминированные рабочие процессы с подтверждениями

Lobster — это среда выполнения рабочих процессов для многошаговых конвейеров инструментов, которым требуется детерминированное выполнение и явные подтверждения. Используйте его, когда задача выходит за рамки одного хода агента и нужен возобновляемый рабочий процесс с контрольными точками для человека.

Когда подходит Lobster

  • Многошаговая автоматизация: Нужен фиксированный конвейер вызовов инструментов, а не разовый промпт.
  • Шлюзы подтверждения: Побочные эффекты должны останавливаться до вашего подтверждения, а затем возобновляться.
  • Возобновляемые запуски: Продолжение приостановленного рабочего процесса без повторного выполнения ранних шагов.

Как он сочетается с heartbeat и cron

  • Heartbeat/cron определяют, когда происходит запуск.
  • Lobster определяет, какие шаги выполняются после начала запуска.
Для запланированных рабочих процессов используйте cron или heartbeat, чтобы инициировать ход агента, который вызывает Lobster. Для ad-hoc рабочих процессов вызывайте Lobster напрямую.

Операционные примечания (из кода)

  • Lobster запускается как локальный подпроцесс (CLI lobster) в режиме инструмента и возвращает JSON-конверт.
  • Если инструмент возвращает needs_approval, вы возобновляете выполнение с resumeToken и флагом approve.
  • Инструмент является необязательным плагином; включайте его аддитивно через tools.alsoAllow: ["lobster"] (рекомендуется).
  • Если вы передаёте lobsterPath, это должен быть абсолютный путь.
Полное описание использования и примеры см. в разделе Lobster.

Основной сеанс vs изолированный сеанс

И heartbeat, и cron могут взаимодействовать с основным сеансом, но по-разному:

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

Используйте --session main с --system-event, если вы хотите:
  • Чтобы напоминание/событие появилось в контексте основного сеанса
  • Чтобы агент обработал его при следующем heartbeat с полным контекстом
  • Отсутствие отдельного изолированного запуска

Когда использовать изолированный cron

Используйте --session isolated, если вы хотите:
  • Чистое состояние без предыдущего контекста
  • Другую модель или настройки «мышления»
  • Прямую публикацию сводок в канал
  • Историю, которая не захламляет основной сеанс

Соображения по стоимости

Советы:
  • Держите HEARTBEAT.md небольшим, чтобы минимизировать накладные расходы на токены.
  • Объединяйте похожие проверки в heartbeat вместо нескольких заданий cron.
  • Используйте target: "none" для heartbeat, если нужна только внутренняя обработка.
  • Используйте изолированный cron с более дешёвой моделью для рутинных задач.

Связанное

  • Heartbeat — полная конфигурация heartbeat
  • Cron jobs — полная справка по CLI и API cron
  • System — системные события и управление heartbeat