Automation

Фонові завдання

Фонові завдання відстежують роботу, що виконується поза основним сеансом розмови: запуски ACP, створення субагентів, виконання завдань cron та операції, ініційовані через CLI.

Завдання не замінюють сеанси, завдання cron або Heartbeat — це журнал активності, який фіксує, яка відокремлена робота виконувалася, коли саме та чи була вона успішною.

Коротко

  • Завдання — це записи, а не планувальники: cron і Heartbeat визначають, коли виконується робота, а завдання відстежують, що сталося.
  • ACP, субагенти, усі завдання cron та операції CLI створюють завдання. Цикли Heartbeat цього не роблять.
  • Кожне завдання проходить стани queued → running → terminal (succeeded, failed, timed_out, cancelled або lost).
  • Завдання cron залишаються активними, доки середовище виконання cron володіє завданням; якщо стан середовища виконання в пам’яті втрачено, обслуговування завдань спочатку перевіряє збережену історію запусків cron і лише потім позначає завдання як втрачене.
  • Завершення працює на основі надсилання подій: відокремлена робота після завершення може надіслати сповіщення безпосередньо або активувати сеанс запитувача чи Heartbeat, тому цикли опитування стану зазвичай є неправильним підходом.
  • Ізольовані запуски cron і завершення субагентів у міру можливості закривають відстежувані вкладки браузера та процеси дочірнього сеансу перед остаточним службовим очищенням.
  • Доставлення ізольованого cron пригнічує застарілі проміжні відповіді батьківського агента, доки робота дочірніх субагентів ще завершується, і надає перевагу остаточному виводу дочірнього агента, якщо він надходить до доставлення.
  • Сповіщення про завершення доставляються безпосередньо в канал або ставляться в чергу до наступного Heartbeat.
  • openclaw tasks list показує всі завдання; openclaw tasks audit виявляє проблеми.
  • Термінальні записи зберігаються 7 днів (записи lost — 24 години), після чого автоматично видаляються.

Швидкий початок

Перегляд і фільтрування

bash
# Перелік усіх завдань (спочатку найновіші)openclaw tasks list # Фільтрування за середовищем виконання або станомopenclaw tasks list --runtime acpopenclaw tasks list --status running

Перевірка

bash
# Показати відомості про конкретне завдання (за ID завдання, ID запуску або ключем сеансу)openclaw tasks show <lookup>

Скасування та сповіщення

bash
# Скасувати активне завдання (завершує дочірній сеанс)openclaw tasks cancel <lookup> # Змінити політику сповіщень для завданняopenclaw tasks notify <lookup> state_changes

Аудит і обслуговування

bash
# Запустити аудит справностіopenclaw tasks audit # Попередньо переглянути або застосувати обслуговуванняopenclaw tasks maintenanceopenclaw tasks maintenance --apply

Потік завдання

bash
# Перевірити стан TaskFlowopenclaw tasks flow listopenclaw tasks flow show <lookup>openclaw tasks flow cancel <lookup>

Що створює завдання

Джерело Тип середовища виконання Коли створюється запис завдання Стандартна політика сповіщень
Фонові запуски ACP acp Створення дочірнього сеансу ACP done_only
Оркестрація субагентів subagent Створення субагента через sessions_spawn done_only
Завдання cron (усі типи) cron Кожне виконання cron (в основному сеансі та ізольоване) silent
Операції CLI cli Команди openclaw agent, що виконуються через Gateway silent
Завдання агента з медіа cli Запуски image_generate/music_generate/video_generate із сеансом silent
Стандартні сповіщення для cron і медіа

Завдання cron (в основному сеансі та ізольовані) використовують політику сповіщень silent: вони створюють записи для відстеження, але не генерують власних сповіщень про завдання; шлях доставлення контролює cron.

Запуски image_generate, music_generate і video_generate, пов’язані із сеансом, також використовують політику сповіщень silent. Вони все одно створюють записи завдань, але завершення повертається початковому сеансу агента як внутрішня активація, щоб агент міг написати подальше повідомлення та самостійно прикріпити готові медіафайли. Агент-запитувач дотримується свого звичайного контракту видимих відповідей: автоматична остаточна відповідь, якщо це налаштовано, або message(action="send") разом із NO_REPLY, якщо сеанс вимагає відповідей через інструмент повідомлень. Якщо сеанс запитувача вже неактивний або його активна активація завершується помилкою, а агент завершення не отримує частину або всі згенеровані медіафайли, OpenClaw надсилає ідемпотентне пряме резервне повідомлення лише з відсутніми медіафайлами до початкової цілі каналу.

