chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-05-06 13:44:15 +00:00
parent 697545d787
commit d5a970b4d1

View File

@ -4,23 +4,23 @@ read_when:
- Підключення зовнішніх тригерів (Webhook, Gmail) до OpenClaw
- Вибір між Heartbeat і Cron для запланованих завдань
sidebarTitle: Scheduled tasks
summary: Заплановані завдання, Webhook і тригери Gmail PubSub для планувальника Gateway
summary: Заплановані завдання, Webhook-и та тригери Gmail PubSub для планувальника Gateway
title: Заплановані завдання
x-i18n:
generated_at: "2026-05-02T07:07:43Z"
generated_at: "2026-05-06T13:42:47Z"
model: gpt-5.5
provider: openai
source_hash: d7c70042c28b08140d664678ef42146942158512dce1f41c988be0f2dd9bedf5
source_hash: 19c3505408ab7602775dc1168c2c7a626986fa2a15ef02a44dc864d5ec538bfe
source_path: automation/cron-jobs.md
workflow: 16
---
Cron — це вбудований планувальник Gateway. Він зберігає завдання, пробуджує агента в потрібний час і може доставляти результат назад у канал чату або кінцеву точку webhook.
Cron — це вбудований планувальник Gateway. Він зберігає завдання, пробуджує агента в потрібний час і може доставляти результат назад у канал чату або Webhook endpoint.
## Швидкий старт
<Steps>
<Step title="Add a one-shot reminder">
<Step title="Додайте одноразове нагадування">
```bash
openclaw cron add \
--name "Reminder" \
@ -31,13 +31,13 @@ Cron — це вбудований планувальник Gateway. Він зб
--delete-after-run
```
</Step>
<Step title="Check your jobs">
<Step title="Перевірте свої завдання">
```bash
openclaw cron list
openclaw cron show <job-id>
```
</Step>
<Step title="See run history">
<Step title="Перегляньте історію запусків">
```bash
openclaw cron runs --id <job-id>
```
@ -46,41 +46,42 @@ Cron — це вбудований планувальник Gateway. Він зб
## Як працює cron
- Cron запускається **всередині процесу Gateway** (не всередині моделі).
- Визначення завдань зберігаються в `~/.openclaw/cron/jobs.json`, тож розклади не втрачаються після перезапусків.
- Cron виконується **всередині процесу Gateway** (не всередині моделі).
- Визначення завдань зберігаються в `~/.openclaw/cron/jobs.json`, тому розклади не втрачаються після перезапусків.
- Стан виконання під час роботи зберігається поруч у `~/.openclaw/cron/jobs-state.json`. Якщо ви відстежуєте визначення cron у git, відстежуйте `jobs.json` і додайте `jobs-state.json` до gitignore.
- Після розділення старіші версії OpenClaw можуть читати `jobs.json`, але можуть трактувати завдання як нові, бо поля стану виконання тепер зберігаються в `jobs-state.json`.
- Коли `jobs.json` редагується під час роботи Gateway або коли його зупинено, OpenClaw порівнює змінені поля розкладу з метаданими очікуваних слотів виконання й очищає застарілі значення `nextRunAtMs`. Зміни лише форматування або порядку ключів зберігають очікуваний слот.
- Усі виконання cron створюють записи [фонового завдання](/uk/automation/tasks).
- Під час запуску Gateway прострочені ізольовані завдання кроку агента переплановуються за межі вікна підключення каналів, а не відтворюються негайно, тож запуск Discord/Telegram і налаштування нативних команд залишаються чуйними після перезапусків.
- Після розділення старіші версії OpenClaw можуть читати `jobs.json`, але можуть сприймати завдання як нові, бо поля стану виконання тепер містяться в `jobs-state.json`.
- Коли `jobs.json` редагують під час роботи Gateway або коли його зупинено, OpenClaw порівнює змінені поля розкладу з метаданими відкладених слотів виконання й очищає застарілі значення `nextRunAtMs`. Суто форматування або переписування лише порядку ключів зберігає відкладений слот.
- Усі виконання cron створюють записи [фонових завдань](/uk/automation/tasks).
- Під час запуску Gateway прострочені ізольовані завдання agent-turn переплановуються за межі вікна підключення каналу, а не відтворюються негайно, тому запуск Discord/Telegram і налаштування native-command залишаються чуйними після перезапусків.
- Одноразові завдання (`--at`) за замовчуванням автоматично видаляються після успішного виконання.
- Ізольовані запуски cron за можливості закривають відстежувані вкладки браузера/процеси для їхньої сесії `cron:<jobId>` після завершення запуску, щоб від’єднана браузерна автоматизація не залишала осиротілі процеси.
- Ізольовані запуски cron також захищають від застарілих відповідей-підтверджень. Якщо перший результат є лише проміжним оновленням стану (`on it`, `pulling everything together` та подібні підказки), а жоден дочірній запуск субагента більше не відповідає за фінальну відповідь, OpenClaw один раз повторно запитує фактичний результат перед доставкою.
- Ізольовані запуски cron надають перевагу структурованим метаданим відмови у виконанні з вбудованого запуску, а потім повертаються до відомих маркерів фінального підсумку/виводу, таких як `SYSTEM_RUN_DENIED` і `INVALID_REQUEST`, щоб заблокована команда не повідомлялася як успішний запуск.
- Ізольовані запуски cron також трактують збої агента на рівні запуску як помилки завдання, навіть коли корисне навантаження відповіді не створене, тож збої моделі/провайдера збільшують лічильники помилок і запускають сповіщення про збій замість позначення завдання як успішного.
- Коли ізольоване завдання кроку агента досягає `timeoutSeconds`, cron перериває базовий запуск агента й дає йому коротке вікно для очищення. Якщо запуск не завершується, очищення, яким володіє Gateway, примусово очищає володіння сесією цього запуску перед тим, як cron зафіксує тайм-аут, тож чергова робота чату не лишається за застарілою сесією обробки.
- Ізольовані запуски cron із найкращими зусиллями закривають відстежувані вкладки браузера/процеси для свого сеансу `cron:<jobId>` після завершення запуску, щоб від’єднана браузерна автоматизація не залишала осиротілих процесів.
- Ізольовані запуски cron, які отримують вузький дозвіл на самоочищення cron, усе ще можуть читати стан планувальника й самофільтрований список свого поточного завдання, тож перевірки стану/heartbeat можуть переглядати власний розклад без ширшого доступу до змін cron.
- Ізольовані запуски cron також захищаються від застарілих відповідей-підтверджень. Якщо перший результат — лише проміжне оновлення стану (`on it`, `pulling everything together` і подібні підказки), а жоден дочірній subagent-запуск більше не відповідає за фінальну відповідь, OpenClaw один раз повторно запитує фактичний результат перед доставкою.
- Ізольовані запуски cron спершу віддають перевагу структурованим метаданим відмови у виконанні з вбудованого запуску, а потім повертаються до відомих маркерів фінального підсумку/виводу, як-от `SYSTEM_RUN_DENIED` і `INVALID_REQUEST`, щоб заблокована команда не повідомлялася як успішний запуск.
- Ізольовані запуски cron також трактують помилки агента на рівні запуску як помилки завдання навіть тоді, коли payload відповіді не створено, тому помилки моделі/провайдера збільшують лічильники помилок і запускають сповіщення про збій замість позначення завдання як успішного.
- Коли ізольоване завдання agent-turn досягає `timeoutSeconds`, cron перериває базовий запуск агента й надає коротке вікно для очищення. Якщо запуск не завершується, очищення, кероване Gateway, примусово очищає право власності цього запуску на сеанс до того, як cron зафіксує тайм-аут, щоб поставлена в чергу робота чату не залишалася за застарілим сеансом обробки.
<a id="maintenance"></a>
<Note>
Узгодження завдань для cron спершу належить середовищу виконання, а вже потім спирається на довговічну історію: активне завдання cron залишається живим, доки середовище виконання cron усе ще відстежує це завдання як таке, що виконується, навіть якщо старий рядок дочірньої сесії ще існує. Коли середовище виконання припиняє володіти завданням і 5-хвилинне пільгове вікно спливає, обслуговування перевіряє збережені журнали запусків і стан завдання для відповідного запуску `cron:<jobId>:<startedAt>`. Якщо ця довговічна історія показує термінальний результат, журнал завдань фіналізується з нього; інакше обслуговування, яким володіє Gateway, може позначити завдання як `lost`. Офлайн-аудит CLI може відновитися з довговічної історії, але не трактує власну порожню множину активних завдань у процесі як доказ того, що запуск cron, яким володіє Gateway, зник.
Узгодження завдань для cron спершу належить середовищу виконання, а потім спирається на довготривалу історію: активне завдання cron залишається живим, доки середовище виконання cron усе ще відстежує це завдання як запущене, навіть якщо старий рядок дочірнього сеансу все ще існує. Коли середовище виконання перестає володіти завданням і спливає 5-хвилинне пільгове вікно, обслуговування перевіряє збережені журнали запусків і стан завдання для відповідного запуску `cron:<jobId>:<startedAt>`. Якщо ця довготривала історія показує кінцевий результат, журнал завдань фіналізується з нього; інакше обслуговування, кероване Gateway, може позначити завдання як `lost`. Офлайн-аудит CLI може відновлюватися з довготривалої історії, але він не вважає власний порожній набір активних завдань у процесі доказом того, що запуск cron, керований Gateway, зник.
</Note>
## Типи розкладів
| Вид | Прапорець CLI | Опис |
| Тип | Прапорець CLI | Опис |
| ------- | ------------- | ------------------------------------------------------- |
| `at` | `--at` | Одноразова позначка часу (ISO 8601 або відносна, як `20m`) |
| `every` | `--every` | Фіксований інтервал |
| `cron` | `--cron` | 5-польовий або 6-польовий вираз cron з необов’язковим `--tz` |
| `every` | `--every` | Фіксований інтервал |
| `cron` | `--cron` | 5-польовий або 6-польовий cron-вираз з необов’язковим `--tz` |
Позначки часу без часового поясу трактуються як UTC. Додайте `--tz America/New_York` для планування за місцевим настінним часом.
Повторювані вирази на початку години автоматично розносяться в межах до 5 хвилин, щоб зменшити піки навантаження. Використовуйте `--exact`, щоб примусово задати точний час, або `--stagger 30s` для явного вікна.
Повторювані вирази на початку години автоматично розносяться з кроком до 5 хвилин, щоб зменшити піки навантаження. Використовуйте `--exact`, щоб примусово задати точний час, або `--stagger 30s` для явного вікна.
### День місяця й день тижня використовують логіку OR
Вирази cron розбираються за допомогою [croner](https://github.com/Hexagon/croner). Коли поля дня місяця й дня тижня обидва не є шаблонами, croner збігається, коли збігається **будь-яке** поле, а не обидва. Це стандартна поведінка Vixie cron.
Cron-вирази аналізує [croner](https://github.com/Hexagon/croner). Коли і поле дня місяця, і поле дня тижня не є wildcard, croner збігається, коли збігається **будь-яке** поле, а не обидва. Це стандартна поведінка Vixie cron.
```
# Intended: "9 AM on the 15th, only if it's a Monday"
@ -88,34 +89,34 @@ Cron — це вбудований планувальник Gateway. Він зб
0 9 15 * 1
```
Це спрацьовує приблизно 56 разів на місяць замість 01 разу на місяць. Тут OpenClaw використовує стандартну поведінку OR від Croner. Щоб вимагати обидві умови, використовуйте модифікатор дня тижня Croner `+` (`0 9 15 * +1`) або плануйте за одним полем і перевіряйте інше в prompt чи команді вашого завдання.
Це спрацьовує приблизно 56 разів на місяць замість 01 разу на місяць. Тут OpenClaw використовує стандартну поведінку OR Croner. Щоб вимагати обидві умови, використовуйте модифікатор дня тижня Croner `+` (`0 9 15 * +1`) або плануйте за одним полем і перевіряйте інше в prompt чи команді завдання.
## Стилі виконання
| Стиль | Значення `--session` | Запускається в | Найкраще для |
| --------------- | -------------------- | ------------------------ | ------------------------------- |
| Основна сесія | `main` | Наступний крок Heartbeat | Нагадування, системні події |
| Ізольований | `isolated` | Виділений `cron:<jobId>` | Звіти, фонові обов’язки |
| Поточна сесія | `current` | Прив’язується під час створення | Повторювана робота з урахуванням контексту |
| Власна сесія | `session:custom-id` | Постійна іменована сесія | Робочі процеси, що спираються на історію |
| Стиль | Значення `--session` | Де виконується | Найкраще для |
| --------------- | -------------------- | ----------------------- | ------------------------------- |
| Основний сеанс | `main` | Наступний хід heartbeat | Нагадування, системні події |
| Ізольований | `isolated` | Окремий `cron:<jobId>` | Звіти, фонові рутинні справи |
| Поточний сеанс | `current` | Прив’язується під час створення | Повторювана робота з урахуванням контексту |
| Власний сеанс | `session:custom-id` | Постійний іменований сеанс | Робочі процеси, що спираються на історію |
<AccordionGroup>
<Accordion title="Main session vs isolated vs custom">
Завдання **основної сесії** ставлять системну подію в чергу й необов’язково пробуджують Heartbeat (`--wake now` або `--wake next-heartbeat`). Ці системні події не подовжують свіжість щоденного/неактивного скидання для цільової сесії. **Ізольовані** завдання запускають виділений крок агента зі свіжою сесією. **Власні сесії** (`session:xxx`) зберігають контекст між запусками, уможливлюючи робочі процеси на кшталт щоденних стендапів, які спираються на попередні підсумки.
<Accordion title="Основний сеанс, ізольований і власний">
Завдання **основного сеансу** ставлять системну подію в чергу й необов’язково пробуджують heartbeat (`--wake now` або `--wake next-heartbeat`). Такі системні події не подовжують свіжість щоденного/idle-скидання для цільового сеансу. **Ізольовані** завдання виконують окремий хід агента зі свіжим сеансом. **Власні сеанси** (`session:xxx`) зберігають контекст між запусками, уможливлюючи робочі процеси на кшталт щоденних standup-звітів, що спираються на попередні підсумки.
</Accordion>
<Accordion title="What 'fresh session' means for isolated jobs">
Для ізольованих завдань «свіжа сесія» означає новий transcript/session id для кожного запуску. OpenClaw може переносити безпечні вподобання, як-от налаштування thinking/fast/verbose, мітки та явно вибрані користувачем перевизначення моделі/автентифікації, але не успадковує навколишній контекст розмови зі старішого рядка cron: маршрутизацію каналу/групи, політику надсилання чи черги, підвищення прав, походження або прив’язку середовища виконання ACP. Використовуйте `current` або `session:<id>`, коли повторюване завдання має навмисно спиратися на той самий контекст розмови.
<Accordion title="Що означає «свіжий сеанс» для ізольованих завдань">
Для ізольованих завдань «свіжий сеанс» означає новий transcript/session id для кожного запуску. OpenClaw може переносити безпечні вподобання, як-от налаштування thinking/fast/verbose, мітки та явно вибрані користувачем перевизначення моделі/auth, але не успадковує навколишній контекст розмови зі старішого рядка cron: маршрутизацію каналу/групи, політику надсилання або черги, підвищення прав, походження чи прив’язку ACP runtime. Використовуйте `current` або `session:<id>`, коли повторюване завдання має навмисно спиратися на той самий контекст розмови.
</Accordion>
<Accordion title="Runtime cleanup">
Для ізольованих завдань завершення середовища виконання тепер включає найкраще можливе очищення браузера для цієї сесії cron. Збої очищення ігноруються, щоб фактичний результат cron усе одно мав пріоритет.
<Accordion title="Очищення середовища виконання">
Для ізольованих завдань завершення середовища виконання тепер включає best-effort очищення браузера для цього сеансу cron. Помилки очищення ігноруються, щоб фактичний результат cron усе одно мав пріоритет.
Ізольовані запуски cron також звільняють усі вбудовані екземпляри середовища виконання MCP, створені для завдання, через спільний шлях очищення середовища виконання. Це відповідає тому, як завершуються MCP-клієнти основної сесії та власної сесії, тож ізольовані завдання cron не залишають stdio дочірні процеси або довгоживучі MCP-з’єднання між запусками.
Ізольовані запуски cron також звільняють будь-які bundled MCP runtime instances, створені для завдання через спільний шлях runtime-cleanup. Це відповідає тому, як розбираються MCP-клієнти main-session і custom-session, тому ізольовані завдання cron не залишають stdio child processes або довготривалі MCP-з’єднання між запусками.
</Accordion>
<Accordion title="Subagent and Discord delivery">
Коли ізольовані запуски cron оркеструють субагентів, доставка також надає перевагу фінальному дочірньому виводу над застарілим проміжним текстом батьківського запуску. Якщо дочірні запуски ще виконуються, OpenClaw пригнічує це часткове батьківське оновлення замість оголошення його.
<Accordion title="Доставка subagent і Discord">
Коли ізольовані запуски cron оркеструють subagents, доставка також віддає перевагу фінальному виводу нащадка над застарілим проміжним текстом батьківського запуску. Якщо нащадки усе ще виконуються, OpenClaw пригнічує це часткове батьківське оновлення замість його оголошення.
Для текстових цілей оголошення Discord OpenClaw надсилає канонічний фінальний текст асистента один раз замість повторного відтворення і потокових/проміжних текстових payload, і фінальної відповіді. Медіа та структуровані payload Discord усе ще доставляються як окремі payload, щоб вкладення й компоненти не відкидалися.
Для цілей оголошення Discord лише з текстом OpenClaw надсилає канонічний фінальний текст асистента один раз замість повторного відтворення і streamed/intermediate text payloads, і фінальної відповіді. Медіа та структуровані payloads Discord усе ще доставляються як окремі payloads, щоб вкладення й компоненти не було втрачено.
</Accordion>
</AccordionGroup>
@ -132,54 +133,54 @@ Cron — це вбудований планувальник Gateway. Він зб
Перевизначення рівня thinking.
</ParamField>
<ParamField path="--light-context" type="boolean">
Пропустити ін’єкцію файлів початкового налаштування робочого простору.
Пропустити ін’єкцію bootstrap-файлу workspace.
</ParamField>
<ParamField path="--tools" type="string">
Обмежити, які інструменти може використовувати завдання, наприклад `--tools exec,read`.
</ParamField>
`--model` використовує вибрану дозволену модель як основну модель цього завдання. Це не те саме, що перевизначення `/model` у сесії чату: налаштовані ланцюжки fallback усе ще застосовуються, коли основна модель завдання дає збій. Якщо запитана модель не дозволена або її неможливо розв’язати, cron завершує запуск явною помилкою валідації замість тихого повернення до вибору моделі агента/моделі за замовчуванням для завдання.
`--model` використовує вибрану дозволену модель як основну модель цього завдання. Це не те саме, що перевизначення `/model` у сеансі чату: налаштовані ланцюги fallback усе ще застосовуються, коли основна модель завдання дає збій. Якщо запитана модель не дозволена або її неможливо визначити, cron завершує запуск явною помилкою валідації замість тихого fallback до вибору моделі агента/типового вибору завдання.
Завдання Cron також можуть містити `fallbacks` на рівні payload. Коли він присутній, цей список замінює налаштований ланцюжок fallback для завдання. Використовуйте `fallbacks: []` у payload/API завдання, коли потрібен строгий запуск cron, який пробує лише вибрану модель. Якщо завдання має `--model`, але не має ані payload fallback, ані налаштованих fallback, OpenClaw передає явне порожнє перевизначення fallback, щоб основна модель агента не додавалася як прихована додаткова ціль повторної спроби.
Завдання Cron також можуть містити `fallbacks` на рівні payload. Коли вони наявні, цей список замінює налаштований fallback chain для завдання. Використовуйте `fallbacks: []` у payload/API завдання, коли потрібен строгий запуск cron, який пробує лише вибрану модель. Якщо завдання має `--model`, але не має fallback ні в payload, ні в конфігурації, OpenClaw передає явне порожнє перевизначення fallback, щоб основна модель агента не додавалася як прихована додаткова ціль повторної спроби.
Пріоритет вибору моделі для ізольованих завдань:
1. Перевизначення моделі Gmail hook (коли запуск прийшов із Gmail і це перевизначення дозволене)
2. `model` у payload окремого завдання
3. Збережене користувачем перевизначення моделі сесії cron
4. Вибір моделі агента/за замовчуванням
1. Перевизначення моделі Gmail hook (коли запуск надійшов із Gmail і це перевизначення дозволене)
2. `model` payload для окремого завдання
3. Збережене користувачем перевизначення моделі сеансу cron
4. Вибір моделі агента/типовий вибір
Швидкий режим також відповідає розв’язаному живому вибору. Якщо конфігурація вибраної моделі має `params.fastMode`, ізольований cron використовує це за замовчуванням. Збережене перевизначення `fastMode` сесії все одно має пріоритет над конфігурацією в обох напрямках.
Fast mode також дотримується визначеного live-вибору. Якщо конфігурація вибраної моделі має `params.fastMode`, ізольований cron використовує це за замовчуванням. Збережене перевизначення `fastMode` сеансу все одно має пріоритет над конфігурацією в обох напрямках.
Якщо ізольований запуск потрапляє на живу передачу перемикання моделі, cron повторює спробу з перемкнутим провайдером/моделлю й зберігає цей живий вибір для активного запуску перед повторною спробою. Коли перемикання також містить новий профіль автентифікації, cron також зберігає це перевизначення профілю автентифікації для активного запуску. Повторні спроби обмежені: після початкової спроби плюс 2 повторні спроби перемикання cron переривається замість нескінченного циклу.
Якщо ізольований запуск доходить до live model-switch handoff, cron повторює спробу з перемкненим провайдером/моделлю та зберігає цей live-вибір для активного запуску перед повторною спробою. Коли перемикання також містить новий auth profile, cron також зберігає це перевизначення auth profile для активного запуску. Повторні спроби обмежені: після початкової спроби плюс 2 повторні спроби перемикання cron переривається замість нескінченного циклу.
Перед тим як ізольований запуск cron увійде до runner агента, OpenClaw перевіряє досяжні локальні кінцеві точки провайдерів для налаштованих провайдерів `api: "ollama"` і `api: "openai-completions"`, чий `baseUrl` є loopback, приватною мережею або `.local`. Якщо ця кінцева точка недоступна, запуск записується як `skipped` із чіткою помилкою провайдера/моделі замість запуску виклику моделі. Результат кінцевої точки кешується на 5 хвилин, тож багато належних до виконання завдань, які використовують той самий недоступний локальний сервер Ollama, vLLM, SGLang або LM Studio, спільно використовують одну невелику перевірку замість створення шквалу запитів. Пропущені через попередню перевірку провайдера запуски не збільшують backoff помилок виконання; увімкніть `failureAlert.includeSkipped`, коли потрібні повторні сповіщення про пропуск.
Перед тим як ізольований запуск cron увійде до agent runner, OpenClaw перевіряє досяжні локальні endpoint провайдера для налаштованих провайдерів `api: "ollama"` і `api: "openai-completions"`, чиї `baseUrl` є loopback, private-network або `.local`. Якщо цей endpoint не працює, запуск записується як `skipped` з чіткою помилкою провайдера/моделі замість початку виклику моделі. Результат endpoint кешується на 5 хвилин, тому багато запланованих завдань, що використовують той самий недоступний локальний сервер Ollama, vLLM, SGLang або LM Studio, спільно використовують одну невелику перевірку замість створення шторму запитів. Пропущені provider-preflight запуски не збільшують execution-error backoff; увімкніть `failureAlert.includeSkipped`, якщо потрібні повторні сповіщення про пропуски.
## Доставка й вивід
| Режим | Що відбувається |
| ---------- | ------------------------------------------------------------------ |
| `announce` | Доставляє фінальний текст до цілі як fallback, якщо агент не надіслав |
| `webhook` | POST payload події завершення на URL |
| `none` | Немає fallback-доставки runner |
| Режим | Що відбувається |
| ---------- | ------------------------------------------------------------------- |
| `announce` | Fallback-доставляє фінальний текст до цілі, якщо агент не надіслав |
| `webhook` | Надсилає payload завершеної події POST-запитом на URL |
| `none` | Немає fallback-доставки runner |
Використовуйте `--announce --channel telegram --to "-1001234567890"` для доставки в канал. Для тем форуму Telegram використовуйте `-1001234567890:topic:123`; прямі RPC/config-викликачі також можуть передавати `delivery.threadId` як рядок або число. Цілі Slack/Discord/Mattermost мають використовувати явні префікси (`channel:<id>`, `user:<id>`). ID кімнат Matrix чутливі до регістру; використовуйте точний ID кімнати або форму `room:!room:server` з Matrix.
Використовуйте `--announce --channel telegram --to "-1001234567890"` для доставки в канал. Для тем форумів Telegram використовуйте `-1001234567890:topic:123`; прямі виклики RPC/config також можуть передавати `delivery.threadId` як рядок або число. Цілі Slack/Discord/Mattermost мають використовувати явні префікси (`channel:<id>`, `user:<id>`). Ідентифікатори кімнат Matrix чутливі до регістру; використовуйте точний ідентифікатор кімнати або форму `room:!room:server` з Matrix.
Коли доставка оголошення використовує `channel: "last"` або пропускає `channel`, ціль із префіксом провайдера, як-от `telegram:123`, може вибрати канал до того, як cron повернеться до історії сеансу або одного налаштованого каналу. Лише префікси, оголошені завантаженим plugin, є селекторами провайдера. Якщо `delivery.channel` задано явно, префікс цілі має називати того самого провайдера; наприклад, `channel: "whatsapp"` з `to: "telegram:123"` відхиляється, замість того щоб дозволити WhatsApp інтерпретувати ID Telegram як номер телефону. Префікси типу цілі та сервісу, як-от `channel:<id>`, `user:<id>`, `imessage:<handle>` і `sms:<number>`, залишаються синтаксисом цілі, що належить каналу, а не селекторами провайдера.
Коли доставка оголошення використовує `channel: "last"` або пропускає `channel`, ціль із префіксом провайдера, наприклад `telegram:123`, може вибрати канал до того, як cron повернеться до історії сеансу або єдиного налаштованого каналу. Лише префікси, оголошені завантаженим plugin, є селекторами провайдера. Якщо `delivery.channel` задано явно, префікс цілі має називати того самого провайдера; наприклад, `channel: "whatsapp"` з `to: "telegram:123"` відхиляється, замість того щоб дозволити WhatsApp інтерпретувати ID Telegram як номер телефону. Префікси типу цілі та сервісу, як-от `channel:<id>`, `user:<id>`, `imessage:<handle>` і `sms:<number>`, залишаються синтаксисом цілі, що належить каналу, а не селекторами провайдера.
Для ізольованих завдань доставка в чат є спільною. Якщо маршрут чату доступний, агент може використовувати інструмент `message`, навіть коли завдання використовує `--no-deliver`. Якщо агент надсилає до налаштованої/поточної цілі, OpenClaw пропускає резервне оголошення. Інакше `announce`, `webhook` і `none` лише керують тим, що runner робить із фінальною відповіддю після ходу агента.
Для ізольованих завдань доставка в чат є спільною. Якщо маршрут чату доступний, агент може використовувати інструмент `message`, навіть коли завдання використовує `--no-deliver`. Якщо агент надсилає до налаштованої/поточної цілі, OpenClaw пропускає резервне оголошення. Інакше `announce`, `webhook` і `none` керують лише тим, що runner робить із фінальною відповіддю після ходу агента.
Коли агент створює ізольоване нагадування з активного чату, OpenClaw зберігає збережену живу ціль доставки для резервного маршруту оголошення. Внутрішні ключі сеансів можуть бути в нижньому регістрі; цілі доставки провайдера не реконструюються з цих ключів, коли доступний поточний контекст чату.
Коли агент створює ізольоване нагадування з активного чату, OpenClaw зберігає збережену live-ціль доставки для резервного маршруту оголошення. Внутрішні ключі сеансу можуть бути в нижньому регістрі; цілі доставки провайдера не реконструюються з цих ключів, коли доступний поточний контекст чату.
Неявна доставка оголошень використовує налаштовані списки дозволених каналів для перевірки та перенаправлення застарілих цілей. Схвалення зі сховища прив'язок DM не є резервними одержувачами автоматизації; задайте `delivery.to` або налаштуйте запис `allowFrom` каналу, коли заплановане завдання має проактивно надсилати в DM.
Неявна доставка оголошень використовує налаштовані списки дозволів каналів для перевірки й перенаправлення застарілих цілей. Затвердження зі сховища пар DM не є отримувачами резервної автоматизації; задайте `delivery.to` або налаштуйте запис `allowFrom` каналу, коли заплановане завдання має проактивно надсилати в DM.
Сповіщення про помилки використовують окремий шлях призначення:
- `cron.failureDestination` задає глобальне значення за замовчуванням для сповіщень про помилки.
- `cron.failureDestination` задає глобальне типове значення для сповіщень про помилки.
- `job.delivery.failureDestination` перевизначає його для окремого завдання.
- Якщо жодне не задано, а завдання вже доставляє через `announce`, сповіщення про помилки тепер повертаються до цієї основної цілі оголошення.
- `delivery.failureDestination` підтримується лише для завдань `sessionTarget="isolated"`, якщо основний режим доставки не є `webhook`.
- `failureAlert.includeSkipped: true` вмикає для завдання або глобальної політики сповіщень cron повторювані сповіщення про пропущені запуски. Пропущені запуски ведуть окремий лічильник послідовних пропусків, тому вони не впливають на backoff помилок виконання.
- `failureAlert.includeSkipped: true` вмикає для завдання або глобальної політики сповіщень cron повторні сповіщення про пропущені запуски. Пропущені запуски зберігають окремий лічильник послідовних пропусків, тож не впливають на backoff помилок виконання.
## Приклади CLI
@ -222,9 +223,9 @@ Cron — це вбудований планувальник Gateway. Він зб
</Tab>
</Tabs>
## Webhook
## Webhooks
Gateway може надавати HTTP-ендпоїнти Webhook для зовнішніх тригерів. Увімкніть у config:
Gateway може надавати HTTP-кінцеві точки Webhook для зовнішніх тригерів. Увімкніть у конфігурації:
```json5
{
@ -243,7 +244,7 @@ Gateway може надавати HTTP-ендпоїнти Webhook для зов
- `Authorization: Bearer <token>` (рекомендовано)
- `x-openclaw-token: <token>`
Токени в рядку запиту відхиляються.
Токени в query string відхиляються.
<AccordionGroup>
<Accordion title="POST /hooks/wake">
@ -274,32 +275,32 @@ Gateway може надавати HTTP-ендпоїнти Webhook для зов
-d '{"message":"Summarize inbox","name":"Email","model":"openai/gpt-5.4"}'
```
Поля: `message` (обов'язкове), `name`, `agentId`, `wakeMode`, `deliver`, `channel`, `to`, `model`, `fallbacks`, `thinking`, `timeoutSeconds`.
Поля: `message` (обов’язково), `name`, `agentId`, `wakeMode`, `deliver`, `channel`, `to`, `model`, `fallbacks`, `thinking`, `timeoutSeconds`.
</Accordion>
<Accordion title="Зіставлені hooks (POST /hooks/<name>)">
Власні назви hook розв'язуються через `hooks.mappings` у config. Зіставлення можуть перетворювати довільні payloads на дії `wake` або `agent` за допомогою шаблонів або code transforms.
Власні імена hook визначаються через `hooks.mappings` у конфігурації. Зіставлення можуть перетворювати довільні payload на дії `wake` або `agent` за допомогою шаблонів або трансформацій коду.
</Accordion>
</AccordionGroup>
<Warning>
Тримайте ендпоїнти hook за loopback, tailnet або довіреним reverse proxy.
Тримайте кінцеві точки hook за loopback, tailnet або довіреним reverse proxy.
- Використовуйте окремий токен hook; не використовуйте повторно токени автентифікації gateway.
- Тримайте `hooks.path` на окремому підшляху; `/` відхиляється.
- Задайте `hooks.allowedAgentIds`, щоб обмежити явну маршрутизацію `agentId`.
- Тримайте `hooks.allowRequestSessionKey=false`, якщо вам не потрібні сеанси, вибрані викликачем.
- Якщо ви вмикаєте `hooks.allowRequestSessionKey`, також задайте `hooks.allowedSessionKeyPrefixes`, щоб обмежити дозволені форми ключів сеансів.
- Payloads hook типово обгортаються межами безпеки.
- Якщо ви вмикаєте `hooks.allowRequestSessionKey`, також задайте `hooks.allowedSessionKeyPrefixes`, щоб обмежити дозволені форми ключів сеансу.
- Payload hook за замовчуванням обгортаються межами безпеки.
</Warning>
## Інтеграція Gmail PubSub
Під'єднайте тригери поштової скриньки Gmail до OpenClaw через Google PubSub.
Під’єднайте тригери вхідних Gmail до OpenClaw через Google PubSub.
<Note>
**Передумови:** CLI `gcloud`, `gog` (gogcli), увімкнені hooks OpenClaw, Tailscale для публічного HTTPS-ендпоїнта.
**Передумови:** CLI `gcloud`, `gog` (gogcli), увімкнені hooks OpenClaw, Tailscale для публічної кінцевої точки HTTPS.
</Note>
### Налаштування майстром (рекомендовано)
@ -308,11 +309,11 @@ Gateway може надавати HTTP-ендпоїнти Webhook для зов
openclaw webhooks gmail setup --account openclaw@gmail.com
```
Це записує config `hooks.gmail`, вмикає preset Gmail і використовує Tailscale Funnel для push-ендпоїнта.
Це записує конфігурацію `hooks.gmail`, вмикає пресет Gmail і використовує Tailscale Funnel для push-кінцевої точки.
### Автозапуск Gateway
Коли `hooks.enabled=true` і задано `hooks.gmail.account`, Gateway під час запуску стартує `gog gmail watch serve` і автоматично поновлює watch. Задайте `OPENCLAW_SKIP_GMAIL_WATCHER=1`, щоб відмовитися.
Коли `hooks.enabled=true` і `hooks.gmail.account` задано, Gateway запускає `gog gmail watch serve` під час boot і автоматично поновлює watch. Задайте `OPENCLAW_SKIP_GMAIL_WATCHER=1`, щоб відмовитися.
### Ручне одноразове налаштування
@ -327,7 +328,7 @@ openclaw webhooks gmail setup --account openclaw@gmail.com
```
</Step>
<Step title="Створіть тему та надайте Gmail доступ до push">
<Step title="Створіть topic і надайте Gmail push-доступ">
```bash
gcloud pubsub topics create gog-gmail-watch
gcloud pubsub topics add-iam-policy-binding gog-gmail-watch \
@ -391,11 +392,11 @@ openclaw cron edit <jobId> --clear-agent
Примітка щодо перевизначення моделі:
- `openclaw cron add|edit --model ...` змінює вибрану модель завдання.
- Якщо модель дозволена, саме цей provider/model доходить до ізольованого запуску агента.
- Якщо вона не дозволена або її неможливо розв'язати, cron завершує запуск явною помилкою валідації.
- Налаштовані ланцюжки fallback все одно застосовуються, бо `--model` cron є основною моделлю завдання, а не перевизначенням `/model` сеансу.
- Payload `fallbacks` замінює налаштовані fallback для цього завдання; `fallbacks: []` вимикає fallback і робить запуск строгим.
- Простий `--model` без явного або налаштованого списку fallback не переходить до основної моделі агента як до мовчазної додаткової цілі повторної спроби.
- Якщо модель дозволена, цей точний provider/model потрапляє до ізольованого запуску агента.
- Якщо вона не дозволена або її неможливо розв’язати, cron завершує запуск із явною помилкою валідації.
- Налаштовані fallback-ланцюжки все ще застосовуються, бо cron `--model` є основною моделлю завдання, а не перевизначенням `/model` сеансу.
- Payload `fallbacks` замінює налаштовані fallbacks для цього завдання; `fallbacks: []` вимикає fallback і робить запуск strict.
- Простий `--model` без явного або налаштованого списку fallback не переходить до основної моделі агента як мовчазна додаткова ціль повторної спроби.
</Note>
@ -419,23 +420,23 @@ openclaw cron edit <jobId> --clear-agent
}
```
`maxConcurrentRuns` обмежує як заплановану диспетчеризацію cron, так і виконання ізольованих ходів агента. Ізольовані ходи агентів cron внутрішньо використовують виділену смугу виконання черги `cron-nested`, тому збільшення цього значення дозволяє незалежним LLM-запускам cron просуватися паралельно, а не лише запускати їхні зовнішні обгортки cron. Спільна смуга `nested`, що не належить cron, цим налаштуванням не розширюється.
`maxConcurrentRuns` обмежує як диспетчеризацію запланованого cron, так і виконання ізольованих ходів агента. Ізольовані ходи cron-агента внутрішньо використовують виділену lane виконання черги `cron-nested`, тому збільшення цього значення дає незалежним cron LLM-запускам просуватися паралельно, замість того щоб запускати лише їхні зовнішні cron-обгортки. Спільна не-cron lane `nested` цим налаштуванням не розширюється.
Sidecar стану runtime виводиться з `cron.store`: сховище `.json`, як-от `~/clawd/cron/jobs.json`, використовує `~/clawd/cron/jobs-state.json`, тоді як шлях сховища без суфікса `.json` додає `-state.json`.
Якщо ви вручну редагуєте `jobs.json`, не додавайте `jobs-state.json` до системи контролю версій. OpenClaw використовує цей sidecar для pending slots, active markers, last-run metadata і schedule identity, що повідомляє планувальнику, коли зовнішньо відредагованому завданню потрібне свіже `nextRunAtMs`.
Якщо ви вручну редагуєте `jobs.json`, не додавайте `jobs-state.json` до source control. OpenClaw використовує цей sidecar для pending slots, active markers, метаданих останнього запуску та ідентичності розкладу, яка повідомляє scheduler, коли зовнішньо відредагованому завданню потрібен новий `nextRunAtMs`.
Вимкнути cron: `cron.enabled: false` або `OPENCLAW_SKIP_CRON=1`.
<AccordionGroup>
<Accordion title="Поведінка повторних спроб">
**Повторна спроба для одноразового завдання**: тимчасові помилки (rate limit, overload, network, server error) повторюються до 3 разів з exponential backoff. Постійні помилки вимикають завдання негайно.
**Одноразова повторна спроба**: тимчасові помилки (rate limit, overload, network, server error) повторюються до 3 разів з експоненційним backoff. Постійні помилки вимикають негайно.
**Повторна спроба для повторюваного завдання**: exponential backoff (від 30 с до 60 хв) між повторними спробами. Backoff скидається після наступного успішного запуску.
**Повторна спроба для повторюваних завдань**: експоненційний backoff (від 30 с до 60 хв) між повторними спробами. Backoff скидається після наступного успішного запуску.
</Accordion>
<Accordion title="Обслуговування">
`cron.sessionRetention` (типово `24h`) очищає записи сеансів ізольованих запусків. `cron.runLog.maxBytes` / `cron.runLog.keepLines` автоматично очищають файли журналів запусків.
`cron.sessionRetention` (типово `24h`) очищає записи ізольованих run-session. `cron.runLog.maxBytes` / `cron.runLog.keepLines` автоматично очищають файли run-log.
</Accordion>
</AccordionGroup>
@ -456,38 +457,38 @@ openclaw doctor
<AccordionGroup>
<Accordion title="Cron не спрацьовує">
- Перевірте `cron.enabled` і env var `OPENCLAW_SKIP_CRON`.
- Перевірте `cron.enabled` і змінну середовища `OPENCLAW_SKIP_CRON`.
- Переконайтеся, що Gateway працює безперервно.
- Для розкладів `cron` перевірте часовий пояс (`--tz`) порівняно з часовим поясом хоста.
- `reason: not-due` у виводі запуску означає, що ручний запуск перевірявся командою `openclaw cron run <jobId> --due`, і час виконання завдання ще не настав.
- Для розкладів `cron` перевірте часовий пояс (`--tz`) порівняно з часовим поясом host.
- `reason: not-due` у виводі запуску означає, що ручний запуск було перевірено з `openclaw cron run <jobId> --due`, і строк виконання завдання ще не настав.
</Accordion>
<Accordion title="Cron спрацював, але доставки немає">
- Режим доставки `none` означає, що резервне надсилання через runner не очікується. Агент усе одно може надсилати напряму за допомогою інструмента `message`, коли доступний маршрут чату.
- Відсутня або недійсна ціль доставки (`channel`/`to`) означає, що вихідне повідомлення було пропущено.
- Для Matrix скопійовані або застарілі завдання з ідентифікаторами кімнат `delivery.to` у нижньому регістрі можуть не виконатися, оскільки ідентифікатори кімнат Matrix чутливі до регістру. Відредагуйте завдання, указавши точне значення `!room:server` або `room:!room:server` з Matrix.
- Помилки автентифікації каналу (`unauthorized`, `Forbidden`) означають, що доставку заблоковано обліковими даними.
- Якщо ізольований запуск повертає лише токен мовчання (`NO_REPLY` / `no_reply`), OpenClaw пригнічує пряму вихідну доставку, а також резервний шлях підсумку в черзі, тому в чат нічого не публікується.
- Якщо агент має сам надіслати повідомлення користувачу, перевірте, що завдання має придатний маршрут (`channel: "last"` з попереднім чатом або явний канал/ціль).
- Режим доставки `none` означає, що резервне надсилання через runner не очікується. Агент усе ще може надсилати напряму інструментом `message`, коли доступний маршрут чату.
- Відсутня або недійсна ціль доставки (`channel`/`to`) означає, що вихідне надсилання було пропущено.
- Для Matrix скопійовані або застарілі завдання з room ID у `delivery.to`, переведеними в нижній регістр, можуть не спрацювати, бо room ID у Matrix чутливі до регістру. Відредагуйте завдання до точного значення `!room:server` або `room:!room:server` з Matrix.
- Помилки автентифікації каналу (`unauthorized`, `Forbidden`) означають, що доставка була заблокована обліковими даними.
- Якщо ізольований запуск повертає лише мовчазний токен (`NO_REPLY` / `no_reply`), OpenClaw пригнічує пряму вихідну доставку, а також резервний шлях зведення в черзі, тому в чат нічого не публікується.
- Якщо агент має сам надіслати повідомлення користувачу, перевірте, що завдання має придатний маршрут (`channel: "last"` із попереднім чатом або явний канал/ціль).
</Accordion>
<Accordion title="Cron або Heartbeat, схоже, перешкоджає перемиканню /new-style">
- Актуальність щоденного та неактивного скидання не базується на `updatedAt`; див. [Керування сесіями](/uk/concepts/session#session-lifecycle).
- Пробудження Cron, запуски Heartbeat, сповіщення exec і службовий облік Gateway можуть оновлювати рядок сесії для маршрутизації/статусу, але вони не подовжують `sessionStartedAt` або `lastInteractionAt`.
- Для застарілих рядків, створених до появи цих полів, OpenClaw може відновити `sessionStartedAt` із заголовка сесії transcript JSONL, якщо файл досі доступний. Застарілі неактивні рядки без `lastInteractionAt` використовують цей відновлений час початку як свою базову точку неактивності.
<Accordion title="Cron або Heartbeat, здається, перешкоджає переходу /new-style">
- Свіжість щоденного та idle-скидання не базується на `updatedAt`; див. [Керування сеансами](/uk/concepts/session#session-lifecycle).
- Пробудження Cron, запуски Heartbeat, сповіщення exec і службові записи Gateway можуть оновлювати рядок сеансу для маршрутизації/статусу, але вони не подовжують `sessionStartedAt` або `lastInteractionAt`.
- Для застарілих рядків, створених до появи цих полів, OpenClaw може відновити `sessionStartedAt` із заголовка сеансу transcript JSONL, якщо файл усе ще доступний. Застарілі idle-рядки без `lastInteractionAt` використовують цей відновлений час початку як свою idle-базу.
</Accordion>
<Accordion title=ідводні камені часових поясів">
<Accordion title=астки часових поясів">
- Cron без `--tz` використовує часовий пояс хоста Gateway.
- Розклади `at` без часового поясу розглядаються як UTC.
- Heartbeat `activeHours` використовує налаштоване визначення часового поясу.
- Розклади `at` без часового поясу трактуються як UTC.
- `activeHours` Heartbeat використовує налаштоване визначення часового поясу.
</Accordion>
</AccordionGroup>
## Пов’язане
- [Автоматизація й завдання](/uk/automation) — усі механізми автоматизації на одному огляді
- [Фонові завдання](/uk/automation/tasks) — журнал завдань для виконань Cron
- [Heartbeat](/uk/gateway/heartbeat) — періодичні ходи основної сесії
- [Часовий пояс](/uk/concepts/timezone) — конфігурація часового поясу
- [Автоматизація та завдання](/uk/automation) — усі механізми автоматизації в одному огляді
- [Фонові завдання](/uk/automation/tasks) — журнал завдань для виконань cron
- [Heartbeat](/uk/gateway/heartbeat) — періодичні кроки основного сеансу
- [Часовий пояс](/uk/concepts/timezone) — налаштування часового поясу