Gateway
Heartbeat
Heartbeat выполняет периодические ходы агента в основном сеансе, чтобы модель могла сообщать обо всём, что требует внимания, не засоряя вас сообщениями.
Heartbeat — это запланированный ход в основном сеансе; он не создаёт записи фоновых задач. Записи задач предназначены для обособленной работы (запусков ACP, субагентов, изолированных заданий Cron).
Устранение неполадок: Запланированные задачи
Быстрый старт (для начинающих)
Выберите периодичность
Оставьте Heartbeat включённым (по умолчанию 30m или 1h, если настроена аутентификация Anthropic через OAuth/токен, включая повторное использование Claude CLI) либо задайте собственную периодичность.
Добавьте HEARTBEAT.md (необязательно)
Создайте в рабочем пространстве агента небольшой список проверок HEARTBEAT.md или блок tasks:.
Выберите, куда отправлять сообщения Heartbeat
Значение по умолчанию — target: "none"; задайте target: "last", чтобы направлять сообщения последнему контакту.
Необязательная настройка
- Включите передачу рассуждений Heartbeat для прозрачности.
- Используйте облегчённый начальный контекст, если запускам Heartbeat требуется только
HEARTBEAT.md. - Включите изолированные сеансы, чтобы не отправлять полную историю переписки при каждом Heartbeat.
- Ограничьте Heartbeat активными часами (по местному времени).
Пример конфигурации:
{ agents: { defaults: { heartbeat: { every: "30m", target: "last", // явная доставка последнему контакту (по умолчанию — "none") directPolicy: "allow", // по умолчанию разрешены прямые адресаты и личные сообщения; задайте "block", чтобы отключить lightContext: true, // необязательно: добавлять из файлов начального контекста только HEARTBEAT.md isolatedSession: true, // необязательно: новый сеанс при каждом запуске (без истории переписки) skipWhenBusy: true, // необязательно: также откладывать, когда заняты субагент этого агента или вложенные каналы выполнения // activeHours: { start: "08:00", end: "24:00" }, // includeReasoning: true, // необязательно: также отправлять отдельное сообщение `Thinking` }, }, },}Значения по умолчанию
- Интервал:
30m. Применение настроек провайдера Anthropic по умолчанию увеличивает его до1h, когда определённый режим аутентификации — OAuth/токен (включая повторное использование Claude CLI), но только покаheartbeat.everyне задан. Задайтеagents.defaults.heartbeat.everyилиagents.list[].heartbeat.everyдля отдельного агента; для отключения используйте0m. - Текст запроса (настраивается через
agents.defaults.heartbeat.prompt):Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK. - Тайм-аут: ходы Heartbeat без заданного значения используют
agents.defaults.timeoutSeconds, если он указан. В противном случае используется периодичность Heartbeat с ограничением в 600 секунд. Для более продолжительной работы Heartbeat задайтеagents.defaults.heartbeat.timeoutSecondsилиagents.list[].heartbeat.timeoutSecondsдля отдельного агента. - Запрос Heartbeat отправляется без изменений в качестве пользовательского сообщения. Системный запрос содержит раздел «Heartbeats» только тогда, когда Heartbeat включён для агента по умолчанию (и
includeSystemPromptSectionне равенfalse); запуск при этом помечается внутренним флагом. - Когда Heartbeat отключён с помощью
0m, обычные запуски также исключаютHEARTBEAT.mdиз начального контекста, чтобы модель не видела инструкции, предназначенные только для Heartbeat. - Активные часы (
heartbeat.activeHours) проверяются в настроенном часовом поясе. Вне этого временного окна Heartbeat пропускается до следующего запуска внутри окна. - Heartbeat автоматически откладывается, пока выполняется или ожидает выполнения работа Cron. Задайте
heartbeat.skipWhenBusy: true, чтобы также откладывать запуск агента, когда заняты его собственный привязанный к ключу сеанса субагент или вложенные каналы выполнения команд; агенты того же уровня больше не приостанавливаются только из-за того, что другой агент выполняет работу субагента.
Для чего предназначен запрос Heartbeat
Запрос по умолчанию намеренно сформулирован широко:
- Фоновые задачи: фраза «Рассмотри незавершённые задачи» побуждает агента проверить последующие действия (входящие сообщения, календарь, напоминания, работу в очереди) и сообщить обо всём срочном.
- Проверка состояния пользователя: фраза «Иногда в течение дня интересуйся состоянием своего пользователя» побуждает изредка отправлять короткое сообщение «Вам что-нибудь нужно?», но позволяет избежать ночного потока сообщений благодаря настроенному местному часовому поясу (см. раздел «Часовой пояс»).
Heartbeat может реагировать на завершённые фоновые задачи, но сам запуск Heartbeat не создаёт запись задачи.
Если Heartbeat должен выполнять конкретное действие (например, «проверить статистику Gmail PubSub» или «проверить работоспособность Gateway»), задайте в agents.defaults.heartbeat.prompt (или agents.list[].heartbeat.prompt) собственный текст, который будет отправлен без изменений.
Контракт ответа
- Если ничто не требует внимания, ответьте
HEARTBEAT_OK. - Вместо этого запуск Heartbeat может вызвать
heartbeat_respondсnotify: false, если видимое обновление не требуется, либоnotify: trueвместе сnotificationTextдля оповещения. При наличии структурированный ответ инструмента имеет приоритет над резервным текстовым ответом. - Во время запусков Heartbeat OpenClaw считает
HEARTBEAT_OKподтверждением, если он находится в начале или конце ответа. Токен удаляется, а ответ отбрасывается, если длина оставшегося содержимого составляет ≤ackMaxChars(по умолчанию: 300). - Если
HEARTBEAT_OKнаходится в середине ответа, он не обрабатывается особым образом. - Для оповещений не включайте
HEARTBEAT_OK; возвращайте только текст оповещения.
Вне запусков Heartbeat случайный HEARTBEAT_OK в начале или конце сообщения удаляется и записывается в журнал; сообщение, состоящее только из HEARTBEAT_OK, отбрасывается.
Конфигурация
{ agents: { defaults: { heartbeat: { every: "30m", // по умолчанию: 30m (0m отключает) model: "anthropic/claude-opus-4-6", includeReasoning: false, // по умолчанию: false (при наличии доставлять отдельное сообщение Thinking) lightContext: false, // по умолчанию: false; значение true оставляет из файлов начального контекста рабочего пространства только HEARTBEAT.md isolatedSession: false, // по умолчанию: false; значение true запускает каждый Heartbeat в новом сеансе (без истории переписки) skipWhenBusy: false, // по умолчанию: false; значение true также ожидает освобождения каналов субагента или вложенных каналов этого агента target: "last", // по умолчанию: none | варианты: last | none | <channel id> (ядро или плагин, например "imessage") to: "+15551234567", // необязательное переопределение для конкретного канала accountId: "ops-bot", // необязательный идентификатор канала с несколькими учётными записями prompt: "Прочитай HEARTBEAT.md, если он существует (контекст рабочего пространства). Строго следуй ему. Не выводи и не повторяй старые задачи из предыдущих разговоров. Если ничто не требует внимания, ответь HEARTBEAT_OK.", includeSystemPromptSection: true, // по умолчанию: true; значение false исключает раздел системного запроса ## Heartbeats для агента по умолчанию ackMaxChars: 300, // максимальное количество символов после HEARTBEAT_OK }, }, },}Область действия и приоритет
agents.defaults.heartbeatзадаёт глобальное поведение Heartbeat.agents.list[].heartbeatнакладывается поверх него; если хотя бы у одного агента есть блокheartbeat, Heartbeat выполняют только эти агенты.channels.defaults.heartbeatзадаёт параметры видимости по умолчанию для всех каналов.channels.<channel>.heartbeatпереопределяет параметры каналов по умолчанию.channels.<channel>.accounts.<id>.heartbeat(для каналов с несколькими учётными записями) переопределяет настройки отдельного канала.
Heartbeat для отдельных агентов
Если хотя бы одна запись agents.list[] содержит блок heartbeat, Heartbeat выполняют только эти агенты. Блок отдельного агента накладывается поверх agents.defaults.heartbeat (поэтому общие значения по умолчанию можно задать один раз, а затем переопределять их для отдельных агентов).
Пример: два агента, Heartbeat выполняет только второй.
{ agents: { defaults: { heartbeat: { every: "30m", target: "last", // явная доставка последнему контакту (по умолчанию — "none") }, }, list: [ { id: "main", default: true }, { id: "ops", heartbeat: { every: "1h", target: "whatsapp", to: "+15551234567", timeoutSeconds: 45, prompt: "Прочитай HEARTBEAT.md, если он существует (контекст рабочего пространства). Строго следуй ему. Не выводи и не повторяй старые задачи из предыдущих разговоров. Если ничто не требует внимания, ответь HEARTBEAT_OK.", }, }, ], },}Пример активных часов
Ограничьте Heartbeat рабочими часами в определённом часовом поясе:
{ agents: { defaults: { heartbeat: { every: "30m", target: "last", // явная доставка последнему контакту (по умолчанию — "none") activeHours: { start: "09:00", end: "22:00", timezone: "America/New_York", // необязательно; использует userTimezone, если он задан, иначе часовой пояс хоста }, }, }, },}Вне этого окна (до 9 утра или после 10 вечера по восточному времени) Heartbeat пропускается. Следующий запланированный запуск внутри окна выполнится как обычно.
Работа 24/7
Чтобы Heartbeat выполнялся круглосуточно, используйте один из следующих вариантов:
- Полностью исключите
activeHours(без ограничения временным окном; это поведение по умолчанию). - Задайте окно на весь день:
activeHours: { start: "00:00", end: "24:00" }.
Пример с несколькими учётными записями
Используйте accountId, чтобы указать определённую учётную запись в каналах с несколькими учётными записями, таких как Telegram:
{ agents: { list: [ { id: "ops", heartbeat: { every: "1h", target: "telegram", to: "12345678:topic:42", // необязательно: направлять в определённую тему или ветку accountId: "ops-bot", }, }, ], }, channels: { telegram: { accounts: { "ops-bot": { botToken: "YOUR_TELEGRAM_BOT_TOKEN" }, }, }, },}Описание полей
everystringИнтервал Heartbeat (строка длительности; единица по умолчанию — минуты).
modelstringНеобязательное переопределение модели для запусков Heartbeat (provider/model).
includeReasoningbooleandefault: falseЕсли включено, при наличии также доставляется отдельное сообщение Thinking (в том же формате, что и /reasoning on).
lightContextbooleandefault: falseПри значении true запуски Heartbeat используют облегчённый начальный контекст и сохраняют из файлов начального контекста рабочего пространства только HEARTBEAT.md.
isolatedSessionbooleandefault: falseПри значении true каждый Heartbeat выполняется в новом сеансе без предыдущей истории переписки. Используется тот же принцип изоляции, что и для Cron sessionTarget: "isolated". Это значительно снижает расход токенов на каждый Heartbeat. Для максимальной экономии объедините с lightContext: true. Маршрутизация доставки по-прежнему использует контекст основного сеанса.
skipWhenBusybooleandefault: falseПри значении true запуски Heartbeat откладываются, когда заняты дополнительные каналы этого агента: его собственный привязанный к ключу сеанса субагент или вложенная работа с командами. Каналы Cron всегда откладывают Heartbeat даже без этого флага, поэтому хосты с локальными моделями не выполняют запросы Cron и Heartbeat одновременно.
sessionstringНеобязательный ключ сеанса для запусков Heartbeat.
main(по умолчанию): основной сеанс агента.- Явно заданный ключ сеанса (скопируйте из
openclaw sessions --jsonили CLI сеансов). - Форматы ключей сеансов: см. разделы «Сеансы» и «Группы».
targetstringlast: доставлять в последний использованный внешний канал.- явно указанный канал: любой настроенный канал или идентификатор плагина, например
discord,matrix,telegramилиwhatsapp. none(по умолчанию): запускать Heartbeat, но не доставлять сообщения во внешние каналы.
directPolicy"allow" | "block"default: allowУправляет доставкой напрямую и в личные сообщения. allow: разрешить доставку Heartbeat напрямую и в личные сообщения. block: запретить доставку напрямую и в личные сообщения (reason=dm-blocked).
tostringНеобязательное переопределение получателя (идентификатор, зависящий от канала, например E.164 для WhatsApp или идентификатор чата Telegram). Для тем и веток Telegram используйте <chatId>:topic:<messageThreadId>.
accountIdstringНеобязательный идентификатор учётной записи для каналов с несколькими учётными записями. При target: "last" идентификатор учётной записи применяется к определённому последнему каналу, если тот поддерживает учётные записи; в противном случае он игнорируется. Если идентификатор не соответствует настроенной учётной записи определённого канала, доставка пропускается.
promptstringПереопределяет тело запроса по умолчанию (без объединения).
includeSystemPromptSectionbooleandefault: trueОпределяет, добавляется ли раздел системного запроса ## Heartbeats агента по умолчанию. Установите false, чтобы сохранить поведение Heartbeat во время выполнения (периодичность, доставку, HEARTBEAT.md), но исключить инструкции Heartbeat из системного запроса агента.
ackMaxCharsnumberdefault: 300Максимальное число символов после HEARTBEAT_OK, при котором разрешена доставка.
suppressToolErrorWarningsbooleanЕсли задано значение true, предупреждения об ошибках инструментов не включаются в полезную нагрузку во время запусков Heartbeat.
timeoutSecondsnumberdefault: global timeout or min(every, 600)Максимальное время в секундах, отведённое на ход агента Heartbeat до его прерывания. Не задавайте значение, чтобы использовать agents.defaults.timeoutSeconds, если оно установлено; в противном случае используется период Heartbeat, ограниченный 600 секундами.
activeHoursobjectОграничивает запуски Heartbeat временным окном. Объект с start (HH:MM, включительно; используйте 00:00 для начала суток), end (HH:MM, не включительно; для конца суток допускается 24:00) и необязательным timezone.
- Не указано или
"user": используется вашagents.defaults.userTimezone, если он задан; в противном случае используется часовой пояс системы узла. "local": всегда используется часовой пояс системы узла.- Любой идентификатор IANA (например,
America/New_York): используется напрямую; если он недопустим, применяется описанное выше поведение"user". - Для активного окна значения
startиendне должны совпадать; совпадающие значения считаются окном нулевой ширины (время всегда находится вне окна). - Вне активного окна Heartbeat пропускаются до следующего такта, попадающего в это окно.
Поведение доставки
Маршрутизация сеанса и назначения
- По умолчанию Heartbeat выполняются в основном сеансе агента (
agent:<id>:<mainKey>) или вglobal, когдаsession.scope = "global". Задайтеsession, чтобы переопределить это значение и использовать сеанс определённого канала (Discord/WhatsApp и т. д.). sessionвлияет только на контекст выполнения; доставка управляется параметрамиtargetиto.- Чтобы доставлять сообщения в определённый канал или определённому получателю, задайте
targetиto. Приtarget: "last"для доставки используется последний внешний канал этого сеанса. - По умолчанию Heartbeat можно доставлять напрямую и в личные сообщения. Задайте
directPolicy: "block", чтобы запретить отправку напрямую, не отключая выполнение хода Heartbeat. - Если заняты основная очередь, линия целевого сеанса, линия Cron или активное задание Cron, Heartbeat пропускается и повторяется позже.
- Если
skipWhenBusy: true, линии субагентов с ключом сеанса и вложенные линии этого агента также откладывают запуски Heartbeat. Занятые линии других агентов не откладывают Heartbeat этого агента. - Если
targetне определяет внешнее назначение, выполнение всё равно происходит, но исходящее сообщение не отправляется.
Видимость и поведение при пропуске
- Если
showOk,showAlertsиuseIndicatorотключены, запуск сразу пропускается какreason=alerts-disabled. - Если отключена только доставка оповещений, OpenClaw всё равно может выполнить Heartbeat, обновить временные метки наступивших задач, восстановить временную метку бездействия сеанса и не отправлять полезную нагрузку внешнего оповещения.
- Если определённое назначение Heartbeat поддерживает индикатор набора текста, OpenClaw отображает его во время выполнения Heartbeat. Используется то же назначение, куда Heartbeat отправил бы вывод чата; эта функция отключается параметром
typingMode: "never".
Жизненный цикл сеанса и аудит
- Ответы, относящиеся только к Heartbeat, не поддерживают сеанс активным. Метаданные Heartbeat могут обновлять строку сеанса, однако истечение срока из-за бездействия определяется по
lastInteractionAtиз последнего реального сообщения пользователя или канала, а ежедневное истечение срока — поsessionStartedAt. - В истории Control UI и WebChat скрываются запросы Heartbeat и подтверждения, содержащие только OK. Эти ходы могут сохраняться в исходной стенограмме сеанса для аудита и повторного воспроизведения.
- Отделённые фоновые задачи могут поставить системное событие в очередь и активировать Heartbeat, когда основной сеанс должен быстро обратить на что-либо внимание. Такая активация не превращает запуск Heartbeat в фоновую задачу.
Управление видимостью
По умолчанию подтверждения HEARTBEAT_OK не отображаются, а содержимое оповещений доставляется. Это можно настроить отдельно для каждого канала или учётной записи:
channels: defaults: heartbeat: showOk: false # Скрывать HEARTBEAT_OK (по умолчанию) showAlerts: true # Показывать сообщения оповещений (по умолчанию) useIndicator: true # Создавать события индикатора (по умолчанию) telegram: heartbeat: showOk: true # Показывать подтверждения OK в Telegram whatsapp: accounts: work: heartbeat: showAlerts: false # Не доставлять оповещения для этой учётной записиПриоритет: настройки учётной записи → настройки канала → настройки канала по умолчанию → встроенные значения по умолчанию.
Назначение каждого флага
showOk: отправляет подтверждениеHEARTBEAT_OK, когда модель возвращает ответ, содержащий только OK.showAlerts: отправляет содержимое оповещения, когда модель возвращает ответ, отличный от OK.useIndicator: создаёт события индикатора для отображения состояния в интерфейсе.
Если все три параметра имеют значение false, OpenClaw полностью пропускает запуск Heartbeat (модель не вызывается).
Примеры настроек для канала и учётной записи
channels: defaults: heartbeat: showOk: false showAlerts: true useIndicator: true slack: heartbeat: showOk: true # все учётные записи Slack accounts: ops: heartbeat: showAlerts: false # отключить оповещения только для учётной записи ops telegram: heartbeat: showOk: trueРаспространённые схемы
| Цель | Конфигурация |
|---|---|
| Поведение по умолчанию (OK скрыты, оповещения включены) | (настройка не требуется) |
| Полная тишина (без сообщений и индикатора) | channels.defaults.heartbeat: { showOk: false, showAlerts: false, useIndicator: false } |
| Только индикатор (без сообщений) | channels.defaults.heartbeat: { showOk: false, showAlerts: false, useIndicator: true } |
| OK только в одном канале | channels.telegram.heartbeat: { showOk: true } |
HEARTBEAT.md (необязательно)
Если в рабочей области существует файл HEARTBEAT.md, запрос по умолчанию предписывает агенту прочитать его. Считайте его «контрольным списком Heartbeat»: небольшим, стабильным и безопасным для проверки каждые 30 минут.
При обычных запусках HEARTBEAT.md добавляется только тогда, когда рекомендации Heartbeat включены для агента по умолчанию. Отключение периодичности Heartbeat с помощью 0m или установка includeSystemPromptSection: false исключает его из обычного начального контекста.
В нативной среде Codex содержимое HEARTBEAT.md не добавляется в ход так же, как другие начальные файлы. Если файл существует и содержит непробельные символы, примечание о режиме совместной работы Heartbeat указывает Codex на этот файл и предписывает прочитать его перед продолжением.
Если HEARTBEAT.md существует, но фактически пуст (содержит только пустые строки, комментарии Markdown/HTML, заголовки Markdown вроде # Heading, маркеры блоков или пустые заготовки контрольного списка), OpenClaw пропускает запуск Heartbeat, чтобы сократить число вызовов API. Такой пропуск обозначается как reason=empty-heartbeat-file. Если файл отсутствует, Heartbeat всё равно выполняется, а модель сама решает, что делать.
Оставляйте его небольшим (короткий контрольный список или напоминания), чтобы не раздувать запрос.
Пример HEARTBEAT.md:
# Контрольный список Heartbeat - Быстро проверить: нет ли чего-нибудь срочного во входящих?- Если сейчас день и других ожидающих задач нет, выполнить быструю проверку состояния.- Если задача заблокирована, записать, _чего не хватает_, и в следующий раз спросить Питера.Блоки tasks:
HEARTBEAT.md также поддерживает небольшой структурированный блок tasks: для проверок по интервалам внутри самого Heartbeat.
Пример:
tasks: - name: inbox-triage interval: 30m prompt: "Проверь срочные непрочитанные письма и отметь всё, что требует скорого ответа."- name: calendar-scan interval: 2h prompt: "Проверь предстоящие встречи, к которым нужно подготовиться или по итогам которых требуются действия." # Дополнительные инструкции - Оповещения должны быть краткими.- Если после выполнения всех наступивших задач ничто не требует внимания, ответь HEARTBEAT_OK.Поведение
- OpenClaw разбирает блок
tasks:и проверяет каждую задачу с учётом её собственногоinterval. - В запрос Heartbeat для текущего такта включаются только наступившие задачи.
- Если ни одна задача не наступила, Heartbeat полностью пропускается (
reason=no-tasks-due), чтобы не тратить вызов модели. - Содержимое
HEARTBEAT.md, не относящееся к задачам, сохраняется и добавляется как дополнительный контекст после списка наступивших задач. - Временные метки последнего выполнения задач хранятся в состоянии сеанса (
heartbeatTaskState), поэтому интервалы сохраняются после обычных перезапусков. - Временные метки задач обновляются только после того, как запуск Heartbeat завершит обычный путь ответа. Пропущенные запуски
empty-heartbeat-file/no-tasks-dueне помечают задачи как выполненные.
Режим задач удобен, когда один файл Heartbeat должен содержать несколько периодических проверок, но вы не хотите выполнять их все на каждом такте.
Может ли агент обновлять HEARTBEAT.md?
Да — если вы его об этом попросите.
HEARTBEAT.md — это обычный файл в рабочей области агента, поэтому в обычном чате можно сказать агенту, например:
- «Обнови
HEARTBEAT.md, добавив ежедневную проверку календаря». - «Перепиши
HEARTBEAT.md, чтобы сделать его короче и сосредоточить на дальнейшей работе с входящими сообщениями».
Если это должно происходить заблаговременно, можно также добавить в запрос Heartbeat явную строку: «Если контрольный список устареет, замени содержимое HEARTBEAT.md более подходящим вариантом».
Ручная активация (по требованию)
Используйте openclaw system event, чтобы поставить системное событие в очередь и при необходимости немедленно запустить Heartbeat:
openclaw system event --text "Проверь, не требуются ли срочные последующие действия" --mode now| Флаг | Описание |
|---|---|
--text <text> |
Текст системного события (обязательно). |
--mode <mode> |
now немедленно запускает Heartbeat; next-heartbeat (по умолчанию) ожидает следующего запланированного такта. |
--session-key <sessionKey> |
Направляет событие в определённый сеанс; по умолчанию используется основной сеанс агента. |
--json |
Вывод в формате JSON. |
Если --session-key не указан и для нескольких агентов настроен heartbeat, то --mode now немедленно запускает Heartbeat каждого из этих агентов.
Связанные элементы управления Heartbeat в той же группе CLI:
openclaw system heartbeat last # показать последнее событие Heartbeatopenclaw system heartbeat enable # включить Heartbeatopenclaw system heartbeat disable # отключить HeartbeatПередача рассуждений (необязательно)
По умолчанию Heartbeat передаёт только итоговую полезную нагрузку «ответа».
Чтобы обеспечить прозрачность, включите:
agents.defaults.heartbeat.includeReasoning: true
После включения Heartbeat также будет передавать отдельное сообщение с префиксом Thinking (того же формата, что и /reasoning on). Это может быть полезно, когда агент управляет несколькими сеансами или экземплярами Codex и вы хотите видеть, почему он решил отправить вам уведомление, однако при этом может раскрыться больше внутренних сведений, чем вам хотелось бы. В групповых чатах рекомендуется оставлять эту функцию отключённой.
Учёт затрат
Heartbeat выполняет полные проходы агента. Чем короче интервалы, тем больше расход токенов. Чтобы снизить затраты:
- Используйте
isolatedSession: true, чтобы не отправлять полную историю диалога (сокращение примерно со ~100K до ~2-5K токенов на запуск). - Используйте
lightContext: true, чтобы ограничить загрузочные файлы только файломHEARTBEAT.md. - Укажите более дешёвую модель в
model(например,ollama/llama3.2:1b). - Сохраняйте значение
HEARTBEAT.mdнебольшим. - Используйте
target: "none", если нужны только внутренние обновления состояния.
Переполнение контекста после Heartbeat
После завершения запуска Heartbeat сохраняет существующую модель среды выполнения общего сеанса, поэтому Heartbeat, переключивший сеанс на локальную модель меньшего размера (например, модель Ollama с окном 32k), может оставить эту модель активной для следующего прохода основного сеанса. Если при следующем проходе возникает переполнение контекста, а последняя модель среды выполнения сеанса совпадает с настроенной в heartbeat.model, сообщение OpenClaw о восстановлении указывает в качестве вероятной причины утечку модели из Heartbeat и предлагает исправление.
Чтобы избежать этого, используйте isolatedSession: true для запуска Heartbeat в новом сеансе (при необходимости совместно с lightContext: true для минимального промпта) либо выберите для Heartbeat модель с окном контекста, достаточно большим для общего сеанса.
Связанные материалы
- Автоматизация — краткий обзор всех механизмов автоматизации
- Фоновые задачи — как отслеживается работа, выполняемая в отсоединённом режиме
- Часовой пояс — как часовой пояс влияет на расписание Heartbeat
- Устранение неполадок — диагностика проблем автоматизации