Захист від одночасного створення медіа

Поки завдання створення медіа, пов’язане із сеансом, залишається активним, image_generate, music_generate і video_generate захищають від випадкових повторних спроб: повторення виклику для того самого запиту повертає стан відповідного активного завдання замість запуску дубліката, тоді як інший запит може запустити власне завдання. Використовуйте action: "status", якщо потрібен явний запит перебігу виконання або стану з боку агента.

Що не створює завдань
  • Цикли Heartbeat в основному сеансі; див. Heartbeat
  • Звичайні цикли інтерактивного чату
  • Прямі відповіді /command

Життєвий цикл завдання

stateDiagram-v2
    [*] --> queued
    queued --> running : агент запускається
    running --> succeeded : успішне завершення
    running --> failed : помилка
    running --> timed_out : перевищено час очікування
    queued --> cancelled : оператор скасовує
    running --> cancelled : оператор скасовує
    queued --> lost : базовий стан відсутній > 5 хв
    running --> lost : базовий стан відсутній > 5 хв
Стан Що він означає
queued Створено, очікує запуску агента
running Цикл агента активно виконується
succeeded Успішно завершено
failed Завершено з помилкою
timed_out Перевищено налаштований час очікування
cancelled Зупинено оператором через openclaw tasks cancel або запуск було перервано
lost Середовище виконання втратило авторитетний базовий стан після 5 хвилин очікування

Переходи відбуваються автоматично: події життєвого циклу запуску агента (початок, завершення, помилка) оновлюють стан завдання; керувати ним вручну не потрібно.

Завершення запуску агента є авторитетним для активних записів завдань. Успішний відокремлений запуск завершується зі станом succeeded, звичайні помилки запуску — зі станом failed, перевищення часу очікування — зі станом timed_out, а скасування чи переривання — зі станом cancelled. Коли завдання переходить у термінальний стан, пізніші сигнали життєвого циклу не можуть знизити його стан: скасоване оператором або вже позначене як failed/timed_out/lost завдання зберігає цей стан, навіть якщо згодом надходить сигнал про успішне завершення.

Стан lost залежить від середовища виконання:

  • Завдання ACP: лише активний внутрішньопроцесний цикл ACP у Gateway підтверджує, що запуск досі виконується; самих лише збережених метаданих сеансу недостатньо. Автономний аудит CLI діє консервативно й ніколи не відновлює завдання ACP.
  • Завдання субагентів: базовий дочірній сеанс зник зі сховища цільового агента або містить позначку відновлення після перезапуску.
  • Завдання cron: середовище виконання cron більше не відстежує завдання як активне, а збережена історія запусків cron не містить термінального результату цього запуску. Автономний аудит CLI не вважає власний порожній внутрішньопроцесний стан середовища виконання cron авторитетним.
  • Завдання CLI: завдання з ID запуску або ID джерела використовують активний контекст запуску, тому залишкові записи дочірнього сеансу чи сеансу чату не зберігають їх активними після зникнення запуску, яким володів Gateway. Застарілі завдання CLI без ідентифікатора запуску й надалі використовують дочірній сеанс як резервний варіант. Запуски openclaw agent, що працюють через Gateway, також завершуються на основі результату свого запуску, тому завершені запуски не залишаються активними, доки засіб очищення не позначить їх як lost.

Доставлення та сповіщення

Коли завдання переходить у термінальний стан, OpenClaw сповіщає вас. Існує два шляхи доставлення:

Пряме доставлення — якщо завдання має цільовий канал (requesterOrigin), повідомлення про завершення надсилається безпосередньо до цього каналу (Discord, Slack, Telegram тощо). Натомість завершення групових і канальних завдань спрямовуються через сеанс запитувача, щоб батьківський агент міг написати видиму відповідь. Для завершень субагентів OpenClaw також зберігає прив’язану маршрутизацію гілки або теми, якщо вона доступна, і може заповнити відсутній to або обліковий запис зі збереженого маршруту сеансу запитувача (lastChannel / lastTo / lastAccountId), перш ніж відмовитися від прямого доставлення.

