Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Heartbeat чи cron? Див. Automation, щоб зрозуміти, коли використовувати кожен із них.
Швидкий старт (для початківців)
Виберіть частоту
Залиште Heartbeat увімкненими (за замовчуванням
30m, або 1h для Anthropic OAuth/токен-автентифікації, зокрема повторного використання Claude CLI) або задайте власну частоту.Додайте HEARTBEAT.md (необов’язково)
Створіть невеликий контрольний список
HEARTBEAT.md або блок tasks: у робочому просторі агента.Вирішіть, куди мають надходити повідомлення Heartbeat
target: "none" — значення за замовчуванням; задайте target: "last", щоб спрямовувати їх до останнього контакту.Необов’язкове налаштування
- Увімкніть доставку міркувань Heartbeat для прозорості.
- Використовуйте полегшений початковий контекст, якщо для запусків Heartbeat потрібен лише
HEARTBEAT.md. - Увімкніть ізольовані сесії, щоб не надсилати повну історію розмови під час кожного Heartbeat.
- Обмежте Heartbeat активними годинами (за місцевим часом).
Значення за замовчуванням
- Інтервал:
30m(або1h, коли виявлено режим автентифікації Anthropic OAuth/токеном, зокрема повторне використання Claude CLI). Задайте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 надсилається дослівно як повідомлення користувача. Системний промпт містить розділ “Heartbeat” лише коли Heartbeat увімкнено для агента за замовчуванням, а запуск позначено внутрішньо.
- Коли Heartbeat вимкнено через
0m, звичайні запуски також не включаютьHEARTBEAT.mdдо початкового контексту, щоб модель не бачила інструкції, призначені лише для Heartbeat. - Активні години (
heartbeat.activeHours) перевіряються в налаштованому часовому поясі. Поза цим вікном Heartbeat пропускаються до наступного тику всередині вікна. - Heartbeat автоматично відкладаються, поки cron-робота активна або стоїть у черзі. Задайте
heartbeat.skipWhenBusy: true, щоб також відкладати агента на його власних прив’язаних до ключа сесії субагентських або вкладених командних смугах; сусідні агенти більше не призупиняються лише тому, що інший агент має субагентську роботу в процесі.
Для чого потрібен промпт Heartbeat
Промпт за замовчуванням навмисно широкий:- Фонові завдання: “Consider outstanding tasks” підштовхує агента переглянути подальші дії (вхідні, календар, нагадування, роботу в черзі) і показати все термінове.
- Перевірка людини: “Checkup sometimes on your human during day time” підштовхує до періодичного легкого повідомлення “щось потрібно?”, але уникає нічного спаму, використовуючи ваш налаштований місцевий часовий пояс (див. Timezone).
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_OK на початку/в кінці повідомлення видаляється і логуються; повідомлення, яке містить лише 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 запускає лише другий агент.
Приклад активних годин
Обмежте Heartbeat робочими годинами в певному часовому поясі:Налаштування 24/7
Якщо ви хочете, щоб Heartbeat працювали весь день, використовуйте один із цих шаблонів:- Повністю опустіть
activeHours(немає обмеження часовим вікном; це поведінка за замовчуванням). - Задайте вікно на весь день:
activeHours: { start: "00:00", end: "24:00" }.
Приклад кількох облікових записів
ВикористовуйтеaccountId, щоб націлитися на конкретний обліковий запис у каналах із кількома обліковими записами, як-от Telegram:
Примітки до полів
Інтервал Heartbeat (рядок тривалості; одиниця за замовчуванням = хвилини).
Необов’язкове перевизначення моделі для запусків Heartbeat (
provider/model).Якщо ввімкнено, також доставляє окреме повідомлення
Reasoning:, коли воно доступне (та сама форма, що й /reasoning on).Якщо true, запуски Heartbeat використовують полегшений початковий контекст і залишають лише
HEARTBEAT.md із файлів початкового завантаження робочого простору.Якщо true, кожен Heartbeat запускається в новій сесії без попередньої історії розмови. Використовує той самий шаблон ізоляції, що й cron
sessionTarget: "isolated". Значно зменшує токен-вартість кожного Heartbeat. Поєднуйте з lightContext: true для максимальної економії. Маршрутизація доставки все одно використовує контекст основної сесії.Якщо true, запуски Heartbeat відкладаються на додаткових зайнятих смугах цього агента: його власній прив’язаній до ключа сесії субагентській або вкладеній командній роботі. Смуги cron завжди відкладають Heartbeat, навіть без цього прапорця, щоб хости локальних моделей не запускали cron і промпти Heartbeat одночасно.
Необов’язковий ключ сесії для запусків Heartbeat.
main(за замовчуванням): основна сесія агента.- Явний ключ сесії (скопіюйте з
openclaw sessions --jsonабо з sessions CLI). - Формати ключів сесій: див. Sessions і Groups.
last: доставити до останнього використаного зовнішнього каналу.- явний канал: будь-який налаштований канал або ідентифікатор Plugin, наприклад
discord,matrix,telegramабоwhatsapp. none(за замовчуванням): запустити Heartbeat, але не доставляти назовні.
Керує поведінкою прямої/DM-доставки.
allow: дозволити пряму/DM-доставку Heartbeat. block: придушити пряму/DM-доставку (reason=dm-blocked).Необов’язкове перевизначення одержувача (ідентифікатор, специфічний для каналу, наприклад E.164 для WhatsApp або ідентифікатор чату Telegram). Для тем/тредів Telegram використовуйте
<chatId>:topic:<messageThreadId>.Необов’язковий ідентифікатор облікового запису для каналів із кількома обліковими записами. Коли
target: "last", ідентифікатор облікового запису застосовується до визначеного останнього каналу, якщо він підтримує облікові записи; інакше він ігнорується. Якщо ідентифікатор облікового запису не відповідає налаштованому обліковому запису для визначеного каналу, доставка пропускається.Перевизначає стандартне тіло prompt (не об’єднується).
Максимальна кількість символів, дозволена після
HEARTBEAT_OK перед доставленням.Якщо true, пригнічує payload-и попереджень про помилки інструментів під час запусків Heartbeat.
Обмежує запуски 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 типово дозволяють прямі/DM-цілі. Задайте
directPolicy: "block", щоб пригнітити надсилання прямим цілям, але все одно виконати хід Heartbeat. - Якщо основна черга, lane цільового сеансу, lane Cron або активне завдання Cron зайняті, Heartbeat пропускається й повторюється пізніше.
- Якщо
skipWhenBusy: true, підagent цього агента з ключем сеансу та вкладені lanes також відкладають запуски Heartbeat. Зайняті lanes інших агентів не відкладають цього агента. - Якщо
targetне розв’язується в жодне зовнішнє призначення, запуск усе одно відбувається, але вихідне повідомлення не надсилається.
Видимість і поведінка пропуску
Видимість і поведінка пропуску
- Якщо
showOk,showAlertsіuseIndicatorусі вимкнені, запуск пропускається наперед якreason=alerts-disabled. - Якщо вимкнено лише доставлення сповіщень, OpenClaw усе одно може запустити Heartbeat, оновити timestamps завдань із наставшим строком, відновити timestamp простою сеансу та пригнітити зовнішній payload сповіщення.
- Якщо розв’язана ціль Heartbeat підтримує індикатор набору, OpenClaw показує набір, доки запуск Heartbeat активний. Для цього використовується та сама ціль, куди Heartbeat надіслав би вивід чату, і це вимикається через
typingMode: "never".
Життєвий цикл сеансу й аудит
Життєвий цикл сеансу й аудит
- Відповіді лише від Heartbeat не підтримують сеанс активним. Метадані Heartbeat можуть оновити рядок сеансу, але закінчення строку через простій використовує
lastInteractionAtз останнього справжнього повідомлення користувача/каналу, а щоденне закінчення строку використовуєsessionStartedAt. - Control UI та історія WebChat приховують prompts Heartbeat і підтвердження лише з OK. Базова транскрипція сеансу все ще може містити ці ходи для аудиту/відтворення.
- Від’єднані фонові завдання можуть поставити системну подію в чергу та розбудити Heartbeat, коли основний сеанс має швидко щось помітити. Це пробудження не робить запуск Heartbeat фоновим завданням.
Елементи керування видимістю
Типово підтвердженняHEARTBEAT_OK пригнічуються, а вміст сповіщень доставляється. Ви можете налаштувати це для кожного каналу або облікового запису:
Що робить кожен прапорець
showOk: надсилає підтвердженняHEARTBEAT_OK, коли модель повертає відповідь лише з OK.showAlerts: надсилає вміст сповіщення, коли модель повертає відповідь не з OK.useIndicator: випускає події індикатора для поверхонь статусу UI.
Приклади для каналу й для облікового запису
Поширені шаблони
| Мета | Конфігурація |
|---|---|
| Стандартна поведінка (тихі 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 існує в робочій області, стандартний prompt каже агенту прочитати його. Думайте про нього як про ваш “чекліст Heartbeat”: малий, стабільний і безпечний для включення кожні 30 хвилин.
Під час звичайних запусків HEARTBEAT.md вставляється лише тоді, коли інструкції Heartbeat увімкнені для стандартного агента. Вимкнення каденції Heartbeat через 0m або встановлення includeSystemPromptSection: false вилучає його зі звичайного bootstrap-контексту.
Якщо HEARTBEAT.md існує, але фактично порожній (лише порожні рядки та Markdown-заголовки на кшталт # Heading), OpenClaw пропускає запуск Heartbeat, щоб заощадити виклики API. Цей пропуск повідомляється як reason=empty-heartbeat-file. Якщо файл відсутній, Heartbeat усе одно запускається, а модель вирішує, що робити.
Тримайте його дуже малим (короткий чекліст або нагадування), щоб уникнути роздування prompt.
Приклад HEARTBEAT.md:
Блоки tasks:
HEARTBEAT.md також підтримує невеликий структурований блок tasks: для перевірок на основі інтервалів всередині самого Heartbeat.
Приклад:
Поведінка
Поведінка
- OpenClaw аналізує блок
tasks:і перевіряє кожне завдання за його власнимinterval. - До prompt Heartbeat для цього тіку включаються лише завдання, строк яких настав.
- Якщо немає завдань зі строком, що настав, Heartbeat повністю пропускається (
reason=no-tasks-due), щоб уникнути змарнованого виклику моделі. - Вміст у
HEARTBEAT.md, який не є завданням, зберігається й додається як додатковий контекст після списку завдань зі строком, що настав. - Timestamps останнього запуску завдань зберігаються у стані сеансу (
heartbeatTaskState), тому інтервали переживають звичайні перезапуски. - Timestamps завдань просуваються лише після того, як запуск Heartbeat завершує свій звичайний шлях відповіді. Пропущені запуски
empty-heartbeat-file/no-tasks-dueне позначають завдання як виконані.
Чи може агент оновлювати HEARTBEAT.md?
Так — якщо ви попросите його.HEARTBEAT.md — це просто звичайний файл у робочій області агента, тому ви можете сказати агенту (у звичайному чаті) щось на кшталт:
- “Онови
HEARTBEAT.md, щоб додати щоденну перевірку календаря.” - “Перепиши
HEARTBEAT.md, щоб він був коротшим і зосередженим на подальших діях щодо inbox.”
Ручне пробудження (на вимогу)
Ви можете поставити системну подію в чергу та запустити негайний Heartbeat за допомогою:heartbeat налаштовано для кількох агентів, ручне пробудження негайно запускає Heartbeat-и кожного з цих агентів.
Використовуйте --mode next-heartbeat, щоб зачекати на наступний запланований тік.
Доставлення reasoning (необов’язково)
Типово Heartbeat-и доставляють лише фінальний payload “answer”. Якщо вам потрібна прозорість, увімкніть:agents.defaults.heartbeat.includeReasoning: true
Reasoning: (така сама форма, як /reasoning on). Це може бути корисно, коли агент керує кількома сеансами/codexes і ви хочете бачити, чому він вирішив надіслати вам ping, але це також може розкрити більше внутрішніх деталей, ніж вам потрібно. У групових чатах краще залишати це вимкненим.
Обізнаність про витрати
Heartbeat-и запускають повні ходи агента. Коротші інтервали спалюють більше токенів. Щоб зменшити витрати:- Використовуйте
isolatedSession: true, щоб не надсилати повну історію розмови (приблизно зі 100K токенів до приблизно 2-5K за запуск). - Використовуйте
lightContext: true, щоб обмежити bootstrap-файли лишеHEARTBEAT.md. - Задайте дешевшу
model(наприклад,ollama/llama3.2:1b). - Тримайте
HEARTBEAT.mdмалим. - Використовуйте
target: "none", якщо вам потрібні лише оновлення внутрішнього стану.
Переповнення контексту після Heartbeat
Якщо Heartbeat раніше залишив наявний сеанс на меншій локальній моделі, наприклад моделі Ollama з вікном 32k, а наступний хід основного сеансу повідомляє про переповнення контексту, скиньте runtime-модель сеансу назад до налаштованої основної моделі. Повідомлення скидання OpenClaw прямо вказує на це, коли остання runtime-модель відповідає налаштованійheartbeat.model.
Поточні Heartbeat-и зберігають наявну runtime-модель спільного сеансу після завершення запуску. Ви все ще можете використовувати isolatedSession: true, щоб запускати Heartbeat-и у свіжому сеансі, поєднувати це з lightContext: true для найменшого prompt або вибрати модель Heartbeat з вікном контексту, достатньо великим для спільного сеансу.
Пов’язане
- Автоматизація — усі механізми автоматизації стисло
- Фонові завдання — як відстежується від’єднана робота
- Часовий пояс — як часовий пояс впливає на планування Heartbeat
- Усунення несправностей — налагодження проблем автоматизації