chore(i18n): refresh uk translations
This commit is contained in:
parent
0ed9344419
commit
66b31ea760
@ -1,22 +1,22 @@
|
||||
---
|
||||
read_when:
|
||||
- Планування фонових завдань або пробуджень
|
||||
- Підключення зовнішніх тригерів (вебхуків, Gmail) до OpenClaw
|
||||
- Вибір між heartbeat і cron для запланованих завдань
|
||||
summary: Заплановані завдання, вебхуки та тригери Gmail PubSub для планувальника Gateway
|
||||
- Підключення зовнішніх тригерів (Webhook-и, Gmail) до OpenClaw
|
||||
- Вибір між Heartbeat і Cron для запланованих завдань
|
||||
summary: Заплановані завдання, Webhook-и та тригери Gmail PubSub для планувальника Gateway
|
||||
title: Заплановані завдання
|
||||
x-i18n:
|
||||
generated_at: "2026-04-12T05:18:49Z"
|
||||
generated_at: "2026-04-20T18:25:02Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: f42bcaeedd0595d025728d7f236a724a0ebc67b6813c57233f4d739b3088317f
|
||||
source_hash: e25f4dc8ee7b8f88e22d5cbc86e4527a9f5ac0ab4921e7874f76b186054682a3
|
||||
source_path: automation/cron-jobs.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Заплановані завдання (Cron)
|
||||
|
||||
Cron — це вбудований планувальник Gateway. Він зберігає завдання, пробуджує агента в потрібний час і може надсилати результат назад у канал чату або до кінцевої точки вебхука.
|
||||
Cron — це вбудований планувальник Gateway. Він зберігає завдання, пробуджує агента в потрібний час і може повертати результат назад у канал чату або на кінцеву точку Webhook.
|
||||
|
||||
## Швидкий старт
|
||||
|
||||
@ -39,33 +39,41 @@ openclaw cron runs --id <job-id>
|
||||
|
||||
## Як працює 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`.
|
||||
- Усі виконання cron створюють записи [фонових завдань](/uk/automation/tasks).
|
||||
- Одноразові завдання (`--at`) після успішного виконання автоматично видаляються за замовчуванням.
|
||||
- Ізольовані запуски cron у режимі best-effort закривають відстежувані вкладки браузера/процеси для своєї сесії `cron:<jobId>`, коли виконання завершується, щоб відокремлена автоматизація браузера не залишала після себе осиротілі процеси.
|
||||
- Ізольовані запуски cron також захищають від застарілих відповідей-підтверджень. Якщо перший результат — це лише проміжне оновлення статусу (`on it`, `pulling everything together` та подібні підказки) і жоден дочірній запуск субагента більше не відповідає за фінальну відповідь, OpenClaw повторно надсилає запит один раз, щоб отримати фактичний результат перед доставкою.
|
||||
- Одноразові завдання (`--at`) після успішного виконання типово автоматично видаляються.
|
||||
- Ізольовані запуски cron після завершення виконують best-effort закриття відстежуваних вкладок браузера/процесів для своєї сесії `cron:<jobId>`, щоб відокремлена автоматизація браузера не залишала сирітські процеси.
|
||||
- Ізольовані запуски cron також захищаються від застарілих відповідей-підтверджень. Якщо
|
||||
перший результат — це лише проміжне оновлення стану (`on it`, `pulling everything
|
||||
together` та подібні підказки), і жоден дочірній запуск субагента більше не
|
||||
відповідає за фінальну відповідь, OpenClaw повторно надсилає запит один раз для отримання фактичного
|
||||
результату перед доставкою.
|
||||
|
||||
<a id="maintenance"></a>
|
||||
|
||||
Узгодження завдань для cron контролюється під час виконання: активне завдання cron залишається активним, доки середовище виконання cron усе ще відстежує це завдання як таке, що виконується, навіть якщо старий рядок дочірньої сесії все ще існує.
|
||||
Щойно середовище виконання перестає володіти завданням і минає 5-хвилинне вікно очікування, обслуговування може позначити завдання як `lost`.
|
||||
Узгодження завдань для cron належить середовищу виконання: активне завдання cron залишається активним, поки
|
||||
середовище cron усе ще відстежує це завдання як таке, що виконується, навіть якщо старий рядок дочірньої сесії все ще існує.
|
||||
Щойно середовище виконання перестає володіти завданням і минає 5-хвилинне вікно очікування, обслуговування може
|
||||
позначити завдання як `lost`.
|
||||
|
||||
## Типи розкладу
|
||||
|
||||
| Тип | Прапорець CLI | Опис |
|
||||
| ------- | ------------- | ------------------------------------------------------- |
|
||||
| `at` | `--at` | Одноразова часова мітка (ISO 8601 або відносна, як-от `20m`) |
|
||||
| `at` | `--at` | Одноразова часова позначка (ISO 8601 або відносна, наприклад `20m`) |
|
||||
| `every` | `--every` | Фіксований інтервал |
|
||||
| `cron` | `--cron` | Cron-вираз із 5 або 6 полів з необов’язковим `--tz` |
|
||||
|
||||
Часові мітки без часового поясу трактуються як UTC. Додайте `--tz America/New_York` для планування за локальним настінним часом.
|
||||
Часові позначки без часового поясу трактуються як UTC. Додайте `--tz America/New_York` для планування за локальним астрономічним часом.
|
||||
|
||||
Періодичні вирази на початок години автоматично зміщуються до 5 хвилин, щоб зменшити піки навантаження. Використовуйте `--exact`, щоб примусово задати точний час, або `--stagger 30s` для явного вікна.
|
||||
Повторювані вирази на початку кожної години автоматично зсуваються на строк до 5 хвилин, щоб зменшити піки навантаження. Використовуйте `--exact`, щоб примусово встановити точний час, або `--stagger 30s` для явного вікна.
|
||||
|
||||
### День місяця і день тижня використовують логіку OR
|
||||
### День місяця та день тижня використовують логіку OR
|
||||
|
||||
Cron-вирази аналізуються за допомогою [croner](https://github.com/Hexagon/croner). Коли і поле дня місяця, і поле дня тижня не є wildcard, 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"
|
||||
@ -73,67 +81,84 @@ Cron-вирази аналізуються за допомогою [croner](http
|
||||
0 9 15 * 1
|
||||
```
|
||||
|
||||
Це спрацьовує приблизно 5–6 разів на місяць замість 0–1 разу на місяць. Тут OpenClaw використовує стандартну поведінку OR із Croner. Щоб вимагати обидві умови, використовуйте модифікатор дня тижня `+` у Croner (`0 9 15 * +1`) або плануйте за одним полем, а інше перевіряйте в prompt чи команді свого завдання.
|
||||
Це спрацьовує приблизно 5–6 разів на місяць замість 0–1 разу на місяць. OpenClaw тут використовує стандартну OR-поведінку Croner. Щоб вимагати виконання обох умов, використовуйте модифікатор дня тижня `+` із Croner (`0 9 15 * +1`) або плануйте за одним полем, а інше перевіряйте в prompt чи команді свого завдання.
|
||||
|
||||
## Стилі виконання
|
||||
|
||||
| Стиль | Значення `--session` | Виконується в | Найкраще підходить для |
|
||||
| --------------- | -------------------- | ------------------------- | ----------------------------------- |
|
||||
| Головна сесія | `main` | Наступного heartbeat-циклу | Нагадувань, системних подій |
|
||||
| Ізольований | `isolated` | Виділеній `cron:<jobId>` | Звітів, фонових завдань |
|
||||
| Стиль | Значення `--session` | Виконується в | Найкраще підходить для |
|
||||
| --------------- | -------------------- | ------------------------ | ------------------------------- |
|
||||
| Основна сесія | `main` | Наступний такт Heartbeat | Нагадувань, системних подій |
|
||||
| Ізольований | `isolated` | Виділений `cron:<jobId>` | Звітів, фонових задач |
|
||||
| Поточна сесія | `current` | Прив’язується під час створення | Періодичної роботи з урахуванням контексту |
|
||||
| Користувацька сесія | `session:custom-id` | Постійній іменованій сесії | Робочих процесів, що спираються на історію |
|
||||
| Користувацька сесія | `session:custom-id` | Постійна іменована сесія | Процесів, що будуються на історії |
|
||||
|
||||
Завдання **головної сесії** ставлять системну подію в чергу та за потреби пробуджують heartbeat (`--wake now` або `--wake next-heartbeat`). **Ізольовані** завдання запускають окремий цикл агента з новою сесією. **Користувацькі сесії** (`session:xxx`) зберігають контекст між запусками, що дає змогу будувати робочі процеси на кшталт щоденних стендапів на основі попередніх підсумків.
|
||||
Завдання **основної сесії** ставлять у чергу системну подію та за потреби пробуджують heartbeat (`--wake now` або `--wake next-heartbeat`). **Ізольовані** завдання запускають окремий хід агента з новою сесією. **Користувацькі сесії** (`session:xxx`) зберігають контекст між запусками, що дає змогу будувати процеси на кшталт щоденних стендапів, які спираються на попередні підсумки.
|
||||
|
||||
Для ізольованих завдань завершення середовища виконання тепер включає best-effort очищення браузера для цієї cron-сесії. Помилки очищення ігноруються, щоб пріоритет мав фактичний результат cron.
|
||||
Для ізольованих завдань завершення середовища виконання тепер включає best-effort очищення браузера для цієї cron-сесії. Помилки очищення ігноруються, щоб пріоритет залишався за фактичним результатом cron.
|
||||
|
||||
Коли ізольовані запуски cron оркеструють субагентів, доставка також надає перевагу фінальному виводу дочірніх елементів замість застарілого проміжного тексту батьківського елемента. Якщо дочірні елементи все ще виконуються, OpenClaw пригнічує це часткове оновлення батьківського елемента замість того, щоб оголошувати його.
|
||||
Коли ізольовані запуски cron оркеструють субагентів, доставка також надає перевагу фінальному
|
||||
результату нащадка над застарілим проміжним текстом батьківського процесу. Якщо нащадки все ще
|
||||
виконуються, OpenClaw пригнічує це часткове батьківське оновлення замість того, щоб оголошувати його.
|
||||
|
||||
### Параметри payload для ізольованих завдань
|
||||
|
||||
- `--message`: текст prompt (обов’язковий для isolated)
|
||||
- `--message`: текст prompt-а (обов’язковий для isolated)
|
||||
- `--model` / `--thinking`: перевизначення моделі та рівня thinking
|
||||
- `--light-context`: пропустити ін’єкцію bootstrap-файлу робочого простору
|
||||
- `--tools exec,read`: обмежити набір інструментів, які завдання може використовувати
|
||||
- `--light-context`: пропустити ін’єкцію файла bootstrap робочого простору
|
||||
- `--tools exec,read`: обмежити, які інструменти може використовувати завдання
|
||||
|
||||
`--model` використовує вибрану дозволену модель для цього завдання. Якщо запитана модель не дозволена, cron записує попередження в журнал і натомість повертається до вибору моделі завдання/агента за замовчуванням. Налаштовані ланцюжки fallback усе ще застосовуються, але звичайне перевизначення моделі без явного списку fallback для конкретного завдання більше не додає основну модель агента як приховану додаткову ціль повторної спроби.
|
||||
`--model` використовує вибрану дозволену модель для цього завдання. Якщо запитана модель
|
||||
не дозволена, cron записує попередження в журнал і повертається до вибору моделі агента/типової
|
||||
моделі для цього завдання. Налаштовані ланцюжки fallback, як і раніше, застосовуються, але звичайне
|
||||
перевизначення моделі без явного списку fallback для завдання більше не додає основну модель агента
|
||||
як приховану додаткову ціль для повторної спроби.
|
||||
|
||||
Пріоритет вибору моделі для ізольованих завдань:
|
||||
Пріоритет вибору моделі для ізольованих завдань такий:
|
||||
|
||||
1. Перевизначення моделі Gmail hook (коли запуск походить із Gmail і це перевизначення дозволене)
|
||||
1. Перевизначення моделі Gmail hook (коли запуск надійшов із Gmail і це перевизначення дозволене)
|
||||
2. `model` у payload конкретного завдання
|
||||
3. Збережене перевизначення моделі сесії cron
|
||||
4. Вибір моделі агента/за замовчуванням
|
||||
3. Збережене перевизначення моделі cron-сесії
|
||||
4. Вибір моделі агента/типової моделі
|
||||
|
||||
Швидкий режим також дотримується визначеного активного вибору. Якщо конфігурація вибраної моделі має `params.fastMode`, ізольований cron використовує це за замовчуванням. Збережене перевизначення сесії `fastMode` усе одно має вищий пріоритет над конфігурацією в будь-який бік.
|
||||
Fast mode також дотримується визначеного активного вибору. Якщо в конфігурації вибраної моделі
|
||||
є `params.fastMode`, ізольований cron типово використовує його. Збережене перевизначення
|
||||
`fastMode` сесії все одно має пріоритет над конфігурацією в будь-який бік.
|
||||
|
||||
Якщо ізольований запуск натрапляє на live-передавання керування під час перемикання моделі, cron виконує повторну спробу з перемкненим provider/model і зберігає цей live-вибір перед повторною спробою. Якщо перемикання також містить новий auth-профіль, cron теж зберігає це перевизначення auth-профілю. Кількість повторних спроб обмежена: після початкової спроби плюс 2 повторних спроб перемикання cron перериває роботу замість нескінченного циклу.
|
||||
Якщо ізольований запуск натрапляє на live-передавання керування перемиканню моделі, cron повторює спробу з
|
||||
перемкненим провайдером/моделлю та зберігає цей активний вибір перед повтором. Коли перемикання
|
||||
також містить новий профіль автентифікації, cron зберігає і це перевизначення профілю автентифікації.
|
||||
Кількість повторів обмежена: після початкової спроби та ще 2 повторів через перемикання cron перериває роботу,
|
||||
а не входить у нескінченний цикл.
|
||||
|
||||
## Доставка та вивід
|
||||
|
||||
| Режим | Що відбувається |
|
||||
| --------- | ------------------------------------------------------ |
|
||||
| `announce` | Надіслати підсумок у цільовий канал (типово для isolated) |
|
||||
| `webhook` | Надіслати payload події завершення POST-запитом на URL |
|
||||
| `none` | Лише внутрішньо, без доставки |
|
||||
| Режим | Що відбувається |
|
||||
| ---------- | -------------------------------------------------------- |
|
||||
| `announce` | Доставити підсумок у цільовий канал (типово для isolated) |
|
||||
| `webhook` | Надіслати payload події завершення методом POST на URL |
|
||||
| `none` | Лише внутрішнє використання, без доставки |
|
||||
|
||||
Використовуйте `--announce --channel telegram --to "-1001234567890"` для доставки в канал. Для тем форуму Telegram використовуйте `-1001234567890:topic:123`. Цілі Slack/Discord/Mattermost мають використовувати явні префікси (`channel:<id>`, `user:<id>`).
|
||||
Використовуйте `--announce --channel telegram --to "-1001234567890"` для доставки в канал. Для тем форуму Telegram використовуйте `-1001234567890:topic:123`. Для цілей Slack/Discord/Mattermost слід використовувати явні префікси (`channel:<id>`, `user:<id>`).
|
||||
|
||||
Для ізольованих завдань, якими керує cron, виконавець відповідає за фінальний шлях доставки. Агент отримує prompt повернути підсумок простим текстом, і цей підсумок потім надсилається через `announce`, `webhook` або зберігається внутрішньо для `none`. `--no-deliver` не повертає доставку під контроль агента; він залишає запуск внутрішнім.
|
||||
Для ізольованих завдань, що належать cron, runner володіє фінальним шляхом доставки. Агент
|
||||
отримує запит повернути підсумок у вигляді простого тексту, а потім цей підсумок надсилається
|
||||
через `announce`, `webhook` або зберігається лише внутрішньо для `none`. `--no-deliver`
|
||||
не повертає доставку під контроль агента; він залишає запуск внутрішнім.
|
||||
|
||||
Якщо в оригінальному завданні явно сказано надіслати повідомлення якомусь зовнішньому одержувачу, агент має вказати у своєму виводі, кому/куди це повідомлення повинно піти, замість того щоб намагатися надіслати його безпосередньо.
|
||||
Якщо початкове завдання явно вказує написати якомусь зовнішньому отримувачу, агент
|
||||
має зазначити, кому/куди має надійти це повідомлення, у своєму виводі, а не
|
||||
намагатися надіслати його безпосередньо.
|
||||
|
||||
Сповіщення про помилки використовують окремий шлях призначення:
|
||||
|
||||
- `cron.failureDestination` задає глобальне типове призначення для сповіщень про помилки.
|
||||
- `job.delivery.failureDestination` перевизначає його для конкретного завдання.
|
||||
- Якщо жодне з них не задано і завдання вже доставляє результат через `announce`, сповіщення про помилки тепер за замовчуванням надсилаються до тієї ж основної announce-цілі.
|
||||
- `cron.failureDestination` задає глобальне типове значення для сповіщень про помилки.
|
||||
- `job.delivery.failureDestination` перевизначає це для окремого завдання.
|
||||
- Якщо жодне не задано, а завдання вже доставляє через `announce`, сповіщення про помилки тепер типово використовують цю ж основну ціль `announce`.
|
||||
- `delivery.failureDestination` підтримується лише для завдань із `sessionTarget="isolated"`, якщо основний режим доставки не є `webhook`.
|
||||
|
||||
## Приклади CLI
|
||||
|
||||
Одноразове нагадування (головна сесія):
|
||||
Одноразове нагадування (основна сесія):
|
||||
|
||||
```bash
|
||||
openclaw cron add \
|
||||
@ -172,9 +197,9 @@ openclaw cron add \
|
||||
--announce
|
||||
```
|
||||
|
||||
## Вебхуки
|
||||
## Webhook-и
|
||||
|
||||
Gateway може відкривати HTTP-кінцеві точки вебхуків для зовнішніх тригерів. Увімкніть це в конфігурації:
|
||||
Gateway може відкривати кінцеві точки HTTP Webhook для зовнішніх тригерів. Увімкніть це в конфігурації:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -188,7 +213,7 @@ Gateway може відкривати HTTP-кінцеві точки вебху
|
||||
|
||||
### Автентифікація
|
||||
|
||||
Кожен запит має містити токен hook у заголовку:
|
||||
Кожен запит має включати токен hook через заголовок:
|
||||
|
||||
- `Authorization: Bearer <token>` (рекомендовано)
|
||||
- `x-openclaw-token: <token>`
|
||||
@ -197,7 +222,7 @@ Gateway може відкривати HTTP-кінцеві точки вебху
|
||||
|
||||
### POST /hooks/wake
|
||||
|
||||
Поставити системну подію в чергу для головної сесії:
|
||||
Поставити системну подію в чергу для основної сесії:
|
||||
|
||||
```bash
|
||||
curl -X POST http://127.0.0.1:18789/hooks/wake \
|
||||
@ -211,7 +236,7 @@ curl -X POST http://127.0.0.1:18789/hooks/wake \
|
||||
|
||||
### POST /hooks/agent
|
||||
|
||||
Запустити ізольований цикл агента:
|
||||
Запустити ізольований хід агента:
|
||||
|
||||
```bash
|
||||
curl -X POST http://127.0.0.1:18789/hooks/agent \
|
||||
@ -222,25 +247,25 @@ curl -X POST http://127.0.0.1:18789/hooks/agent \
|
||||
|
||||
Поля: `message` (обов’язково), `name`, `agentId`, `wakeMode`, `deliver`, `channel`, `to`, `model`, `thinking`, `timeoutSeconds`.
|
||||
|
||||
### Mapped hooks (POST /hooks/\<name\>)
|
||||
### Відображені hook-и (POST /hooks/\<name\>)
|
||||
|
||||
Користувацькі імена hook визначаються через `hooks.mappings` у конфігурації. Мапінги можуть перетворювати довільні payload на дії `wake` або `agent` за допомогою шаблонів чи кодових перетворень.
|
||||
Користувацькі назви hook-ів визначаються через `hooks.mappings` у конфігурації. Відображення можуть перетворювати довільний payload на дії `wake` або `agent` за допомогою шаблонів або перетворень коду.
|
||||
|
||||
### Безпека
|
||||
|
||||
- Тримайте кінцеві точки hook за loopback, tailnet або довіреним reverse proxy.
|
||||
- Використовуйте окремий токен hook; не використовуйте повторно токени автентифікації gateway.
|
||||
- Тримайте кінцеві точки hook-ів за loopback, tailnet або довіреним reverse proxy.
|
||||
- Використовуйте окремий токен hook-а; не використовуйте повторно токени автентифікації gateway.
|
||||
- Тримайте `hooks.path` на окремому підшляху; `/` відхиляється.
|
||||
- Установіть `hooks.allowedAgentIds`, щоб обмежити явну маршрутизацію `agentId`.
|
||||
- Залишайте `hooks.allowRequestSessionKey=false`, якщо вам не потрібні сесії, які вибирає викликач.
|
||||
- Якщо ви вмикаєте `hooks.allowRequestSessionKey`, також установіть `hooks.allowedSessionKeyPrefixes`, щоб обмежити дозволені форми ключів сесій.
|
||||
- Payload hook за замовчуванням обгортаються межами безпеки.
|
||||
- Встановіть `hooks.allowedAgentIds`, щоб обмежити явну маршрутизацію `agentId`.
|
||||
- Тримайте `hooks.allowRequestSessionKey=false`, якщо вам не потрібні сесії, які вибирає викликаюча сторона.
|
||||
- Якщо ви вмикаєте `hooks.allowRequestSessionKey`, також встановіть `hooks.allowedSessionKeyPrefixes`, щоб обмежити дозволені форми ключів сесій.
|
||||
- Payload-и hook-ів типово обгортаються захисними межами.
|
||||
|
||||
## Інтеграція Gmail PubSub
|
||||
|
||||
Підключіть тригери вхідної пошти Gmail до OpenClaw через Google PubSub.
|
||||
Підключіть тригери вхідних Gmail до OpenClaw через Google PubSub.
|
||||
|
||||
**Передумови**: CLI `gcloud`, `gog` (gogcli), увімкнені hook в OpenClaw, Tailscale для публічної HTTPS-кінцевої точки.
|
||||
**Передумови**: CLI `gcloud`, `gog` (gogcli), увімкнені hooks OpenClaw, Tailscale для публічної кінцевої точки HTTPS.
|
||||
|
||||
### Налаштування через майстер (рекомендовано)
|
||||
|
||||
@ -248,11 +273,11 @@ curl -X POST http://127.0.0.1:18789/hooks/agent \
|
||||
openclaw webhooks gmail setup --account openclaw@gmail.com
|
||||
```
|
||||
|
||||
Це записує конфігурацію `hooks.gmail`, вмикає пресет Gmail і використовує Tailscale Funnel для push-кінцевої точки.
|
||||
Це записує конфігурацію `hooks.gmail`, вмикає preset 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` і автоматично поновлює watch. Щоб відмовитися, встановіть `OPENCLAW_SKIP_GMAIL_WATCHER=1`.
|
||||
|
||||
### Ручне одноразове налаштування
|
||||
|
||||
@ -264,7 +289,7 @@ gcloud config set project <project-id>
|
||||
gcloud services enable gmail.googleapis.com pubsub.googleapis.com
|
||||
```
|
||||
|
||||
2. Створіть topic і надайте Gmail доступ для push:
|
||||
2. Створіть topic і надайте Gmail доступ на push:
|
||||
|
||||
```bash
|
||||
gcloud pubsub topics create gog-gmail-watch
|
||||
@ -324,9 +349,13 @@ openclaw cron edit <jobId> --clear-agent
|
||||
Примітка щодо перевизначення моделі:
|
||||
|
||||
- `openclaw cron add|edit --model ...` змінює вибрану модель завдання.
|
||||
- Якщо модель дозволена, саме цей точний provider/model потрапляє до ізольованого запуску агента.
|
||||
- Якщо вона не дозволена, cron видає попередження й повертається до вибору моделі завдання/агента за замовчуванням.
|
||||
- Налаштовані ланцюжки fallback усе ще застосовуються, але звичайне перевизначення `--model` без явного списку fallback для конкретного завдання більше не переходить до основної моделі агента як до тихої додаткової цілі повторної спроби.
|
||||
- Якщо модель дозволена, саме цей провайдер/модель передається ізольованому
|
||||
запуску агента.
|
||||
- Якщо вона не дозволена, cron видає попередження і повертається до вибору
|
||||
моделі агента/типової моделі для цього завдання.
|
||||
- Налаштовані ланцюжки fallback, як і раніше, застосовуються, але звичайне перевизначення `--model`
|
||||
без явного списку fallback для завдання більше не переходить до основної моделі агента
|
||||
як до тихої додаткової цілі повторної спроби.
|
||||
|
||||
## Конфігурація
|
||||
|
||||
@ -348,15 +377,19 @@ openclaw cron edit <jobId> --clear-agent
|
||||
}
|
||||
```
|
||||
|
||||
Вимкнення cron: `cron.enabled: false` або `OPENCLAW_SKIP_CRON=1`.
|
||||
Файл sidecar стану виконання виводиться з `cron.store`: сховище `.json`, таке як
|
||||
`~/clawd/cron/jobs.json`, використовує `~/clawd/cron/jobs-state.json`, тоді як до шляху сховища
|
||||
без суфікса `.json` додається `-state.json`.
|
||||
|
||||
**Повтор одноразового завдання**: тимчасові помилки (обмеження швидкості, перевантаження, мережа, помилка сервера) повторюються до 3 разів з експоненційним backoff. Постійні помилки негайно вимикаються.
|
||||
Вимкнути cron: `cron.enabled: false` або `OPENCLAW_SKIP_CRON=1`.
|
||||
|
||||
**Повтор періодичного завдання**: експоненційний backoff (від 30 с до 60 хв) між повторними спробами. Після наступного успішного запуску backoff скидається.
|
||||
**Повтор одноразового завдання**: тимчасові помилки (rate limit, overload, network, server error) повторюються до 3 разів з експоненційною затримкою. Постійні помилки вимикаються негайно.
|
||||
|
||||
**Обслуговування**: `cron.sessionRetention` (типово `24h`) очищає записи сесій ізольованих запусків. `cron.runLog.maxBytes` / `cron.runLog.keepLines` автоматично обрізають файли журналу запусків.
|
||||
**Повтор періодичного завдання**: експоненційна затримка (від 30 с до 60 хв) між повторними спробами. Після наступного успішного запуску затримка скидається.
|
||||
|
||||
## Усунення несправностей
|
||||
**Обслуговування**: `cron.sessionRetention` (типово `24h`) очищає записи сесій ізольованих запусків. `cron.runLog.maxBytes` / `cron.runLog.keepLines` автоматично очищають файли журналу запусків.
|
||||
|
||||
## Усунення проблем
|
||||
|
||||
### Послідовність команд
|
||||
|
||||
@ -375,16 +408,20 @@ openclaw doctor
|
||||
|
||||
- Перевірте `cron.enabled` і змінну середовища `OPENCLAW_SKIP_CRON`.
|
||||
- Переконайтеся, що Gateway працює безперервно.
|
||||
- Для розкладів `cron` перевірте часовий пояс (`--tz`) порівняно з часовим поясом хоста.
|
||||
- `reason: not-due` у виводі запуску означає, що ручний запуск було перевірено через `openclaw cron run <jobId> --due`, і час виконання завдання ще не настав.
|
||||
- Для розкладів `cron` перевірте часовий пояс (`--tz`) у порівнянні з часовим поясом хоста.
|
||||
- `reason: not-due` у виводі запуску означає, що ручний запуск було перевірено через `openclaw cron run <jobId> --due`, але час виконання завдання ще не настав.
|
||||
|
||||
### Cron спрацював, але доставки немає
|
||||
|
||||
- Режим доставки `none` означає, що зовнішнє повідомлення не очікується.
|
||||
- Відсутня/некоректна ціль доставки (`channel`/`to`) означає, що вихідне надсилання було пропущено.
|
||||
- Помилки автентифікації каналу (`unauthorized`, `Forbidden`) означають, що доставку заблоковано обліковими даними.
|
||||
- Якщо ізольований запуск повертає лише тихий токен (`NO_REPLY` / `no_reply`), OpenClaw пригнічує пряму вихідну доставку, а також пригнічує резервний шлях із постановкою підсумку в чергу, тому назад у чат нічого не публікується.
|
||||
- Для ізольованих завдань, якими керує cron, не очікуйте, що агент використовуватиме message tool як резервний варіант. Виконавець керує фінальною доставкою; `--no-deliver` натомість залишає її внутрішньою.
|
||||
- Помилки автентифікації каналу (`unauthorized`, `Forbidden`) означають, що доставку було заблоковано обліковими даними.
|
||||
- Якщо ізольований запуск повертає лише silent token (`NO_REPLY` / `no_reply`),
|
||||
OpenClaw пригнічує пряме вихідне надсилання, а також пригнічує резервний
|
||||
шлях доставки підсумку через чергу, тому назад у чат нічого не публікується.
|
||||
- Для ізольованих завдань, що належать cron, не очікуйте, що агент використовуватиме message tool
|
||||
як fallback. Runner володіє фінальною доставкою; `--no-deliver` залишає її
|
||||
внутрішньою замість того, щоб дозволяти пряме надсилання.
|
||||
|
||||
### Особливості часових поясів
|
||||
|
||||
@ -394,7 +431,7 @@ openclaw doctor
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Автоматизація й завдання](/uk/automation) — усі механізми автоматизації з одного погляду
|
||||
- [Автоматизація та завдання](/uk/automation) — усі механізми автоматизації з першого погляду
|
||||
- [Фонові завдання](/uk/automation/tasks) — журнал завдань для виконань cron
|
||||
- [Heartbeat](/uk/gateway/heartbeat) — періодичні цикли головної сесії
|
||||
- [Часовий пояс](/uk/concepts/timezone) — конфігурація часового поясу
|
||||
- [Heartbeat](/uk/gateway/heartbeat) — періодичні ходи основної сесії
|
||||
- [Часовий пояс](/uk/concepts/timezone) — налаштування часового поясу
|
||||
|
||||
@ -1,60 +1,56 @@
|
||||
---
|
||||
read_when:
|
||||
- Перегляд фонової роботи, що виконується або нещодавно завершилася
|
||||
- Налагодження збоїв доставки для відокремлених запусків агента
|
||||
- Розуміння того, як фонові запуски пов’язані із сеансами, cron і heartbeat
|
||||
summary: Відстеження фонових завдань для запусків ACP, субагентів, ізольованих cron-завдань і операцій CLI
|
||||
- Перевірка фонової роботи, що виконується або нещодавно завершилася
|
||||
- Налагодження збоїв доставки для відокремлених запусків агентів
|
||||
- Розуміння того, як фонові запуски пов’язані із сеансами, Cron і Heartbeat
|
||||
summary: Відстеження фонових завдань для запусків ACP, субагентів, ізольованих завдань Cron і операцій CLI
|
||||
title: Фонові завдання
|
||||
x-i18n:
|
||||
generated_at: "2026-04-09T11:48:34Z"
|
||||
generated_at: "2026-04-20T18:25:02Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: d7b5ba41f1025e0089986342ce85698bc62f676439c3ccf03f3ed146beb1b1ac
|
||||
source_hash: ba5511b1c421bdf505fc7d34f09e453ac44e85213fcb0f082078fa957aa91fe7
|
||||
source_path: automation/tasks.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Фонові завдання
|
||||
|
||||
> **Шукаєте планування?** Див. [Автоматизація й завдання](/uk/automation), щоб вибрати правильний механізм. Ця сторінка присвячена **відстеженню** фонової роботи, а не її плануванню.
|
||||
> **Шукаєте планування?** Див. [Автоматизація й завдання](/uk/automation), щоб вибрати правильний механізм. Ця сторінка описує **відстеження** фонової роботи, а не її планування.
|
||||
|
||||
Фонові завдання відстежують роботу, яка виконується **поза межами вашого основного сеансу розмови**:
|
||||
запуски ACP, створення субагентів, виконання ізольованих cron-завдань і операції, ініційовані через CLI.
|
||||
запуски ACP, створення субагентів, виконання ізольованих завдань Cron і операції, ініційовані через CLI.
|
||||
|
||||
Завдання **не** замінюють сеанси, cron-завдання або heartbeat — це **журнал активності**, який фіксує, яка відокремлена робота відбулася, коли саме і чи була вона успішною.
|
||||
Завдання **не** замінюють сеанси, завдання Cron або Heartbeat — це **журнал активності**, який фіксує, яка відокремлена робота відбулася, коли саме та чи була вона успішною.
|
||||
|
||||
<Note>
|
||||
Не кожен запуск агента створює завдання. Heartbeat-цикли та звичайний інтерактивний чат цього не роблять. Усі cron-виконання, ACP-створення, створення субагентів і команди агента CLI — так.
|
||||
Не кожен запуск агента створює завдання. Ходи Heartbeat і звичайний інтерактивний чат — ні. Усі виконання Cron, створення ACP, створення субагентів і команди агента CLI — так.
|
||||
</Note>
|
||||
|
||||
## Коротко
|
||||
|
||||
- Завдання — це **записи**, а не планувальники: cron і heartbeat вирішують, _коли_ виконується робота, а завдання відстежують, _що сталося_.
|
||||
- ACP, субагенти, усі cron-завдання та операції CLI створюють завдання. Heartbeat-цикли — ні.
|
||||
- Кожне завдання проходить через `queued → running → terminal` (succeeded, failed, timed_out, cancelled або lost).
|
||||
- Cron-завдання залишаються активними, поки середовище виконання cron усе ще володіє завданням; CLI-завдання на основі чату залишаються активними лише доти, доки активний їхній контекст запуску.
|
||||
- Завершення працює за push-моделлю: відокремлена робота може напряму сповістити або пробудити
|
||||
сеанс/heartbeat запитувача після завершення, тому цикли опитування стану
|
||||
зазвичай є невдалим підходом.
|
||||
- Ізольовані cron-запуски та завершення субагентів у межах best-effort очищають відстежувані вкладки/процеси браузера для свого дочірнього сеансу перед фінальним обліком очищення.
|
||||
- Доставка для ізольованого cron пригнічує застарілі проміжні відповіді батьківського процесу, поки
|
||||
дочірня робота субагентів іще завершується, і надає перевагу фінальному дочірньому
|
||||
виводу, якщо він надходить до доставки.
|
||||
- Сповіщення про завершення доставляються безпосередньо в канал або ставляться в чергу до наступного heartbeat.
|
||||
- Завдання — це **записи**, а не планувальники: Cron і Heartbeat вирішують, _коли_ запускається робота, а завдання відстежують, _що сталося_.
|
||||
- ACP, субагенти, усі завдання Cron і операції CLI створюють завдання. Ходи Heartbeat — ні.
|
||||
- Кожне завдання проходить шлях `queued → running → terminal` (`succeeded`, `failed`, `timed_out`, `cancelled` або `lost`).
|
||||
- Завдання Cron залишаються активними, поки середовище виконання Cron усе ще володіє цим завданням; чат-орієнтовані завдання CLI залишаються активними лише доти, доки їхній контекст запуску-власник усе ще активний.
|
||||
- Завершення працює за push-моделлю: відокремлена робота може напряму сповістити або пробудити сеанс/Heartbeat запитувача після завершення, тому цикли опитування стану зазвичай є неправильною моделлю.
|
||||
- Ізольовані запуски Cron і завершення субагентів у режимі best-effort очищають відстежувані вкладки браузера/процеси для свого дочірнього сеансу перед фінальним обліком очищення.
|
||||
- Доставка ізольованого Cron пригнічує застарілі проміжні відповіді батьківського процесу, поки ще триває завершення нащадків-субагентів, і надає перевагу фінальному виводу нащадка, якщо він надходить до доставки.
|
||||
- Сповіщення про завершення доставляються безпосередньо в канал або ставляться в чергу до наступного Heartbeat.
|
||||
- `openclaw tasks list` показує всі завдання; `openclaw tasks audit` виявляє проблеми.
|
||||
- Термінальні записи зберігаються 7 днів, а потім автоматично очищаються.
|
||||
- Термінальні записи зберігаються 7 днів, після чого автоматично видаляються.
|
||||
|
||||
## Швидкий старт
|
||||
|
||||
```bash
|
||||
# Показати всі завдання (спочатку найновіші)
|
||||
# Перелічити всі завдання (спочатку найновіші)
|
||||
openclaw tasks list
|
||||
|
||||
# Фільтрувати за середовищем виконання або статусом
|
||||
# Відфільтрувати за середовищем виконання або статусом
|
||||
openclaw tasks list --runtime acp
|
||||
openclaw tasks list --status running
|
||||
|
||||
# Показати подробиці конкретного завдання (за ID, ID запуску або ключем сеансу)
|
||||
# Показати подробиці для конкретного завдання (за ID, run ID або session key)
|
||||
openclaw tasks show <lookup>
|
||||
|
||||
# Скасувати запущене завдання (завершує дочірній сеанс)
|
||||
@ -63,7 +59,7 @@ openclaw tasks cancel <lookup>
|
||||
# Змінити політику сповіщень для завдання
|
||||
openclaw tasks notify <lookup> state_changes
|
||||
|
||||
# Запустити аудит стану
|
||||
# Виконати аудит працездатності
|
||||
openclaw tasks audit
|
||||
|
||||
# Переглянути або застосувати обслуговування
|
||||
@ -78,24 +74,24 @@ openclaw tasks flow cancel <lookup>
|
||||
|
||||
## Що створює завдання
|
||||
|
||||
| Джерело | Тип середовища виконання | Коли створюється запис завдання | Типова політика сповіщень |
|
||||
| ---------------------- | ------------------------ | ---------------------------------------------------- | ------------------------- |
|
||||
| Фонові запуски ACP | `acp` | Створення дочірнього сеансу ACP | `done_only` |
|
||||
| Оркестрація субагентів | `subagent` | Створення субагента через `sessions_spawn` | `done_only` |
|
||||
| Cron-завдання (усі типи) | `cron` | Кожне виконання cron (основний сеанс та ізольований) | `silent` |
|
||||
| Операції CLI | `cli` | Команди `openclaw agent`, що виконуються через шлюз | `silent` |
|
||||
| Медіазавдання агента | `cli` | Запуски `video_generate` на основі сеансу | `silent` |
|
||||
| Джерело | Тип середовища виконання | Коли створюється запис завдання | Політика сповіщень за замовчуванням |
|
||||
| ---------------------- | ------------------------ | ------------------------------------------------------ | ----------------------------------- |
|
||||
| Фонові запуски ACP | `acp` | Створення дочірнього сеансу ACP | `done_only` |
|
||||
| Оркестрація субагентів | `subagent` | Створення субагента через `sessions_spawn` | `done_only` |
|
||||
| Завдання Cron (усі типи) | `cron` | Кожне виконання Cron (основний сеанс та ізольований) | `silent` |
|
||||
| Операції CLI | `cli` | Команди `openclaw agent`, що виконуються через Gateway | `silent` |
|
||||
| Медіазавдання агента | `cli` | Запуски `video_generate`, прив’язані до сеансу | `silent` |
|
||||
|
||||
Cron-завдання основного сеансу типово використовують політику сповіщень `silent` — вони створюють записи для відстеження, але не генерують сповіщень. Ізольовані cron-завдання також типово мають `silent`, але помітніші, бо виконуються у власному сеансі.
|
||||
Завдання Cron основного сеансу за замовчуванням використовують політику сповіщень `silent` — вони створюють записи для відстеження, але не генерують сповіщень. Ізольовані завдання Cron також за замовчуванням мають `silent`, але є помітнішими, оскільки виконуються у власному сеансі.
|
||||
|
||||
Запуски `video_generate` на основі сеансу також використовують політику сповіщень `silent`. Вони все одно створюють записи завдань, але завершення передається назад у вихідний сеанс агента як внутрішнє пробудження, щоб агент міг сам написати подальше повідомлення й прикріпити готове відео. Якщо ви вмикаєте `tools.media.asyncCompletion.directSend`, асинхронні завершення `music_generate` і `video_generate` спочатку намагаються доставити результат безпосередньо в канал, а вже потім повертаються до шляху пробудження сеансу запитувача.
|
||||
Запуски `video_generate`, прив’язані до сеансу, також використовують політику сповіщень `silent`. Вони все одно створюють записи завдань, але завершення повертається до початкового сеансу агента як внутрішнє пробудження, щоб агент міг сам написати наступне повідомлення й прикріпити готове відео. Якщо ви ввімкнете `tools.media.asyncCompletion.directSend`, асинхронні завершення `music_generate` і `video_generate` спочатку намагатимуться доставити результат безпосередньо в канал, а вже потім повертатимуться до шляху пробудження сеансу запитувача.
|
||||
|
||||
Поки завдання `video_generate` на основі сеансу ще активне, інструмент також виконує роль запобіжника: повторні виклики `video_generate` у тому самому сеансі повертають статус активного завдання замість запуску другого паралельного генерування. Використовуйте `action: "status"`, якщо вам потрібен явний запит прогресу/стану з боку агента.
|
||||
Поки завдання `video_generate`, прив’язане до сеансу, все ще активне, інструмент також діє як захисне обмеження: повторні виклики `video_generate` у цьому самому сеансі повертають статус активного завдання замість запуску другого паралельного генерування. Використовуйте `action: "status"`, якщо вам потрібен явний перегляд прогресу/статусу з боку агента.
|
||||
|
||||
**Що не створює завдання:**
|
||||
**Що не створює завдань:**
|
||||
|
||||
- Heartbeat-цикли — основний сеанс; див. [Heartbeat](/uk/gateway/heartbeat)
|
||||
- Звичайні інтерактивні цикли чату
|
||||
- Ходи Heartbeat — основний сеанс; див. [Heartbeat](/uk/gateway/heartbeat)
|
||||
- Звичайні ходи інтерактивного чату
|
||||
- Прямі відповіді `/command`
|
||||
|
||||
## Життєвий цикл завдання
|
||||
@ -112,52 +108,50 @@ stateDiagram-v2
|
||||
running --> lost : session gone > 5 min
|
||||
```
|
||||
|
||||
| Статус | Що це означає |
|
||||
| ----------- | ----------------------------------------------------------------------- |
|
||||
| `queued` | Створено, очікує на запуск агента |
|
||||
| `running` | Цикл агента активно виконується |
|
||||
| `succeeded` | Успішно завершено |
|
||||
| `failed` | Завершено з помилкою |
|
||||
| `timed_out` | Перевищено налаштований тайм-аут |
|
||||
| `cancelled` | Зупинено оператором через `openclaw tasks cancel` |
|
||||
| `lost` | Середовище виконання втратило авторитетний базовий стан після 5-хвилинного пільгового періоду |
|
||||
| Статус | Що це означає |
|
||||
| ----------- | -------------------------------------------------------------------------- |
|
||||
| `queued` | Створено, очікує на запуск агента |
|
||||
| `running` | Хід агента активно виконується |
|
||||
| `succeeded` | Успішно завершено |
|
||||
| `failed` | Завершено з помилкою |
|
||||
| `timed_out` | Перевищено налаштований час очікування |
|
||||
| `cancelled` | Зупинено оператором через `openclaw tasks cancel` |
|
||||
| `lost` | Середовище виконання втратило авторитетний стан-основу після 5-хвилинного пільгового періоду |
|
||||
|
||||
Переходи відбуваються автоматично — коли пов’язаний запуск агента завершується, статус завдання оновлюється відповідно.
|
||||
Переходи відбуваються автоматично — коли пов’язаний запуск агента завершується, статус завдання оновлюється відповідно до результату.
|
||||
|
||||
`lost` залежить від середовища виконання:
|
||||
`lost` є залежним від середовища виконання:
|
||||
|
||||
- Завдання ACP: зникли метадані дочірнього сеансу ACP.
|
||||
- Завдання субагента: дочірній сеанс зник зі сховища цільового агента.
|
||||
- Cron-завдання: середовище виконання cron більше не відстежує завдання як активне.
|
||||
- Завдання CLI: завдання ізольованого дочірнього сеансу використовують дочірній сеанс; CLI-завдання на основі чату натомість використовують живий контекст запуску, тому завислі рядки сеансу каналу/групи/прямого чату не підтримують їхню активність.
|
||||
- Завдання ACP: зникли метадані дочірнього сеансу ACP, на які спиралося завдання.
|
||||
- Завдання субагента: дочірній сеанс-основа зник зі сховища цільового агента.
|
||||
- Завдання Cron: середовище виконання Cron більше не відстежує завдання як активне.
|
||||
- Завдання CLI: ізольовані завдання дочірнього сеансу використовують дочірній сеанс; чат-орієнтовані завдання CLI натомість використовують живий контекст запуску, тому завислі рядки сеансів каналу/групи/прямих повідомлень не підтримують їх у живому стані.
|
||||
|
||||
## Доставка та сповіщення
|
||||
## Доставка і сповіщення
|
||||
|
||||
Коли завдання досягає термінального стану, OpenClaw сповіщає вас. Є два шляхи доставки:
|
||||
Коли завдання досягає термінального стану, OpenClaw надсилає вам сповіщення. Є два шляхи доставки:
|
||||
|
||||
**Пряма доставка** — якщо завдання має ціль каналу (`requesterOrigin`), повідомлення про завершення надсилається прямо в цей канал (Telegram, Discord, Slack тощо). Для завершень субагента OpenClaw також зберігає прив’язану маршрутизацію thread/topic, якщо вона доступна, і може заповнити відсутній `to` / обліковий запис зі збереженого маршруту сеансу запитувача (`lastChannel` / `lastTo` / `lastAccountId`), перш ніж відмовитися від прямої доставки.
|
||||
**Пряма доставка** — якщо завдання має ціль каналу (`requesterOrigin`), повідомлення про завершення надсилається прямо в цей канал (Telegram, Discord, Slack тощо). Для завершення субагента OpenClaw також зберігає прив’язане маршрутизування thread/topic, коли воно доступне, і може заповнити відсутні `to` / account із збереженого маршруту сеансу запитувача (`lastChannel` / `lastTo` / `lastAccountId`) перед тим, як відмовитися від прямої доставки.
|
||||
|
||||
**Доставка через чергу сеансу** — якщо пряма доставка не вдається або не задано origin, оновлення ставиться в чергу як системна подія в сеансі запитувача й з’являється під час наступного heartbeat.
|
||||
**Доставка через чергу сеансу** — якщо пряма доставка не вдалася або origin не задано, оновлення ставиться в чергу як системна подія в сеансі запитувача й з’являється під час наступного Heartbeat.
|
||||
|
||||
<Tip>
|
||||
Завершення завдання негайно запускає пробудження heartbeat, тож ви швидко бачите результат — вам не потрібно чекати на наступний запланований heartbeat-тик.
|
||||
Завершення завдання негайно запускає пробудження Heartbeat, щоб ви швидко побачили результат — вам не потрібно чекати наступного запланованого тіку Heartbeat.
|
||||
</Tip>
|
||||
|
||||
Це означає, що типовий робочий процес побудовано на push-моделі: достатньо один раз запустити
|
||||
відокремлену роботу, а далі дозволити середовищу виконання пробудити або сповістити вас після завершення. Опитуйте стан завдання лише тоді, коли
|
||||
потрібні налагодження, втручання або явний аудит.
|
||||
Це означає, що типовий робочий процес побудований на push-моделі: один раз запускаєте відокремлену роботу, а далі середовище виконання саме пробуджує або сповіщає вас після завершення. Опитуйте стан завдання лише тоді, коли вам потрібні налагодження, втручання або явний аудит.
|
||||
|
||||
### Політики сповіщень
|
||||
|
||||
Керуйте тим, скільки інформації ви отримуєте про кожне завдання:
|
||||
|
||||
| Політика | Що доставляється |
|
||||
| --------------------- | -------------------------------------------------------------------------- |
|
||||
| `done_only` (типово) | Лише термінальний стан (succeeded, failed тощо) — **це типове значення** |
|
||||
| `state_changes` | Кожен перехід стану та оновлення прогресу |
|
||||
| `silent` | Нічого |
|
||||
| Політика | Що доставляється |
|
||||
| --------------------- | ----------------------------------------------------------------------- |
|
||||
| `done_only` (default) | Лише термінальний стан (`succeeded`, `failed` тощо) — **це значення за замовчуванням** |
|
||||
| `state_changes` | Кожна зміна стану та оновлення прогресу |
|
||||
| `silent` | Нічого |
|
||||
|
||||
Змініть політику, поки завдання виконується:
|
||||
Змінити політику під час виконання завдання:
|
||||
|
||||
```bash
|
||||
openclaw tasks notify <lookup> state_changes
|
||||
@ -171,7 +165,7 @@ openclaw tasks notify <lookup> state_changes
|
||||
openclaw tasks list [--runtime <acp|subagent|cron|cli>] [--status <status>] [--json]
|
||||
```
|
||||
|
||||
Стовпці виводу: ID завдання, тип, статус, доставка, ID запуску, дочірній сеанс, зведення.
|
||||
Стовпці виводу: ID завдання, Тип, Статус, Доставка, Run ID, Дочірній сеанс, Підсумок.
|
||||
|
||||
### `tasks show`
|
||||
|
||||
@ -179,7 +173,7 @@ openclaw tasks list [--runtime <acp|subagent|cron|cli>] [--status <status>] [--j
|
||||
openclaw tasks show <lookup>
|
||||
```
|
||||
|
||||
Маркер пошуку може бути ID завдання, ID запуску або ключем сеансу. Показує повний запис, зокрема часові дані, стан доставки, помилку й термінальне зведення.
|
||||
Токен lookup приймає ID завдання, run ID або ключ сеансу. Показує повний запис, включно з часом, станом доставки, помилкою та термінальним підсумком.
|
||||
|
||||
### `tasks cancel`
|
||||
|
||||
@ -187,7 +181,7 @@ openclaw tasks show <lookup>
|
||||
openclaw tasks cancel <lookup>
|
||||
```
|
||||
|
||||
Для завдань ACP і субагентів це завершує дочірній сеанс. Для завдань, що відстежуються через CLI, скасування фіксується в реєстрі завдань (окремого дескриптора дочірнього середовища виконання немає). Статус переходить у `cancelled`, і коли це доречно, надсилається сповіщення про доставку.
|
||||
Для завдань ACP і субагентів це завершує дочірній сеанс. Для завдань, що відстежуються через CLI, скасування фіксується в реєстрі завдань (окремого дескриптора дочірнього середовища виконання немає). Статус переходить у `cancelled`, і, коли це доречно, надсилається сповіщення про доставку.
|
||||
|
||||
### `tasks notify`
|
||||
|
||||
@ -201,16 +195,16 @@ openclaw tasks notify <lookup> <done_only|state_changes|silent>
|
||||
openclaw tasks audit [--json]
|
||||
```
|
||||
|
||||
Виявляє операційні проблеми. Якщо проблеми виявлено, результати також з’являються в `openclaw status`.
|
||||
Виявляє операційні проблеми. За наявності проблем результати також з’являються в `openclaw status`.
|
||||
|
||||
| Результат | Серйозність | Умова |
|
||||
| --------------------------- | ----------- | ------------------------------------------------------- |
|
||||
| `stale_queued` | warn | У стані черги понад 10 хвилин |
|
||||
| `stale_running` | error | Виконується понад 30 хвилин |
|
||||
| `lost` | error | Зникло володіння завданням із боку середовища виконання |
|
||||
| `delivery_failed` | warn | Доставка не вдалася, і політика сповіщень не `silent` |
|
||||
| `missing_cleanup` | warn | Термінальне завдання без часової позначки очищення |
|
||||
| `inconsistent_timestamps` | warn | Порушення часової послідовності (наприклад, завершено раніше, ніж розпочато) |
|
||||
| Ознака проблеми | Серйозність | Тригер |
|
||||
| -------------------------- | ----------- | ----------------------------------------------------- |
|
||||
| `stale_queued` | warn | У черзі понад 10 хвилин |
|
||||
| `stale_running` | error | Виконується понад 30 хвилин |
|
||||
| `lost` | error | Зникла належність завдання до середовища виконання |
|
||||
| `delivery_failed` | warn | Доставка не вдалася, а політика сповіщень не `silent` |
|
||||
| `missing_cleanup` | warn | Термінальне завдання без часової позначки очищення |
|
||||
| `inconsistent_timestamps` | warn | Порушення часової шкали (наприклад, завершено раніше, ніж розпочато) |
|
||||
|
||||
### `tasks maintenance`
|
||||
|
||||
@ -219,22 +213,20 @@ openclaw tasks maintenance [--json]
|
||||
openclaw tasks maintenance --apply [--json]
|
||||
```
|
||||
|
||||
Використовуйте це, щоб переглянути або застосувати звіряння, позначення очищення та очищення застарілих записів
|
||||
для завдань і стану Task Flow.
|
||||
Використовуйте це, щоб переглянути або застосувати звіряння, проставлення позначок очищення та видалення застарілих даних для завдань і стану Task Flow.
|
||||
|
||||
Звіряння залежить від середовища виконання:
|
||||
|
||||
- Завдання ACP/субагентів перевіряють свій базовий дочірній сеанс.
|
||||
- Cron-завдання перевіряють, чи середовище виконання cron усе ще володіє завданням.
|
||||
- CLI-завдання на основі чату перевіряють базовий живий контекст запуску, а не лише рядок сеансу чату.
|
||||
- Завдання ACP/субагентів перевіряють свій дочірній сеанс-основу.
|
||||
- Завдання Cron перевіряють, чи середовище виконання Cron усе ще володіє цим завданням.
|
||||
- Чат-орієнтовані завдання CLI перевіряють контекст активного запуску-власника, а не лише рядок чат-сеансу.
|
||||
|
||||
Очищення після завершення також залежить від середовища виконання:
|
||||
|
||||
- Після завершення субагента в межах best-effort закриваються відстежувані вкладки/процеси браузера для дочірнього сеансу, перш ніж продовжується очищення з оголошенням.
|
||||
- Після завершення ізольованого cron у межах best-effort закриваються відстежувані вкладки/процеси браузера для cron-сеансу, перш ніж виконання повністю згортається.
|
||||
- Доставка для ізольованого cron за потреби очікує завершення дочірніх дій субагента
|
||||
і пригнічує застарілий текст підтвердження від батьківського процесу замість його оголошення.
|
||||
- Доставка завершення субагента надає перевагу найновішому видимому тексту помічника; якщо його немає, використовується очищений найновіший текст tool/toolResult, а запуски лише з викликом інструмента, що завершилися тайм-аутом, можуть стискатися до короткого підсумку часткового прогресу.
|
||||
- Під час завершення субагента в режимі best-effort закриваються відстежувані вкладки браузера/процеси для дочірнього сеансу, перш ніж продовжиться очищення оголошення.
|
||||
- Під час завершення ізольованого Cron у режимі best-effort закриваються відстежувані вкладки браузера/процеси для сеансу Cron, перш ніж виконання буде повністю згорнуто.
|
||||
- Доставка ізольованого Cron за потреби очікує завершення подальших дій нащадків-субагентів і пригнічує застарілий текст підтвердження батьківського процесу замість його оголошення.
|
||||
- Доставка завершення субагента надає перевагу найновішому видимому тексту асистента; якщо він порожній, використовується очищений найновіший текст `tool`/`toolResult`, а запуски лише з викликом інструмента, що завершилися через тайм-аут, можуть згортатися до короткого підсумку часткового прогресу.
|
||||
- Помилки очищення не маскують реальний результат завдання.
|
||||
|
||||
### `tasks flow list|show|cancel`
|
||||
@ -245,36 +237,33 @@ openclaw tasks flow show <lookup> [--json]
|
||||
openclaw tasks flow cancel <lookup>
|
||||
```
|
||||
|
||||
Використовуйте це, коли вас цікавить саме оркеструвальний Task Flow,
|
||||
а не окремий запис фонового завдання.
|
||||
Використовуйте ці команди, коли вас цікавить саме оркеструвальний Task Flow, а не окремий запис фонового завдання.
|
||||
|
||||
## Дошка завдань чату (`/tasks`)
|
||||
|
||||
Використовуйте `/tasks` у будь-якому сеансі чату, щоб побачити фонові завдання, пов’язані з цим сеансом. Дошка показує
|
||||
активні та нещодавно завершені завдання з середовищем виконання, статусом, часом і деталями прогресу або помилки.
|
||||
Використовуйте `/tasks` у будь-якому чат-сеансі, щоб побачити фонові завдання, пов’язані з цим сеансом. Дошка показує
|
||||
активні й нещодавно завершені завдання з інформацією про середовище виконання, статус, час, а також подробицями прогресу або помилки.
|
||||
|
||||
Коли поточний сеанс не має видимих пов’язаних завдань, `/tasks` повертається до локальних для агента лічильників завдань,
|
||||
щоб ви все одно мали загальний огляд без розкриття деталей інших сеансів.
|
||||
Якщо в поточному сеансі немає видимих пов’язаних завдань, `/tasks` переключається на локальні для агента підрахунки завдань,
|
||||
щоб ви все одно бачили огляд без витоку подробиць з інших сеансів.
|
||||
|
||||
Для повного журналу оператора використовуйте CLI: `openclaw tasks list`.
|
||||
|
||||
## Інтеграція статусу (навантаження завдань)
|
||||
## Інтеграція статусу (тиск завдань)
|
||||
|
||||
`openclaw status` містить короткий підсумок завдань:
|
||||
`openclaw status` містить стислий підсумок завдань:
|
||||
|
||||
```
|
||||
Tasks: 3 queued · 2 running · 1 issues
|
||||
```
|
||||
|
||||
Підсумок повідомляє:
|
||||
Підсумок показує:
|
||||
|
||||
- **active** — кількість `queued` + `running`
|
||||
- **failures** — кількість `failed` + `timed_out` + `lost`
|
||||
- **byRuntime** — розподіл за `acp`, `subagent`, `cron`, `cli`
|
||||
- **byRuntime** — розбивка за `acp`, `subagent`, `cron`, `cli`
|
||||
|
||||
І `/status`, і інструмент `session_status` використовують знімок завдань з урахуванням очищення: активні завдання
|
||||
мають пріоритет, застарілі завершені рядки приховуються, а нещодавні збої показуються лише тоді, коли не лишається
|
||||
активної роботи. Це дає змогу картці статусу зосереджуватися на тому, що важливо саме зараз.
|
||||
І `/status`, і інструмент `session_status` використовують знімок завдань з урахуванням очищення: пріоритет надається активним завданням, застарілі завершені рядки приховуються, а нещодавні збої показуються лише тоді, коли активної роботи вже не залишилося. Це допомагає картці статусу зосереджуватися на тому, що важливо саме зараз.
|
||||
|
||||
## Зберігання та обслуговування
|
||||
|
||||
@ -286,35 +275,35 @@ Tasks: 3 queued · 2 running · 1 issues
|
||||
$OPENCLAW_STATE_DIR/tasks/runs.sqlite
|
||||
```
|
||||
|
||||
Реєстр завантажується в пам’ять під час запуску шлюзу й синхронізує записи до SQLite для надійності після перезапусків.
|
||||
Реєстр завантажується в пам’ять під час запуску Gateway і синхронізує записи в SQLite для надійності між перезапусками.
|
||||
|
||||
### Автоматичне обслуговування
|
||||
|
||||
Очищувач запускається кожні **60 секунд** і виконує три завдання:
|
||||
Очищувач запускається кожні **60 секунд** і виконує три дії:
|
||||
|
||||
1. **Звіряння** — перевіряє, чи активні завдання все ще мають авторитетну базову підтримку середовища виконання. Завдання ACP/субагентів використовують стан дочірнього сеансу, cron-завдання — володіння активним завданням, а CLI-завдання на основі чату — базовий контекст запуску. Якщо цей базовий стан відсутній понад 5 хвилин, завдання позначається як `lost`.
|
||||
2. **Позначення очищення** — встановлює часову мітку `cleanupAfter` для термінальних завдань (`endedAt` + 7 днів).
|
||||
3. **Очищення** — видаляє записи, що перевищили дату `cleanupAfter`.
|
||||
1. **Звіряння** — перевіряє, чи активні завдання все ще мають авторитетну основу в середовищі виконання. Завдання ACP/субагентів використовують стан дочірнього сеансу, завдання Cron — належність до активного завдання, а чат-орієнтовані завдання CLI — контекст запуску-власника. Якщо цей стан-основа відсутній понад 5 хвилин, завдання позначається як `lost`.
|
||||
2. **Проставлення позначок очищення** — встановлює часову позначку `cleanupAfter` для термінальних завдань (`endedAt + 7 days`).
|
||||
3. **Видалення застарілих даних** — видаляє записи після настання дати `cleanupAfter`.
|
||||
|
||||
**Термін зберігання**: записи термінальних завдань зберігаються **7 днів**, а потім автоматично очищаються. Жодного налаштування не потрібно.
|
||||
**Термін зберігання**: записи термінальних завдань зберігаються **7 днів**, після чого автоматично видаляються. Додаткового налаштування не потрібно.
|
||||
|
||||
## Як завдання пов’язані з іншими системами
|
||||
|
||||
### Завдання і Task Flow
|
||||
|
||||
[Task Flow](/uk/automation/taskflow) — це шар оркестрації потоків над фоновими завданнями. Один потік може координувати кілька завдань протягом свого життєвого циклу, використовуючи керовані або дзеркальні режими синхронізації. Використовуйте `openclaw tasks`, щоб переглядати окремі записи завдань, і `openclaw tasks flow`, щоб переглядати оркеструвальний потік.
|
||||
[Task Flow](/uk/automation/taskflow) — це рівень оркестрації потоків над фоновими завданнями. Один потік може координувати кілька завдань протягом свого життєвого циклу, використовуючи керовані або дзеркальні режими синхронізації. Використовуйте `openclaw tasks` для перегляду окремих записів завдань і `openclaw tasks flow` для перегляду оркеструвального потоку.
|
||||
|
||||
Докладніше див. у [Task Flow](/uk/automation/taskflow).
|
||||
|
||||
### Завдання і cron
|
||||
### Завдання і Cron
|
||||
|
||||
**Визначення** cron-завдання зберігається в `~/.openclaw/cron/jobs.json`. **Кожне** виконання cron створює запис завдання — як для основного сеансу, так і для ізольованого. Cron-завдання основного сеансу типово мають політику сповіщень `silent`, тому вони відстежуються без створення сповіщень.
|
||||
**Визначення** завдання Cron зберігається в `~/.openclaw/cron/jobs.json`; стан виконання під час роботи зберігається поруч у `~/.openclaw/cron/jobs-state.json`. **Кожне** виконання Cron створює запис завдання — і в основному сеансі, і в ізольованому. Завдання Cron основного сеансу за замовчуванням мають політику сповіщень `silent`, тому вони відстежуються без створення сповіщень.
|
||||
|
||||
Див. [Cron Jobs](/uk/automation/cron-jobs).
|
||||
Див. [Завдання Cron](/uk/automation/cron-jobs).
|
||||
|
||||
### Завдання і heartbeat
|
||||
### Завдання і Heartbeat
|
||||
|
||||
Запуски heartbeat — це цикли основного сеансу, вони не створюють записи завдань. Коли завдання завершується, воно може спричинити пробудження heartbeat, щоб ви швидко побачили результат.
|
||||
Запуски Heartbeat — це ходи основного сеансу, вони не створюють записів завдань. Коли завдання завершується, воно може ініціювати пробудження Heartbeat, щоб ви швидше побачили результат.
|
||||
|
||||
Див. [Heartbeat](/uk/gateway/heartbeat).
|
||||
|
||||
@ -322,14 +311,14 @@ $OPENCLAW_STATE_DIR/tasks/runs.sqlite
|
||||
|
||||
Завдання може посилатися на `childSessionKey` (де виконується робота) і `requesterSessionKey` (хто її запустив). Сеанси — це контекст розмови; завдання — це відстеження активності поверх нього.
|
||||
|
||||
### Завдання і запуски агента
|
||||
### Завдання і запуски агентів
|
||||
|
||||
`runId` завдання пов’язує його із запуском агента, що виконує роботу. Події життєвого циклу агента (start, end, error) автоматично оновлюють статус завдання — вам не потрібно керувати життєвим циклом вручну.
|
||||
`runId` завдання пов’язує його із запуском агента, який виконує роботу. Події життєвого циклу агента (початок, завершення, помилка) автоматично оновлюють статус завдання — вам не потрібно керувати життєвим циклом вручну.
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Автоматизація й завдання](/uk/automation) — усі механізми автоматизації з першого погляду
|
||||
- [Автоматизація й завдання](/uk/automation) — огляд усіх механізмів автоматизації
|
||||
- [Task Flow](/uk/automation/taskflow) — оркестрація потоків над завданнями
|
||||
- [Заплановані завдання](/uk/automation/cron-jobs) — планування фонової роботи
|
||||
- [Heartbeat](/uk/gateway/heartbeat) — періодичні цикли основного сеансу
|
||||
- [Heartbeat](/uk/gateway/heartbeat) — періодичні ходи основного сеансу
|
||||
- [CLI: Tasks](/cli/index#tasks) — довідка з команд CLI
|
||||
|
||||
Loading…
Reference in New Issue
Block a user