Доставлення через чергу сеансу — якщо пряме доставлення завершується помилкою або джерело не задано, оновлення додається до черги як системна подія в сеансі запитувача та відображається під час наступного Heartbeat.

Отже, звичайний робочий процес ґрунтується на надсиланні подій: один раз запустіть відокремлену роботу, а потім дозвольте середовищу виконання активувати вас або сповістити про завершення. Опитуйте стан завдання лише тоді, коли потрібні налагодження, втручання або явний аудит.

Політики сповіщень

Керуйте обсягом сповіщень про кожне завдання:

Політика Що доставляється
done_only (типово) Лише термінальний стан (succeeded, failed тощо)
state_changes Кожен перехід стану й кожне оновлення перебігу виконання
silent Нічого (типово для завдань cron, CLI та створення медіа)

Змініть політику під час виконання завдання:

bash
openclaw tasks notify <lookup> state_changes

Довідник CLI

tasks list
bash
openclaw tasks list [--runtime <acp|subagent|cron|cli>] [--status <status>] [--json]

Стовпці виводу: завдання, тип, стан, доставлення, запуск, дочірній сеанс, зведення. Команда openclaw tasks без аргументів працює так само, як openclaw tasks list.

tasks show
bash
openclaw tasks show <lookup> [--json]

Токен пошуку приймає ID завдання, ID запуску або ключ сеансу. Показує повний запис, зокрема час, стан доставлення, помилку та термінальне зведення.

tasks cancel
bash
openclaw tasks cancel <lookup>

Для завдань ACP і субагентів ця команда завершує дочірній сеанс; скасування ACP і cron спрямовуються через активний Gateway (tasks.cancel). Для завдань, відстежуваних через CLI, скасування записується в реєстрі завдань (окремого дескриптора дочірнього середовища виконання немає). Стан переходить у cancelled, і за потреби надсилається сповіщення.

tasks notify
bash
openclaw tasks notify <lookup> <done_only|state_changes|silent>
tasks audit
bash
openclaw tasks audit [--severity <warn|error>] [--code <name>] [--limit <n>] [--json]

Виявляє експлуатаційні проблеми завдань і TaskFlow в одному звіті. Виявлені проблеми також відображаються в openclaw status.

Результати перевірки завдань:

Виявлена проблема Серйозність Умова виникнення
stale_queued попередження Перебуває в черзі понад 10 хвилин
stale_running помилка Виконується понад 30 хвилин
lost попередження/помилка Зник власник завдання в середовищі виконання; збережені втрачені завдання спричиняють попередження до cleanupAfter, а потім стають помилками
delivery_failed попередження Доставлення не вдалося, а політика сповіщень не має значення silent
missing_cleanup попередження Завершальне завдання без часової позначки очищення
inconsistent_timestamps попередження Порушення хронології (наприклад, завершення перед початком)

Виявлені проблеми TaskFlow:

Виявлена проблема Серйозність Умова виникнення
restore_failed помилка Не вдалося відновити реєстр потоків зі SQLite
stale_running помилка Виконуваний потік не просувався понад 30 хвилин
stale_waiting попередження Потік, що очікує, не просувався понад 30 хвилин
stale_blocked попередження Заблокований потік не просувався понад 30 хвилин
cancel_stuck попередження Скасування запитано понад 5 хвилин тому, активних дочірніх завдань немає, але стан усе ще не завершальний
missing_linked_tasks попередження/помилка Застарілий керований потік без пов’язаних завдань або стану очікування
blocked_task_missing попередження Заблокований потік посилається на ідентифікатор завдання, якого більше не існує
обслуговування завдань
bash
openclaw tasks maintenance [--json]openclaw tasks maintenance --apply [--json]

Використовуйте цю команду для попереднього перегляду або застосування узгодження, установлення часових позначок очищення та видалення застарілих записів для завдань, стану TaskFlow і рядків реєстру сеансів застарілих запусків cron.

