chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-07 23:54:23 +00:00
parent f4eb5203c5
commit b2a7a81645
2 changed files with 249 additions and 237 deletions

View File

@ -1,102 +1,101 @@
---
read_when:
- Редагування тексту системного запиту, списку tools або розділів часу/heartbeat
- Зміна поведінки bootstrap робочого простору або інʼєкції Skills
summary: Що містить системний запит OpenClaw і як він збирається
title: Системний запит
- Редагування тексту системного prompt, списку інструментів або розділів часу/heartbeat
- Зміна bootstrap робочого простору або поведінки ін’єкції Skills
summary: Що містить системний prompt OpenClaw і як він збирається
title: Системний prompt
x-i18n:
generated_at: "2026-04-05T18:02:24Z"
generated_at: "2026-04-07T23:53:52Z"
model: gpt-5.4
provider: openai
source_hash: f14ba7f16dda81ac973d72be05931fa246bdfa0e1068df1a84d040ebd551c236
source_hash: e55fc886bc8ec47584d07c9e60dfacd964dc69c7db976ea373877dc4fe09a79a
source_path: concepts/system-prompt.md
workflow: 15
---
# Системний запит
# Системний prompt
OpenClaw створює власний системний запит для кожного запуску агента. Цей запит **належить OpenClaw** і не використовує типовий запит pi-coding-agent.
OpenClaw створює власний системний prompt для кожного запуску агента. Цей prompt **належить OpenClaw** і не використовує стандартний prompt pi-coding-agent.
Запит збирається OpenClaw і додається до кожного запуску агента.
Prompt збирається OpenClaw і впроваджується в кожен запуск агента.
Плагіни провайдерів можуть додавати cache-aware інструкції для запиту без заміни
повного запиту, яким володіє OpenClaw. Runtime провайдера може:
Плагіни провайдерів можуть додавати cache-aware настанови для prompt без заміни
повного prompt, що належить OpenClaw. Середовище виконання провайдера може:
- замінювати невеликий набір іменованих основних розділів (`interaction_style`,
`tool_call_style`, `execution_bias`)
- додавати **стабільний префікс** над межею prompt cache
- додавати **динамічний суфікс** під межею prompt cache
- впроваджувати **stable prefix** над межею кешу prompt
- впроваджувати **dynamic suffix** під межею кешу prompt
Використовуйте внески від провайдерів для налаштування під конкретні сімейства моделей. Застарілу
мутацію запиту `before_prompt_build` залишайте для сумісності або для справді глобальних змін запиту, а не для звичайної поведінки провайдера.
Використовуйте внески, що належать провайдеру, для налаштування під конкретні сімейства моделей. Зберігайте застарілу
мутацію prompt `before_prompt_build` для сумісності або справді глобальних змін prompt, а не для звичайної поведінки провайдера.
## Структура
Запит навмисно компактний і використовує фіксовані розділи:
Prompt навмисно компактний і використовує фіксовані розділи:
- **Tooling**: нагадування про джерело істини для structured-tool плюс інструкції runtime щодо використання tools.
- **Safety**: коротке нагадування про запобіжники, щоб уникати поведінки, спрямованої на здобуття влади, або обходу нагляду.
- **Інструментарій**: нагадування про джерело істини для structured-tool та настанови щодо використання інструментів під час виконання.
- **Безпека**: коротке нагадування про запобіжники, щоб уникати поведінки, спрямованої на здобуття влади, або обходу нагляду.
- **Skills** (коли доступні): пояснює моделі, як завантажувати інструкції навичок на вимогу.
- **Самооновлення OpenClaw**: як безпечно перевіряти конфігурацію через
`config.schema.lookup`, змінювати конфігурацію через `config.patch`, замінювати повну
конфігурацію через `config.apply` і запускати `update.run` лише на явний
запит користувача. Інструмент `gateway`, доступний лише власнику, також відмовляється переписувати
- **Самооновлення OpenClaw**: як безпечно перевіряти конфігурацію за допомогою
`config.schema.lookup`, змінювати конфігурацію через `config.patch`, замінювати всю
конфігурацію за допомогою `config.apply` і запускати `update.run` лише за явним
запитом користувача. Інструмент `gateway`, доступний лише власнику, також відмовляється переписувати
`tools.exec.ask` / `tools.exec.security`, включно із застарілими
псевдонімами `tools.bash.*`, які нормалізуються до цих захищених exec-шляхів.
- **Workspace**: робочий каталог (`agents.defaults.workspace`).
- **Documentation**: локальний шлях до документації OpenClaw (репозиторій або npm-пакунок) і коли її читати.
- **Workspace Files (injected)**: вказує, що bootstrap-файли включено нижче.
- **Sandbox** (коли ввімкнено): вказує на sandbox runtime, шляхи sandbox і чи доступний підвищений exec.
- **Current Date & Time**: локальний час користувача, часовий пояс і формат часу.
- **Reply Tags**: необов’язковий синтаксис тегів відповіді для підтримуваних провайдерів.
- **Heartbeats**: запит heartbeat і поведінка ack.
- **Runtime**: хост, ОС, node, модель, корінь репозиторію (коли виявлено), рівень thinking (один рядок).
- **Reasoning**: поточний рівень видимості + підказка для перемикання `/reasoning`.
псевдонімами `tools.bash.*`, які нормалізуються до цих захищених шляхів exec.
- **Робочий простір**: робочий каталог (`agents.defaults.workspace`).
- **Документація**: локальний шлях до документації OpenClaw (репозиторій або npm package) і коли її слід читати.
- **Файли робочого простору (впроваджені)**: вказує, що bootstrap-файли включено нижче.
- **Пісочниця** (коли увімкнено): вказує, що використовується ізольоване середовище виконання, шляхи пісочниці та чи доступний exec із підвищеними правами.
- **Поточна дата й час**: локальний для користувача час, часовий пояс і формат часу.
- **Теги відповіді**: необов’язковий синтаксис тегів відповіді для підтримуваних провайдерів.
- **Heartbeats**: prompt heartbeat та поведінка підтвердження, коли heartbeats увімкнено для агента за замовчуванням.
- **Середовище виконання**: хост, ОС, node, модель, корінь репозиторію (якщо виявлено), рівень thinking (один рядок).
- **Міркування**: поточний рівень видимості + підказка про перемикач /reasoning.
Розділ Tooling також містить інструкції runtime для довготривалої роботи:
Розділ «Інструментарій» також містить настанови для тривалих завдань під час виконання:
- використовувати cron для майбутніх дій (`check back later`, нагадування, повторювана робота)
замість циклів сну через `exec`, трюків затримки `yieldMs` або повторного опитування `process`
- використовувати `exec` / `process` лише для команд, які стартують зараз і продовжують працювати
- використовуйте cron для майбутніх повторних дій (`check back later`, нагадування, періодичні завдання)
замість циклів сну `exec`, трюків із затримкою `yieldMs` або повторного опитування `process`
- використовуйте `exec` / `process` лише для команд, які запускаються зараз і продовжують виконуватися
у фоновому режимі
- коли ввімкнено автоматичне пробудження після завершення, запускати команду лише один раз і покладатися на
шлях push-сповіщення, коли вона виводить результат або завершується з помилкою
- використовувати `process` для журналів, стану, введення або втручання, коли потрібно
перевірити запущену команду
- якщо завдання більше, надавати перевагу `sessions_spawn`; завершення субагента відбувається через push
і автоматично анонсується назад запитувачу
- не опитувати `subagents list` / `sessions_list` у циклі лише для очікування
- коли ввімкнено автоматичне пробудження після завершення, запустіть команду один раз і покладайтеся на
push-based шлях пробудження, коли вона виведе результат або завершиться з помилкою
- використовуйте `process` для журналів, стану, введення або втручання, коли потрібно
перевірити команду, що виконується
- якщо завдання більше, надавайте перевагу `sessions_spawn`; завершення субагента працює через
push-based механізм і автоматично оголошується назад запитувачу
- не опитуйте `subagents list` / `sessions_list` у циклі лише для очікування
завершення
Коли ввімкнено експериментальний інструмент `update_plan`, Tooling також повідомляє
моделі використовувати його лише для нетривіальної багатокрокової роботи, підтримувати рівно один
крок `in_progress` і не повторювати весь план після кожного оновлення.
Коли ввімкнено експериментальний інструмент `update_plan`, розділ «Інструментарій» також повідомляє
моделі використовувати його лише для нетривіальних багатокрокових завдань, підтримувати рівно один крок
`in_progress` і не повторювати весь план після кожного оновлення.
Запобіжники безпеки в системному запиті мають рекомендаційний характер. Вони спрямовують поведінку моделі, але не забезпечують примусове виконання політики. Для жорсткого контролю використовуйте політики tools, схвалення exec, sandboxing і allowlist каналів; оператори можуть вимкнути це за задумом.
Запобіжники безпеки в системному prompt мають рекомендаційний характер. Вони спрямовують поведінку моделі, але не забезпечують виконання політики. Для жорсткого застосування використовуйте політику інструментів, схвалення exec, пісочницю та списки дозволів каналів; оператори навмисно можуть вимкнути це.
На каналах із рідними картками/кнопками схвалення запит runtime тепер інструктує
агента насамперед покладатися на цей рідний UI схвалення. Він має додавати ручну
команду `/approve` лише тоді, коли результат tool повідомляє, що схвалення в чаті недоступні або
ручне схвалення є єдиним шляхом.
У каналах із нативними картками/кнопками схвалення prompt середовища виконання тепер повідомляє
агенту спочатку покладатися на цей нативний UI схвалення. Він має включати ручну
команду `/approve` лише тоді, коли результат інструмента каже, що схвалення в чаті недоступні або
єдиний шлях — ручне схвалення.
## Режими запиту
## Режими prompt
OpenClaw може рендерити менші системні запити для субагентів. Runtime встановлює
OpenClaw може рендерити менші системні prompt для субагентів. Середовище виконання встановлює
`promptMode` для кожного запуску (це не користувацьке налаштування):
- `full` (за замовчуванням): включає всі наведені вище розділи.
- `minimal`: використовується для субагентів; пропускає **Skills**, **Memory Recall**, **Самооновлення OpenClaw**, **Model Aliases**, **User Identity**, **Reply Tags**,
**Messaging**, **Silent Replies** і **Heartbeats**. Tooling, **Safety**,
Workspace, Sandbox, Current Date & Time (коли відомо), Runtime та інʼєктований
- `full` (за замовчуванням): включає всі розділи вище.
- `minimal`: використовується для субагентів; опускає **Skills**, **Виклик пам’яті**, **Самооновлення OpenClaw**, **Псевдоніми моделей**, **Ідентичність користувача**, **Теги відповіді**,
**Повідомлення**, **Тихі відповіді** та **Heartbeats**. Інструментарій, **Безпека**,
Робочий простір, Пісочниця, Поточна дата й час (коли відомо), Середовище виконання та впроваджений
контекст залишаються доступними.
- `none`: повертає лише базовий рядок ідентичності.
Коли `promptMode=minimal`, додаткові інʼєктовані запити позначаються як **Subagent
Context** замість **Group Chat Context**.
Коли `promptMode=minimal`, додаткові впроваджені prompt позначаються як **Контекст субагента** замість **Контекст групового чату**.
## Інʼєкція bootstrap робочого простору
## Впровадження bootstrap робочого простору
Bootstrap-файли обрізаються та додаються в розділ **Project Context**, щоб модель бачила контекст ідентичності та профілю без потреби в явному читанні:
Bootstrap-файли обрізаються й додаються в розділ **Контекст проєкту**, щоб модель бачила контекст ідентичності та профілю без потреби в явному читанні:
- `AGENTS.md`
- `SOUL.md`
@ -105,62 +104,65 @@ Bootstrap-файли обрізаються та додаються в розд
- `USER.md`
- `HEARTBEAT.md`
- `BOOTSTRAP.md` (лише в абсолютно нових робочих просторах)
- `MEMORY.md`, якщо він є, інакше `memory.md` як резервний варіант у нижньому регістрі
- `MEMORY.md`, якщо присутній, інакше `memory.md` як резервний варіант у нижньому регістрі
Усі ці файли **інʼєктуються у вікно контексту** на кожному ході, а отже
витрачають токени. Тримайте їх стислими — особливо `MEMORY.md`, який може
зростати з часом і призводити до неочікувано великого використання контексту та частішого
ущільнення.
Усі ці файли **впроваджуються у вікно контексту** на кожному ході, якщо не застосовується
специфічне для файлу обмеження. `HEARTBEAT.md` пропускається в звичайних запусках, коли
heartbeats вимкнено для агента за замовчуванням або
`agents.defaults.heartbeat.includeSystemPromptSection` має значення false. Тримайте впроваджені
файли стислими — особливо `MEMORY.md`, який з часом може зростати та призводити до
неочікувано високого використання контексту й частішого ущільнення.
> **Примітка:** щоденні файли `memory/*.md` **не** інʼєктуються автоматично. До
> них звертаються на вимогу через tools `memory_search` і `memory_get`, тож вони
> не впливають на вікно контексту, якщо модель явно їх не читає.
> **Примітка:** щоденні файли `memory/*.md` **не** впроваджуються автоматично. До
> них звертаються на вимогу через інструменти `memory_search` і `memory_get`, тому вони
> не враховуються у вікні контексту, якщо модель явно їх не читає.
Великі файли обрізаються з маркером. Максимальний розмір одного файла контролюється
через `agents.defaults.bootstrapMaxChars` (за замовчуванням: 20000). Загальний обсяг інʼєктованого bootstrap-вмісту
між файлами обмежується `agents.defaults.bootstrapTotalMaxChars`
(за замовчуванням: 150000). Для відсутніх файлів інʼєктується короткий маркер відсутності. Коли відбувається обрізання,
OpenClaw може додавати блок попередження в Project Context; це контролюється через
Великі файли обрізаються з маркером. Максимальний розмір для кожного файлу контролюється через
`agents.defaults.bootstrapMaxChars` (за замовчуванням: 20000). Загальний обсяг впровадженого bootstrap-вмісту
в усіх файлах обмежується `agents.defaults.bootstrapTotalMaxChars`
(за замовчуванням: 150000). Відсутні файли впроваджують короткий маркер відсутнього файлу. Коли відбувається обрізання,
OpenClaw може впровадити блок попередження в Контекст проєкту; це контролюється через
`agents.defaults.bootstrapPromptTruncationWarning` (`off`, `once`, `always`;
за замовчуванням: `once`).
Сесії субагентів інʼєктують лише `AGENTS.md` і `TOOLS.md` (інші bootstrap-файли
відфільтровуються, щоб контекст субагента залишався малим).
Сесії субагентів впроваджують лише `AGENTS.md` і `TOOLS.md` (інші bootstrap-файли
відфільтровуються, щоб зберегти контекст субагента невеликим).
Внутрішні hooks можуть перехоплювати цей крок через `agent:bootstrap`, щоб змінити або замінити
інʼєктовані bootstrap-файли (наприклад, підмінити `SOUL.md` на альтернативну персону).
Внутрішні хуки можуть перехоплювати цей крок через `agent:bootstrap`, щоб змінювати або замінювати
впроваджені bootstrap-файли (наприклад, замінювати `SOUL.md` на альтернативну персону).
Якщо ви хочете, щоб агент звучав менш узагальнено, почніть із
[Посібника з індивідуальності SOUL.md](/concepts/soul).
[SOUL.md Personality Guide](/uk/concepts/soul).
Щоб перевірити, який внесок дає кожен інʼєктований файл (сирий проти інʼєктованого, обрізання, а також накладні витрати схеми tool), використовуйте `/context list` або `/context detail`. Див. [Context](/concepts/context).
Щоб перевірити, який внесок робить кожен впроваджений файл (сирий чи впроваджений, обрізання, а також накладні витрати на схему інструментів), використовуйте `/context list` або `/context detail`. Див. [Контекст](/uk/concepts/context).
## Обробка часу
Системний запит включає окремий розділ **Current Date & Time**, коли
відомий часовий пояс користувача. Щоб зберігати prompt cache стабільним, тепер він містить лише
Системний prompt включає окремий розділ **Поточна дата й час**, коли відомий
часовий пояс користувача. Щоб зберегти стабільність кешу prompt, тепер він містить лише
**часовий пояс** (без динамічного годинника чи формату часу).
Використовуйте `session_status`, коли агенту потрібен поточний час; картка стану
містить рядок з часовою позначкою. Той самий tool також може за бажанням встановлювати перевизначення моделі для сесії
(`model=default` очищає його).
містить рядок із часовою позначкою. Той самий інструмент також може за потреби встановити перевизначення моделі
для окремої сесії (`model=default` очищає його).
Налаштовується через:
- `agents.defaults.userTimezone`
- `agents.defaults.timeFormat` (`auto` | `12` | `24`)
Див. [Date & Time](/date-time) для повного опису поведінки.
Див. [Дата й час](/uk/date-time) для повного опису поведінки.
## Skills
Коли існують допустимі навички, OpenClaw інʼєктує компактний **список доступних навичок**
(`formatSkillsForPrompt`), який включає **шлях до файла** для кожної навички. Запит
інструктує модель використовувати `read`, щоб завантажити SKILL.md за вказаним
розташуванням (workspace, managed або bundled). Якщо допустимих навичок немає, розділ
Skills пропускається.
Коли існують відповідні Skills, OpenClaw впроваджує компактний **список доступних skills**
(`formatSkillsForPrompt`), який містить **шлях до файлу** для кожної навички. Prompt
вказує моделі використовувати `read` для завантаження SKILL.md у вказаному
розташуванні (робочий простір, кероване або вбудоване). Якщо жодна навичка не підходить,
розділ Skills пропускається.
Допустимість включає метадані навичок, перевірки runtime environment/config і ефективний allowlist навичок агента, коли налаштовано `agents.defaults.skills` або
Відповідність включає обмеження метаданих навички, перевірки середовища виконання/конфігурації
та ефективний список дозволів навичок агента, коли налаштовано `agents.defaults.skills` або
`agents.list[].skills`.
```
@ -173,12 +175,13 @@ Skills пропускається.
</available_skills>
```
Це дозволяє зберігати базовий запит невеликим, водночас забезпечуючи цільове використання навичок.
Це зберігає базовий prompt компактним, водночас забезпечуючи цільове використання навичок.
## Documentation
## Документація
Коли доступно, системний запит включає розділ **Documentation**, який указує на
локальний каталог документації OpenClaw (або `docs/` у робочому просторі репозиторію, або документацію з вбудованого npm-пакунка) і також згадує публічне дзеркало, вихідний репозиторій, спільноту Discord і
ClawHub ([https://clawhub.ai](https://clawhub.ai)) для пошуку Skills. Запит інструктує модель спочатку звертатися до локальної документації
щодо поведінки, команд, конфігурації чи архітектури OpenClaw, а також самостійно виконувати
`openclaw status`, коли це можливо (запитуючи користувача лише тоді, коли доступу немає).
Коли доступно, системний prompt включає розділ **Документація**, який вказує на
локальний каталог документації OpenClaw (або `docs/` у робочому просторі репозиторію, або документацію з вбудованого npm
package), а також згадує публічне дзеркало, вихідний репозиторій, спільноту Discord і
ClawHub ([https://clawhub.ai](https://clawhub.ai)) для пошуку skills. Prompt наказує моделі спочатку звертатися до локальної документації
щодо поведінки OpenClaw, команд, конфігурації чи архітектури, а також самостійно запускати
`openclaw status`, коли це можливо (і звертатися до користувача лише тоді, коли доступу немає).

View File

@ -2,36 +2,36 @@
read_when:
- Налаштування частоти heartbeat або повідомлень
- Вибір між heartbeat і cron для запланованих завдань
summary: Heartbeat опитує повідомлення та правила сповіщень
summary: Повідомлення опитування heartbeat і правила сповіщень
title: Heartbeat
x-i18n:
generated_at: "2026-04-05T18:04:52Z"
generated_at: "2026-04-07T23:54:23Z"
model: gpt-5.4
provider: openai
source_hash: f417b0d4453bed9022144d364521a59dec919d44cca8f00f0def005cd38b146f
source_hash: a8021d747637060eacb91ec5f75904368a08790c19f4fca32acda8c8c0a25e41
source_path: gateway/heartbeat.md
workflow: 15
---
# Heartbeat (Gateway)
> **Heartbeat чи Cron?** Див. [Automation & Tasks](/automation), щоб зрозуміти, коли що використовувати.
> **Heartbeat чи Cron?** Див. [Автоматизація й завдання](/uk/automation), щоб зрозуміти, коли що використовувати.
Heartbeat запускає **періодичні цикли агента** в основній сесії, щоб модель могла
показувати все, що потребує уваги, не засипаючи вас повідомленнями.
Heartbeat запускає **періодичні ходи агента** в основній сесії, щоб модель могла
виявляти все, що потребує уваги, не засипаючи вас повідомленнями.
Heartbeat — це запланований цикл основної сесії — він **не** створює записи [background task](/automation/tasks).
Записи завдань призначені для відокремленої роботи (запуски ACP, subagent, ізольовані cron-завдання).
Heartbeat — це запланований хід основної сесії — він **не** створює записів [фонових завдань](/uk/automation/tasks).
Записи завдань призначені для відокремленої роботи (запуски ACP, субагенти, ізольовані cron-завдання).
Усунення несправностей: [Scheduled Tasks](/automation/cron-jobs#troubleshooting)
Усунення проблем: [Заплановані завдання](/uk/automation/cron-jobs#troubleshooting)
## Швидкий старт (для початківців)
1. Залиште heartbeat увімкненим (за замовчуванням це `30m`, або `1h` для Anthropic OAuth/token auth, включно з повторним використанням Claude CLI) або задайте власну частоту.
1. Залиште heartbeat увімкненим (типово це `30m`, або `1h` для автентифікації Anthropic OAuth/token, включно з повторним використанням Claude CLI) або задайте власну частоту.
2. Створіть невеликий контрольний список `HEARTBEAT.md` або блок `tasks:` у робочому просторі агента (необов’язково, але рекомендовано).
3. Вирішіть, куди мають надходити повідомлення heartbeat (`target: "none"` — значення за замовчуванням; установіть `target: "last"`, щоб спрямовувати їх до останнього контакту).
4. Необов’язково: увімкніть доставку reasoning heartbeat для більшої прозорості.
5. Необов’язково: використовуйте полегшений bootstrap-контекст, якщо для запусків heartbeat потрібен лише `HEARTBEAT.md`.
3. Вирішіть, куди мають надходити повідомлення heartbeat (`target: "none"` — типовий варіант; задайте `target: "last"`, щоб спрямовувати їх до останнього контакту).
4. Необов’язково: увімкніть доставку міркувань heartbeat для прозорості.
5. Необов’язково: використовуйте полегшений bootstrap-контекст, якщо запускам heartbeat потрібен лише `HEARTBEAT.md`.
6. Необов’язково: увімкніть ізольовані сесії, щоб не надсилати повну історію розмови під час кожного heartbeat.
7. Необов’язково: обмежте heartbeat активними годинами (за місцевим часом).
@ -44,7 +44,7 @@ Heartbeat — це запланований цикл основної сесії
heartbeat: {
every: "30m",
target: "last", // явна доставка до останнього контакту (типово "none")
directPolicy: "allow", // типово: дозволяти цілі direct/DM; установіть "block", щоб приглушити
directPolicy: "allow", // типово: дозволяти прямі/DM-одержувачі; задайте "block", щоб приглушити
lightContext: true, // необов’язково: інжектувати лише HEARTBEAT.md з bootstrap-файлів
isolatedSession: true, // необов’язково: нова сесія для кожного запуску (без історії розмови)
// activeHours: { start: "08:00", end: "24:00" },
@ -55,44 +55,47 @@ Heartbeat — це запланований цикл основної сесії
}
```
## Значення за замовчуванням
## Типові значення
- Інтервал: `30m` (або `1h`, коли виявленим режимом auth є Anthropic OAuth/token, включно з повторним використанням Claude CLI). Установіть `agents.defaults.heartbeat.every` або для окремого агента `agents.list[].heartbeat.every`; використовуйте `0m`, щоб вимкнути.
- Тіло prompt (налаштовується через `agents.defaults.heartbeat.prompt`):
- Інтервал: `30m` (або `1h`, коли виявленим режимом автентифікації є Anthropic OAuth/token, включно з повторним використанням Claude CLI). Задайте `agents.defaults.heartbeat.every` або для конкретного агента `agents.list[].heartbeat.every`; використайте `0m`, щоб вимкнути.
- Тіло promptа (налаштовується через `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.`
- Prompt heartbeat надсилається **дослівно** як повідомлення користувача. System
prompt містить розділ “Heartbeat”, а запуск внутрішньо позначається відповідним прапорцем.
- Prompt heartbeat надсилається **дослівно** як повідомлення користувача. Системний
prompt містить розділ “Heartbeat” лише тоді, коли heartbeat увімкнено для
типового агента, а запуск внутрішньо позначено відповідним прапорцем.
- Коли heartbeat вимкнено через `0m`, звичайні запуски також не включають `HEARTBEAT.md`
до bootstrap-контексту, щоб модель не бачила інструкції лише для heartbeat.
- Активні години (`heartbeat.activeHours`) перевіряються в налаштованому часовому поясі.
Поза межами цього вікна heartbeat пропускаються до наступного тіку в межах вікна.
Поза вікном heartbeat пропускаються до наступного тіку всередині вікна.
## Для чого потрібен prompt heartbeat
Prompt за замовчуванням навмисно зроблено широким:
Типовий prompt навмисно сформульований широко:
- **Фонові завдання**: “Consider outstanding tasks” підштовхує агента переглядати
наступні дії (вхідні, календар, нагадування, завдання в черзі) і показувати все термінове.
- **Людська перевірка**: “Checkup sometimes on your human during day time” підштовхує до
періодичного легкого повідомлення на кшталт “чи щось потрібно?”, але уникає нічного спаму
завдяки використанню вашого налаштованого місцевого часового поясу (див. [/concepts/timezone](/concepts/timezone)).
- **Фонові завдання**: “Consider outstanding tasks” спонукає агента переглянути
подальші дії (вхідні, календар, нагадування, чергу роботи) і виявити все термінове.
- **Перевірка стану людини**: “Checkup sometimes on your human during day time” спонукає
до зрідка легкого повідомлення “чи щось тобі потрібно?”, але без нічного спаму
завдяки використанню вашого налаштованого місцевого часового поясу (див. [/concepts/timezone](/uk/concepts/timezone)).
Heartbeat може реагувати на завершені [background tasks](/automation/tasks), але сам запуск heartbeat не створює запис завдання.
Heartbeat може реагувати на завершені [фонові завдання](/uk/automation/tasks), але сам запуск heartbeat не створює запису завдання.
Якщо ви хочете, щоб heartbeat робив щось дуже конкретне (наприклад, “перевірити статистику Gmail PubSub”
або “перевірити стан gateway”), установіть `agents.defaults.heartbeat.prompt` (або
`agents.list[].heartbeat.prompt`) у власне тіло prompt, яке надсилатиметься дослівно.
Якщо ви хочете, щоб heartbeat виконував щось дуже конкретне (наприклад, “перевір статистику Gmail PubSub”
або “перевір стан gateway”), задайте `agents.defaults.heartbeat.prompt` (або
`agents.list[].heartbeat.prompt`) як власне тіло promptа (надсилається дослівно).
## Контракт відповіді
- Якщо нічого не потребує уваги, дайте відповідь **`HEARTBEAT_OK`**.
- Якщо нічого не потребує уваги, відповідайте **`HEARTBEAT_OK`**.
- Під час запусків heartbeat OpenClaw трактує `HEARTBEAT_OK` як підтвердження, якщо він з’являється
**на початку або в кінці** відповіді. Токен видаляється, а відповідь
на **початку або в кінці** відповіді. Токен видаляється, а відповідь
відкидається, якщо решта вмісту має **`ackMaxChars`** (типово: 300).
- Якщо `HEARTBEAT_OK` з’являється **в середині** відповіді, він не обробляється
особливим чином.
- Якщо `HEARTBEAT_OK` з’являється **посередині** відповіді, він не обробляється
спеціальним чином.
- Для сповіщень **не** включайте `HEARTBEAT_OK`; повертайте лише текст сповіщення.
Поза heartbeat випадковий `HEARTBEAT_OK` на початку/в кінці повідомлення видаляється
та записується в журнал; повідомлення, яке складається лише з `HEARTBEAT_OK`, відкидається.
і логуються; повідомлення, яке складається лише з `HEARTBEAT_OK`, відкидається.
## Конфігурація
@ -103,14 +106,14 @@ Heartbeat може реагувати на завершені [background tasks]
heartbeat: {
every: "30m", // типово: 30m (0m вимикає)
model: "anthropic/claude-opus-4-6",
includeReasoning: false, // типово: false (доставляти окреме повідомлення Reasoning:, коли доступно)
lightContext: false, // типово: false; true залишає лише HEARTBEAT.md із bootstrap-файлів робочого простору
includeReasoning: false, // типово: false (доставляти окреме повідомлення Reasoning: коли доступне)
lightContext: false, // типово: false; true залишає лише HEARTBEAT.md з bootstrap-файлів робочого простору
isolatedSession: false, // типово: false; true запускає кожен heartbeat у новій сесії (без історії розмови)
target: "last", // типово: none | варіанти: last | none | <channel id> (core або plugin, наприклад "bluebubbles")
to: "+15551234567", // необов’язкове перевизначення для конкретного каналу
accountId: "ops-bot", // необов’язковий id каналу для multi-account
accountId: "ops-bot", // необов’язковий 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.",
ackMaxChars: 300, // макс. кількість символів після HEARTBEAT_OK
ackMaxChars: 300, // макс. кількість символів, дозволена після HEARTBEAT_OK
},
},
},
@ -120,18 +123,18 @@ Heartbeat може реагувати на завершені [background tasks]
### Область дії та пріоритет
- `agents.defaults.heartbeat` задає глобальну поведінку heartbeat.
- `agents.list[].heartbeat` накладається поверх; якщо будь-який агент має блок `heartbeat`, heartbeat запускаються **лише для цих агентів**.
- `channels.defaults.heartbeat` задає типові налаштування видимості для всіх каналів.
- `channels.<channel>.heartbeat` перевизначає типові налаштування каналу.
- `channels.<channel>.accounts.<id>.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`
(тобто ви можете один раз задати спільні значення за замовчуванням і перевизначати їх для окремих агентів).
Якщо будь-який запис `agents.list[]` містить блок `heartbeat`, heartbeat запускаються **лише для цих агентів**.
Блок для окремого агента зливається поверх `agents.defaults.heartbeat`
(тож ви можете один раз задати спільні типові значення й перевизначити їх для окремих агентів).
Приклад: два агенти, heartbeat запускається лише для другого.
Приклад: два агенти, heartbeat запускається лише для другого агента.
```json5
{
@ -160,7 +163,7 @@ Heartbeat може реагувати на завершені [background tasks]
### Приклад активних годин
Обмежте heartbeat робочими годинами в певному часовому поясі:
Обмежте heartbeat робочими годинами в конкретному часовому поясі:
```json5
{
@ -180,21 +183,21 @@ Heartbeat може реагувати на завершені [background tasks]
}
```
Поза цим вікном (до 9 ранку або після 10 вечора за східним часом) heartbeat пропускаються. Наступний запланований тік у межах цього вікна відпрацює нормально.
Поза цим вікном (до 9:00 або після 22:00 за східним часом) heartbeat пропускаються. Наступний запланований тік усередині вікна відпрацює як зазвичай.
### Налаштування 24/7
Якщо ви хочете, щоб heartbeat працювали весь день, використовуйте один із цих варіантів:
Якщо ви хочете, щоб heartbeat працювали весь день, використайте один із цих шаблонів:
- Повністю опустіть `activeHours` (без обмеження часовим вікном; це поведінка за замовчуванням).
- Установіть повноденне вікно: `activeHours: { start: "00:00", end: "24:00" }`.
- Повністю пропустіть `activeHours` (без обмеження часовим вікном; це типова поведінка).
- Задайте повноденне вікно: `activeHours: { start: "00:00", end: "24:00" }`.
Не встановлюйте однаковий час для `start` і `end` (наприклад, `08:00` до `08:00`).
Це вважається вікном нульової ширини, тому heartbeat завжди пропускаються.
Не задавайте однаковий час для `start` і `end` (наприклад, від `08:00` до `08:00`).
Це трактується як вікно нульової ширини, тому heartbeat завжди пропускаються.
### Приклад із кількома обліковими записами
Використовуйте `accountId`, щоб націлитися на конкретний обліковий запис у multi-account каналах, таких як Telegram:
Використовуйте `accountId`, щоб націлитися на конкретний обліковий запис у каналах із кількома обліковими записами, як-от Telegram:
```json5
{
@ -205,7 +208,7 @@ Heartbeat може реагувати на завершені [background tasks]
heartbeat: {
every: "1h",
target: "telegram",
to: "12345678:topic:42", // необов’язково: спрямувати в конкретну тему/тред
to: "12345678:topic:42", // необов’язково: спрямувати до конкретної теми/гілки
accountId: "ops-bot",
},
},
@ -223,67 +226,67 @@ Heartbeat може реагувати на завершені [background tasks]
### Примітки щодо полів
- `every`: інтервал heartbeat (рядок тривалості; одиниця за замовчуванням = хвилини).
- `every`: інтервал heartbeat (рядок тривалості; одиниця типово = хвилини).
- `model`: необов’язкове перевизначення моделі для запусків heartbeat (`provider/model`).
- `includeReasoning`: якщо ввімкнено, також доставляє окреме повідомлення `Reasoning:`, коли воно доступне (така сама форма, як у `/reasoning on`).
- `lightContext`: якщо `true`, запуски heartbeat використовують полегшений bootstrap-контекст і залишають лише `HEARTBEAT.md` із bootstrap-файлів робочого простору.
- `isolatedSession`: якщо `true`, кожен heartbeat виконується в новій сесії без попередньої історії розмов. Використовує той самий шаблон ізоляції, що й cron `sessionTarget: "isolated"`. Різко зменшує витрати токенів на кожен heartbeat. Поєднуйте з `lightContext: true` для максимальної економії. Маршрутизація доставки все одно використовує контекст основної сесії.
- `includeReasoning`: якщо увімкнено, також доставляє окреме повідомлення `Reasoning:` коли воно доступне (той самий формат, що й для `/reasoning on`).
- `lightContext`: якщо true, запуски heartbeat використовують полегшений bootstrap-контекст і зберігають лише `HEARTBEAT.md` із bootstrap-файлів робочого простору.
- `isolatedSession`: якщо true, кожен heartbeat запускається в новій сесії без попередньої історії розмови. Використовує той самий шаблон ізоляції, що й cron `sessionTarget: "isolated"`. Радикально зменшує витрати токенів на кожен heartbeat. Поєднуйте з `lightContext: true` для максимальної економії. Маршрутизація доставки все одно використовує контекст основної сесії.
- `session`: необов’язковий ключ сесії для запусків heartbeat.
- `main` (типово): основна сесія агента.
- Явний ключ сесії (скопіюйте з `openclaw sessions --json` або з [sessions CLI](/cli/sessions)).
- Формати ключів сесій: див. [Sessions](/concepts/session) і [Groups](/channels/groups).
- Явний ключ сесії (скопіюйте з `openclaw sessions --json` або з [CLI сесій](/cli/sessions)).
- Формати ключів сесій: див. [Сесії](/uk/concepts/session) і [Групи](/uk/channels/groups).
- `target`:
- `last`: доставити в останній використаний зовнішній канал.
- `last`: доставляти до останнього використаного зовнішнього каналу.
- явний канал: будь-який налаштований канал або id plugin, наприклад `discord`, `matrix`, `telegram` або `whatsapp`.
- `none` (типово): виконати heartbeat, але **не доставляти** його назовні.
- `directPolicy`: керує поведінкою доставки в direct/DM:
- `allow` (типово): дозволяти доставку heartbeat у direct/DM.
- `block`: приглушити доставку в direct/DM (`reason=dm-blocked`).
- `to`: необов’язкове перевизначення отримувача (id, специфічний для каналу, наприклад E.164 для WhatsApp або id чату Telegram). Для тем/тредів Telegram використовуйте `<chatId>:topic:<messageThreadId>`.
- `accountId`: необов’язковий id облікового запису для multi-account каналів. Якщо `target: "last"`, id облікового запису застосовується до визначеного останнього каналу, якщо він підтримує облікові записи; інакше ігнорується. Якщо id облікового запису не відповідає налаштованому обліковому запису для визначеного каналу, доставка пропускається.
- `prompt`: перевизначає типове тіло prompt (не зливається).
- `none` (типово): запускати heartbeat, але **не доставляти** назовні.
- `directPolicy`: керує поведінкою доставки напряму/в DM:
- `allow` (типово): дозволяти доставку heartbeat напряму/у DM.
- `block`: приглушити доставку напряму/у DM (`reason=dm-blocked`).
- `to`: необов’язкове перевизначення одержувача (id, специфічний для каналу, наприклад E.164 для WhatsApp або chat id Telegram). Для тем/гілок Telegram використовуйте `<chatId>:topic:<messageThreadId>`.
- `accountId`: необов’язковий id облікового запису для каналів із кількома обліковими записами. Коли `target: "last"`, id облікового запису застосовується до визначеного останнього каналу, якщо він підтримує облікові записи; інакше ігнорується. Якщо id облікового запису не відповідає налаштованому обліковому запису для визначеного каналу, доставку буде пропущено.
- `prompt`: перевизначає типове тіло promptа (без злиття).
- `ackMaxChars`: макс. кількість символів, дозволена після `HEARTBEAT_OK` перед доставкою.
- `suppressToolErrorWarnings`: якщо `true`, приглушує payload попереджень про помилки інструментів під час запусків heartbeat.
- `activeHours`: обмежує запуски heartbeat часовим вікном. Об’єкт із `start` (HH:MM, включно; використовуйте `00:00` для початку дня), `end` (HH:MM, невключно; для кінця дня дозволено `24:00`) і необов’язковим `timezone`.
- Пропущено або `"user"`: використовує ваш `agents.defaults.userTimezone`, якщо задано, інакше повертається до системного часового поясу хоста.
- `"local"`: завжди використовує системний часовий пояс хоста.
- Будь-який ідентифікатор IANA (наприклад, `America/New_York`): використовується напряму; якщо він недійсний, відбувається fallback до поведінки `"user"`, описаної вище.
- `start` і `end` не повинні бути однаковими для активного вікна; однакові значення вважаються нульовою шириною (завжди поза вікном).
- Поза активним вікном heartbeat пропускаються до наступного тіку в межах вікна.
- `suppressToolErrorWarnings`: якщо true, приглушує payload попереджень про помилки інструментів під час запусків heartbeat.
- `activeHours`: обмежує запуски 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`, щоб перевизначити це на
- Heartbeat типово запускаються в основній сесії агента (`agent:<id>:<mainKey>`),
або в `global`, коли `session.scope = "global"`. Задайте `session`, щоб перевизначити це на
конкретну сесію каналу (Discord/WhatsApp тощо).
- `session` впливає лише на контекст запуску; доставкою керують `target` і `to`.
- Щоб доставляти в конкретний канал/отримувача, задайте `target` + `to`. З
- Щоб доставляти до конкретного каналу/одержувача, задайте `target` + `to`. З
`target: "last"` доставка використовує останній зовнішній канал для цієї сесії.
- Доставки heartbeat за замовчуванням дозволяють цілі direct/DM. Установіть `directPolicy: "block"`, щоб приглушити надсилання на direct-цілі, але все одно виконати цикл heartbeat.
- Доставки heartbeat типово дозволяють напряму/у DM. Задайте `directPolicy: "block"`, щоб приглушити надсилання на прямі адресати, але все одно виконувати хід heartbeat.
- Якщо основна черга зайнята, heartbeat пропускається й повторюється пізніше.
- Якщо `target` не розв’язується в жодну зовнішню ціль, запуск усе одно відбувається, але
- Якщо `target` не визначає жодного зовнішнього призначення, запуск усе одно відбувається, але
вихідне повідомлення не надсилається.
- Якщо `showOk`, `showAlerts` і `useIndicator` усі вимкнені, запуск пропускається одразу з `reason=alerts-disabled`.
- Якщо вимкнено лише доставку сповіщень, OpenClaw усе одно може виконати heartbeat, оновити часові позначки належних завдань, відновити часову позначку idle сесії та приглушити зовнішній payload сповіщення.
- Відповіді лише heartbeat **не** підтримують активність сесії; останнє значення `updatedAt`
відновлюється, тому завершення строку бездіяльності працює нормально.
- Відокремлені [background tasks](/automation/tasks) можуть ставити системну подію в чергу та пробуджувати heartbeat, коли основній сесії потрібно швидко помітити щось важливе. Таке пробудження не робить запуск heartbeat фоновим завданням.
- Якщо `showOk`, `showAlerts` і `useIndicator` усі вимкнені, запуск пропускається відразу як `reason=alerts-disabled`.
- Якщо вимкнено лише доставку сповіщень, OpenClaw все одно може виконати heartbeat, оновити часові мітки завдань, відновити часову мітку простою сесії та приглушити зовнішній payload сповіщення.
- Відповіді лише для heartbeat **не** підтримують сесію активною; останнє значення `updatedAt`
відновлюється, щоб завершення через простій працювало як зазвичай.
- Відокремлені [фонові завдання](/uk/automation/tasks) можуть ставити в чергу системну подію й пробуджувати heartbeat, коли основна сесія має швидко щось помітити. Таке пробудження не перетворює heartbeat на фонове завдання.
## Керування видимістю
За замовчуванням підтвердження `HEARTBEAT_OK` приглушуються, а вміст сповіщень
доставляється. Ви можете налаштувати це для кожного каналу або облікового запису:
Типово підтвердження `HEARTBEAT_OK` приглушуються, а вміст сповіщень
доставляється. Ви можете налаштувати це для каналу або облікового запису:
```yaml
channels:
defaults:
heartbeat:
showOk: false # Приховати HEARTBEAT_OK (типово)
showAlerts: true # Показувати повідомлення-сповіщення (типово)
useIndicator: true # Видавати події індикатора (типово)
showAlerts: true # Показувати повідомлення сповіщень (типово)
useIndicator: true # Генерувати події індикатора (типово)
telegram:
heartbeat:
showOk: true # Показувати OK-підтвердження в Telegram
showOk: true # Показувати підтвердження OK у Telegram
whatsapp:
accounts:
work:
@ -291,17 +294,17 @@ channels:
showAlerts: false # Приглушити доставку сповіщень для цього облікового запису
```
Пріоритет: для облікового запису → для каналу → типові налаштування каналу → вбудовані типові значення.
Пріоритет: для облікового запису → для каналу → типові значення каналу → вбудовані типові значення.
### Що робить кожен прапорець
- `showOk`: надсилає підтвердження `HEARTBEAT_OK`, коли модель повертає відповідь лише з OK.
- `showAlerts`: надсилає вміст сповіщення, коли модель повертає відповідь не-OK.
- `useIndicator`: видає події індикатора для поверхонь статусу UI.
- `useIndicator`: генерує події індикатора для UI-поверхонь стану.
Якщо **всі три** мають значення false, OpenClaw повністю пропускає запуск heartbeat (без виклику моделі).
Якщо **усі три** значення false, OpenClaw повністю пропускає запуск heartbeat (без виклику моделі).
### Приклади для каналу та облікового запису
### Приклади для каналу й облікового запису
```yaml
channels:
@ -324,25 +327,30 @@ channels:
### Поширені шаблони
| Мета | Конфігурація |
| ---------------------------------------- | ------------------------------------------------------------------------------------------ |
| Поведінка за замовчуванням (тихі 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 }` |
| Ціль | Конфігурація |
| ---------------------------------------- | ---------------------------------------------------------------------------------------- |
| Типова поведінка (тихі 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.md`, типовий prompt вказує
агенту його прочитати. Сприймайте його як свій “контрольний список heartbeat”: невеликий, стабільний і
безпечний для включення кожні 30 хвилин.
Якщо `HEARTBEAT.md` існує, але фактично порожній (лише порожні рядки та markdown-заголовки
на кшталт `# Heading`), OpenClaw пропускає запуск heartbeat, щоб заощадити виклики API.
Такий пропуск позначається як `reason=empty-heartbeat-file`.
Якщо файлу немає, heartbeat усе одно виконується, і модель сама вирішує, що робити.
Під час звичайних запусків `HEARTBEAT.md` інжектується лише тоді, коли
вказівки heartbeat увімкнено для типового агента. Вимкнення частоти heartbeat через `0m` або
задання `includeSystemPromptSection: false` прибирає його зі звичайного bootstrap-
контексту.
Тримайте його маленьким (короткий контрольний список або нагадування), щоб уникнути роздування prompt.
Якщо `HEARTBEAT.md` існує, але фактично порожній (лише порожні рядки та markdown-
заголовки на кшталт `# Heading`), OpenClaw пропускає запуск heartbeat, щоб заощадити виклики API.
Цей пропуск позначається як `reason=empty-heartbeat-file`.
Якщо файла немає, heartbeat усе одно запускається, і модель сама вирішує, що робити.
Тримайте його коротким (невеликий контрольний список або нагадування), щоб уникати роздування promptа.
Приклад `HEARTBEAT.md`:
@ -379,71 +387,72 @@ tasks:
Поведінка:
- OpenClaw розбирає блок `tasks:` і перевіряє кожне завдання щодо його власного `interval`.
- До prompt heartbeat для цього тіку включаються лише **належні** завдання.
- Якщо немає жодного належного завдання, heartbeat повністю пропускається (`reason=no-tasks-due`), щоб уникнути марного виклику моделі.
- Вміст у `HEARTBEAT.md`, який не є завданнями, зберігається й додається як додатковий контекст після списку належних завдань.
- Часові позначки останнього запуску завдань зберігаються в стані сесії (`heartbeatTaskState`), тому інтервали переживають звичайні перезапуски.
- Часові позначки завдань просуваються вперед лише після того, як запуск heartbeat проходить свій звичайний шлях відповіді. Пропущені запуски `empty-heartbeat-file` / `no-tasks-due` не позначають завдання як завершені.
- OpenClaw розбирає блок `tasks:` і перевіряє кожне завдання за його власним `interval`.
- До promptа heartbeat для цього тіку включаються лише **прострочені** завдання.
- Якщо жодне завдання не прострочене, heartbeat повністю пропускається (`reason=no-tasks-due`), щоб уникнути марного виклику моделі.
- Вміст `HEARTBEAT.md`, що не належить до завдань, зберігається й додається як додатковий контекст після списку прострочених завдань.
- Часові мітки останнього запуску завдань зберігаються в стані сесії (`heartbeatTaskState`), тож інтервали переживають звичайні перезапуски.
- Часові мітки завдань оновлюються лише після того, як запуск heartbeat завершує свій звичайний шлях відповіді. Пропущені запуски `empty-heartbeat-file` / `no-tasks-due` не позначають завдання як виконані.
Режим завдань корисний, коли ви хочете, щоб один файл heartbeat містив кілька періодичних перевірок, але без витрат на всі з них у кожному тіку.
Режим завдань корисний, коли ви хочете, щоб один файл heartbeat містив кілька періодичних перевірок, не оплачуючи всі з них на кожному тікові.
### Чи може агент оновлювати HEARTBEAT.md?
Так — якщо ви його про це попросите.
`HEARTBEAT.md` — це просто звичайний файл у робочому просторі агента, тож ви можете сказати
`HEARTBEAT.md` — це звичайний файл у робочому просторі агента, тож ви можете сказати
агенту (у звичайному чаті) щось на кшталт:
- “Онови `HEARTBEAT.md`, додавши щоденну перевірку календаря.”
- “Онови `HEARTBEAT.md`, щоб додати щоденну перевірку календаря.”
- “Перепиши `HEARTBEAT.md`, щоб він був коротшим і зосередженим на подальших діях щодо вхідних.”
Якщо ви хочете, щоб це відбувалося проактивно, можете також включити явний рядок у
свій prompt heartbeat на кшталт: “If the checklist becomes stale, update HEARTBEAT.md
Якщо ви хочете, щоб це відбувалося проактивно, ви також можете додати явний рядок до
свого promptа heartbeat, наприклад: “If the checklist becomes stale, update HEARTBEAT.md
with a better one.”
Примітка щодо безпеки: не розміщуйте секрети (API ключі, номери телефонів, приватні токени) у
`HEARTBEAT.md` — він стає частиною контексту prompt.
Примітка щодо безпеки: не додавайте секрети (ключі API, номери телефонів, приватні токени) до
`HEARTBEAT.md` — він стає частиною контексту promptа.
## Ручне пробудження (на вимогу)
## Ручне пробудження (за запитом)
Ви можете поставити системну подію в чергу й одразу запустити heartbeat за допомогою:
Ви можете поставити системну подію в чергу й негайно запустити heartbeat за допомогою:
```bash
openclaw system event --text "Check for urgent follow-ups" --mode now
```
Якщо `heartbeat` налаштовано для кількох агентів, ручне пробудження негайно запустить heartbeat кожного з них.
Якщо `heartbeat` налаштовано для кількох агентів, ручне пробудження негайно запустить heartbeat кожного з цих
агентів.
Використовуйте `--mode next-heartbeat`, щоб дочекатися наступного запланованого тіку.
## Доставка reasoning (необов’язково)
## Доставка міркувань (необов’язково)
За замовчуванням heartbeat доставляють лише фінальний payload “відповіді”.
Типово heartbeat доставляють лише фінальний payload “answer”.
Якщо ви хочете більшої прозорості, увімкніть:
Якщо ви хочете прозорості, увімкніть:
- `agents.defaults.heartbeat.includeReasoning: true`
Якщо ввімкнено, heartbeat також доставлятимуть окреме повідомлення з префіксом
`Reasoning:`ака сама форма, як у `/reasoning on`). Це може бути корисно, коли агент
керує кількома сесіями/codex і ви хочете бачити, чому він вирішив вам написати
— але це також може розкрити більше внутрішніх деталей, ніж вам хотілося б. У групових чатах краще залишати це
вимкненим.
Коли це ввімкнено, heartbeat також доставлятимуть окреме повідомлення з префіксом
`Reasoning:`ой самий формат, що й для `/reasoning on`). Це може бути корисно, коли агент
керує кількома сесіями/codex і ви хочете бачити, чому він вирішив написати
вам — але це також може розкривати більше внутрішніх деталей, ніж вам потрібно. У групових чатах краще залишати цю опцію
вимкненою.
## Усвідомлення вартості
## Обізнаність щодо вартості
Heartbeat запускають повноцінні цикли агента. Коротші інтервали спалюють більше токенів. Щоб зменшити витрати:
Heartbeat виконують повні ходи агента. Коротші інтервали витрачають більше токенів. Щоб зменшити вартість:
- Використовуйте `isolatedSession: true`, щоб не надсилати повну історію розмови (~100K токенів зменшується до ~2-5K на запуск).
- Використовуйте `lightContext: true`, щоб обмежити bootstrap-файли лише `HEARTBEAT.md`.
- Задайте дешевшу `model` (наприклад, `ollama/llama3.2:1b`).
- Виберіть дешевшу `model` (наприклад, `ollama/llama3.2:1b`).
- Тримайте `HEARTBEAT.md` невеликим.
- Використовуйте `target: "none"`, якщо вам потрібні лише внутрішні оновлення стану.
## Пов’язане
- [Automation & Tasks](/automation) — огляд усіх механізмів автоматизації
- [Background Tasks](/automation/tasks) — як відстежується відокремлена робота
- [Timezone](/concepts/timezone) — як часовий пояс впливає на планування heartbeat
- [Troubleshooting](/automation/cron-jobs#troubleshooting) — налагодження проблем автоматизації
- [Автоматизація й завдання](/uk/automation) — усі механізми автоматизації з першого погляду
- [Фонові завдання](/uk/automation/tasks) — як відстежується відокремлена робота
- [Часовий пояс](/uk/concepts/timezone) — як часовий пояс впливає на планування heartbeat
- [Усунення проблем](/uk/automation/cron-jobs#troubleshooting) — налагодження проблем автоматизації