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 годинами активності (за місцевим часом).
  • Приклад конфігурації:

    json5
    {  agents: {    defaults: {      heartbeat: {        every: "30m",        target: "last", // explicit delivery to last contact (default is "none")        directPolicy: "allow", // default: allow direct/DM targets; set "block" to suppress        lightContext: true, // optional: only inject HEARTBEAT.md from bootstrap files        isolatedSession: true, // optional: fresh session each run (no conversation history)        skipWhenBusy: true, // optional: also defer when this agent's subagent or nested lanes are busy        // activeHours: { start: "08:00", end: "24:00" },        // includeReasoning: true, // optional: send separate `Thinking` message too      },    },  },}

    Типові значення

    • Інтервал: 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, відкидається.

    Конфігурація

    json5
    {  agents: {    defaults: {      heartbeat: {        every: "30m", // default: 30m (0m disables)        model: "anthropic/claude-opus-4-6",        includeReasoning: false, // default: false (deliver separate Thinking message when available)        lightContext: false, // default: false; true keeps only HEARTBEAT.md from workspace bootstrap files        isolatedSession: false, // default: false; true runs each heartbeat in a fresh session (no conversation history)        skipWhenBusy: false, // default: false; true also waits for this agent's subagent/nested lanes        target: "last", // default: none | options: last | none | <channel id> (core or plugin, e.g. "imessage")        to: "+15551234567", // optional channel-specific override        accountId: "ops-bot", // optional multi-account channel id        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.",        includeSystemPromptSection: true, // default: true; false omits the ## Heartbeats system prompt section for the default agent        ackMaxChars: 300, // max chars allowed after 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 запускає лише другий.

    json5
    {  agents: {    defaults: {      heartbeat: {        every: "30m",        target: "last", // explicit delivery to last contact (default is "none")      },    },    list: [      { id: "main", default: true },      {        id: "ops",        heartbeat: {          every: "1h",          target: "whatsapp",          to: "+15551234567",          timeoutSeconds: 45,          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 робочими годинами в певному часовому поясі:

    json5
    {  agents: {    defaults: {      heartbeat: {        every: "30m",        target: "last", // explicit delivery to last contact (default is "none")        activeHours: {          start: "09:00",          end: "22:00",          timezone: "America/New_York", // optional; uses your userTimezone if set, otherwise host tz        },      },    },  },}

    Поза цим проміжком (до 9:00 або після 22:00 за східним часом) Heartbeat пропускається. Наступний запланований такт у межах проміжку буде виконано у звичайному режимі.

    Налаштування 24/7

    Якщо потрібно, щоб Heartbeat працював цілий день, скористайтеся одним із цих варіантів:

    • Повністю пропустіть activeHours (без обмеження часовим проміжком; це типова поведінка).
    • Установіть повнодобовий проміжок: activeHours: { start: "00:00", end: "24:00" }.

    Приклад із кількома обліковими записами

    Використовуйте accountId, щоб націлитися на певний обліковий запис у каналах із кількома обліковими записами, як-от Telegram:

    json5
    {  agents: {    list: [      {        id: "ops",        heartbeat: {          every: "1h",          target: "telegram",          to: "12345678:topic:42", // optional: route to a specific topic/thread          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 сеансів).
    • Формати ключів сеансів: див. Сеанси і Групи.
    targetstring
    • last: доставити до останнього використаного зовнішнього каналу.
    • явний канал: будь-який налаштований канал або ідентифікатор Plugin, наприклад 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 (ГГ:ХХ, включно; використовуйте 00:00 для початку дня), end (ГГ:ХХ, не включно; для кінця дня дозволено 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. Зайняті смуги інших агентів не відкладають запуски цього агента.
    • Якщо 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 приховуються, а вміст сповіщень доставляється. Це можна налаштувати окремо для кожного каналу або облікового запису:

    yaml
    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 (без виклику моделі).

    Приклади налаштувань для каналу та облікового запису

    yaml
    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:

    md
    # Контрольний список Heartbeat - Швидко перевірити: чи є щось термінове у вхідних?- Якщо зараз день і немає інших очікуваних справ, виконати коротку перевірку стану.- Якщо завдання заблоковане, записати _чого бракує_ й наступного разу запитати Пітера.

    Блоки tasks:

    HEARTBEAT.md також підтримує невеликий структурований блок tasks: для перевірок на основі інтервалів безпосередньо в Heartbeat.

    Приклад:

    md
    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:

    bash
    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:

    bash
    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, щоб не надсилати повну історію розмови (скорочення приблизно зі 100 тис. токенів до 2–5 тис. за один запуск).
    • Використовуйте lightContext: true, щоб обмежити початкові файли лише файлом HEARTBEAT.md.
    • Установіть дешевшу model (наприклад, ollama/llama3.2:1b).
    • Зберігайте файл HEARTBEAT.md невеликим.
    • Використовуйте target: "none", якщо вам потрібні лише оновлення внутрішнього стану.

    Переповнення контексту після Heartbeat

    Після завершення запуску Heartbeat зберігає поточну модель виконання спільного сеансу, тому Heartbeat, який перемкнув сеанс на меншу локальну модель (наприклад, модель Ollama з контекстним вікном 32 тис. токенів), може залишити цю модель активною для наступного циклу основного сеансу. Якщо під час цього наступного циклу виникне повідомлення про переповнення контексту, а остання модель виконання сеансу збігається з налаштованою heartbeat.model, повідомлення OpenClaw про відновлення вкаже на перенесення моделі Heartbeat як імовірну причину та запропонує спосіб виправлення.

    Щоб уникнути цього, використовуйте isolatedSession: true для запуску Heartbeat у новому сеансі (за потреби разом із lightContext: true для найменшого запиту) або виберіть для Heartbeat модель із контекстним вікном, достатньо великим для спільного сеансу.

    Пов’язані матеріали

    Was this useful?
    On this page

    On this page