Узгодження враховує середовище виконання:

  • Завдання ACP потребують активного внутрішньопроцесного ходу в Gateway; завдання підагентів перевіряють свій дочірній сеанс, що забезпечує їх виконання.
  • Завдання підагентів, дочірній сеанс яких має мітку відновлення після перезапуску, позначаються як втрачені, а не вважаються сеансами виконання, які можна відновити.
  • Завдання Cron перевіряють, чи середовище виконання cron досі володіє завданням, а потім відновлюють завершальний стан зі збережених журналів запусків cron або стану завдання, перш ніж установити lost. Лише процес Gateway є авторитетним джерелом для набору активних завдань cron у пам’яті; автономний аудит CLI використовує довготривалу історію, але не позначає завдання cron як втрачене лише через те, що цей локальний набір порожній.
  • Завдання CLI з ідентифікатором запуску перевіряють активний контекст запуску-власника, а не лише рядки дочірнього сеансу чи сеансу чату.

Очищення після завершення також враховує середовище виконання:

  • Після завершення підагента система за можливості закриває відстежувані вкладки браузера та процеси дочірнього сеансу, перш ніж продовжити очищення після оголошення.
  • Після завершення ізольованого запуску cron система за можливості закриває відстежувані вкладки браузера та процеси сеансу cron до повного завершення запуску.
  • Доставлення ізольованого запуску cron за потреби очікує завершення подальшої роботи дочірніх підагентів і не оголошує застарілий текст підтвердження батьківського завдання.
  • Доставлення результату завершення підагента використовує лише останній видимий текст асистента з дочірнього сеансу. Виведення tool/toolResult не переноситься до тексту результату дочірнього завдання. Завершальні невдалі запуски повідомляють про стан помилки без повторного відтворення збереженого тексту відповіді.
  • Помилки очищення не приховують фактичний результат завдання.

Під час застосування обслуговування OpenClaw також видаляє рядки реєстру сеансів cron:<jobId>:run:<runId>, старші за 7 днів, зберігаючи рядки для завдань cron, які виконуються зараз, і не змінюючи рядки сеансів, не пов’язаних із cron.

перелік | перегляд | скасування потоків завдань
bash
openclaw tasks flow list [--status <status>] [--json]openclaw tasks flow show <lookup> [--json]openclaw tasks flow cancel <lookup>

Токен пошуку потоку приймає ідентифікатор потоку або ключ власника. Використовуйте ці команди, коли вас цікавить оркеструвальний TaskFlow, а не окремий запис фонового завдання.

Дошка завдань чату (/tasks)

Використовуйте /tasks у будь-якому сеансі чату, щоб переглядати фонові завдання, пов’язані з цим сеансом. Дошка показує до п’яти активних і нещодавно завершених завдань із середовищем виконання, станом, часовими даними та відомостями про перебіг або помилку.

Якщо поточний сеанс не має видимих пов’язаних завдань, /tasks натомість показує локальні для агента лічильники завдань, щоб надати загальний огляд без розкриття відомостей про інші сеанси.

Для повного операторського реєстру використовуйте CLI: openclaw tasks list.

Інтерфейс керування

Вебінтерфейс керування має сторінку Tasks на бічній панелі з активними та нещодавніми фоновими завданнями, що оновлюються в реальному часі. Використовуйте її, щоб перевіряти перебіг, відкривати пов’язані сеанси, оновлювати реєстр або скасовувати завдання в черзі та завдання, що виконуються.

Панелі чату також мають згортану бічну панель Background tasks, обмежену агентом відповідної панелі: завдання та підагенти, що виконуються, з елементом керування зупинкою, розділ завершених завдань і посилання View transcript на дочірній сеанс кожного завдання. Відкрийте її за допомогою перемикача активності в заголовку панелі або плавучої кнопки активності в однопанельному чаті.

Інтеграція зі станом (навантаження завданнями)

openclaw status містить короткий рядок стану завдань:

Code
Завдання    2 активні · 1 у черзі · 1 виконується · 1 проблема · аудит чистий · 6 відстежуються

Зведення підраховує активну роботу (queued + running), невдачі (failed + timed_out + lost), виявлені аудитом проблеми та загальну кількість відстежуваних записів; корисне навантаження JSON також розбиває кількість за середовищем виконання (acp, subagent, cron, cli).

І /status, і інструмент session_status використовують знімок завдань, що враховує очищення: активні завдання мають пріоритет, прострочені рядки приховуються, а завершальні завдання відображаються лише протягом короткого періоду після завершення (5 хвилин), із фокусом на помилках, коли активної роботи не залишилося. Завдяки цьому картка стану показує те, що важливо саме зараз.

Зберігання та обслуговування

Де зберігаються завдання

Записи завдань і стан доставлення зберігаються у спільній базі даних стану OpenClaw SQLite:

Code
~/.openclaw/state/openclaw.sqlite   (таблиці: task_runs, task_delivery_state, flow_runs)

Установіть OPENCLAW_STATE_DIR, щоб перемістити весь кореневий каталог стану з типового розташування ~/.openclaw; шлях до спільної бази даних переміститься разом із ним.

Реєстр завантажується в пам’ять під час першого використання та зберігає кожну зміну назад у SQLite, тому записи переживають перезапуски Gateway. Зростання WAL обмежується типовим порогом автоматичних контрольних точок SQLite і періодичними контрольними точками PASSIVE; під час завершення роботи та явного обслуговування контрольні точки використовують TRUNCATE, щоб звичайне закриття звільняло простір WAL, не змушуючи фоновий засіб очищення очікувати на активних читачів.

Застарілі супровідні сховища зі старіших установок (tasks/runs.sqlite, flows/registry.sqlite) імпортуються до спільної бази даних командою openclaw doctor.

Автоматичне обслуговування

Засіб очищення запускається кожні 60 секунд (перший прохід — приблизно через 5 секунд після запуску Gateway) і виконує чотири дії:

  • Узгодження

    Перевіряє, чи активні завдання досі мають авторитетне забезпечення середовища виконання. Завдання ACP потребують активного внутрішньопроцесного ходу, завдання підагентів використовують стан дочірнього сеансу, завдання cron — володіння активним завданням разом із довготривалою історією запусків, а завдання CLI з ідентифікатором запуску — контекст запуску-власника. Якщо стан забезпечення відсутній понад 5 хвилин (30 хвилин для нативних завдань підагентів без дочірнього сеансу), завдання позначається як lost.

  • Відновлення сеансів ACP

    Закриває завершальні або осиротілі одноразові сеанси ACP, що належать батьківському процесу, а також закриває застарілі завершальні або осиротілі постійні сеанси ACP лише тоді, коли активної прив’язки до розмови більше немає.

  • Установлення часових позначок очищення

    Установлює часову позначку cleanupAfter для завершальних завдань (час завершення + період зберігання). Протягом періоду зберігання втрачені завдання все ще відображаються в аудиті як попередження; після завершення строку cleanupAfter або за відсутності метаданих очищення вони стають помилками.

  • Видалення

    Видаляє записи після дати cleanupAfter.

  • Зв’язок завдань з іншими системами

    Завдання та TaskFlow

    TaskFlow — це рівень оркестрації потоків над фоновими завданнями. Один потік може координувати кілька завдань протягом свого життєвого циклу за допомогою керованого або дзеркального режиму синхронізації. Використовуйте openclaw tasks для перевірки окремих записів завдань і openclaw tasks flow для перевірки оркеструвального потоку.

    Завдання та cron

    Визначення завдань Cron, стан виконання та історія запусків зберігаються у спільній базі даних стану OpenClaw SQLite. Кожне виконання cron створює запис завдання — і в основному сеансі, і в ізольованому — з політикою сповіщень silent, тому запуски cron відстежуються, але не створюють власних сповіщень про завдання.

    Див. Завдання Cron.

    Завдання та Heartbeat

    Запуски Heartbeat є ходами основного сеансу — вони не створюють записів завдань. Після завершення завдання воно може спричинити пробудження Heartbeat, щоб ви швидко побачили результат.

    Див. Heartbeat.

    Завдання та сеанси

    Завдання може посилатися на childSessionKey (де виконується робота) і requesterSessionKey (хто її запустив). Його agentId визначає агента, який виконує роботу, а поля запитувача та власника зберігають контекст запуску й керування. Сеанси є контекстом розмови, а завдання — рівнем відстеження активності поверх нього.

    Завдання та запуски агента

    runId завдання посилається на запуск агента, який виконує роботу. Події життєвого циклу агента (початок, завершення, помилка) автоматично оновлюють стан завдання — вам не потрібно керувати життєвим циклом вручну.

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

    Was this useful?
    On this page

    On this page