CLI commands

Cron

openclaw cron

Керуйте завданнями Cron для планувальника Gateway.

Сеанси

--session приймає main, isolated, current або session:<id>.

Ключі сеансів
  • main прив’язується до основного сеансу агента.
  • isolated створює новий транскрипт і ідентифікатор сеансу для кожного запуску.
  • current прив’язується до активного сеансу на момент створення.
  • session:<id> закріплює явний постійний ключ сеансу.
Семантика ізольованого сеансу

Ізольовані запуски скидають навколишній контекст розмови. Маршрутизація каналу й групи, політика надсилання/черги, підвищення привілеїв, походження та прив’язка середовища виконання ACP скидаються для нового запуску. Безпечні налаштування та явно вибрана користувачем модель або перевизначення автентифікації можуть переноситися між запусками.

Доставка

openclaw cron list і openclaw cron show <job-id> попередньо показують розв’язаний маршрут доставки. Для channel: "last" попередній перегляд показує, чи маршрут розв’язано з основного або поточного сеансу, чи він завершиться закритою відмовою.

Цілі з префіксом провайдера можуть усувати неоднозначність нерозв’язаних каналів оголошень. Наприклад, to: "telegram:123" вибирає Telegram, коли delivery.channel пропущено або має значення last. Лише префікси, оголошені завантаженим Plugin, є селекторами провайдера. Якщо delivery.channel задано явно, префікс має відповідати цьому каналу; channel: "whatsapp" із to: "telegram:123" відхиляється. Префікси сервісів, як-от imessage: і sms:, лишаються синтаксисом цілі, що належить каналу.

Власність доставки

Доставка ізольованого чату Cron спільно належить агенту й runner:

  • Агент може надсилати напряму за допомогою інструмента message, коли доступний маршрут чату.
  • announce резервно доставляє фінальну відповідь лише тоді, коли агент не надіслав її напряму до розв’язаної цілі.
  • webhook надсилає завершене корисне навантаження на URL.
  • none вимикає резервну доставку runner.

--announce — це резервна доставка runner для фінальної відповіді. --no-deliver вимикає цей резервний механізм, але не прибирає інструмент message агента, коли доступний маршрут чату.

Нагадування, створені з активного чату, зберігають активну ціль доставки чату для резервної доставки announce. Внутрішні ключі сеансів можуть бути в нижньому регістрі; не використовуйте їх як джерело істини для чутливих до регістру ідентифікаторів провайдера, як-от ідентифікаторів кімнат Matrix.

Доставка помилок

Сповіщення про помилки розв’язуються в такому порядку:

  1. delivery.failureDestination у завданні.
  2. Глобальний cron.failureDestination.
  3. Основна ціль announce завдання (коли явну ціль для помилок не задано).

Примітка: ізольовані запуски Cron трактують помилки агента рівня запуску як помилки завдання навіть тоді, коли корисне навантаження відповіді не створено, тому помилки моделі/провайдера все одно збільшують лічильники помилок і запускають сповіщення про помилки.

Планування

Одноразові завдання

--at <datetime> планує одноразовий запуск. Дати й час без зміщення трактуються як UTC, якщо ви також не передали --tz <iana>, що інтерпретує настінний час у заданому часовому поясі.

Повторювані завдання

Повторювані завдання використовують експоненційне відтермінування повторних спроб після послідовних помилок: 30 с, 1 хв, 5 хв, 15 хв, 60 хв. Розклад повертається до норми після наступного успішного запуску.

Пропущені запуски відстежуються окремо від помилок виконання. Вони не впливають на відтермінування повторних спроб, але openclaw cron edit <job-id> --failure-alert-include-skipped може ввімкнути включення повторних сповіщень про пропущені запуски до сповіщень про помилки.

Для ізольованих завдань, націлених на локально налаштованого провайдера моделей, Cron виконує легку попередню перевірку провайдера перед початком ходу агента. Провайдери api: "ollama" для зворотної петлі, приватної мережі та .local перевіряються на /api/tags; локальні OpenAI-сумісні провайдери, як-от vLLM, SGLang і LM Studio, перевіряються на /models. Якщо кінцева точка недоступна, запуск записується як skipped і повторюється за пізнішим розкладом; відповідні неактивні кінцеві точки кешуються на 5 хвилин, щоб багато завдань не навантажували той самий локальний сервер.

Примітка: визначення завдань Cron зберігаються в jobs.json, тоді як очікуваний стан середовища виконання зберігається в jobs-state.json. Якщо jobs.json редагується зовні, Gateway перезавантажує змінені розклади й очищає застарілі очікувані слоти; перезаписи лише форматування не очищають очікуваний слот.

Ручні запуски

openclaw cron run повертається одразу після постановки ручного запуску в чергу. Успішні відповіді містять { ok: true, enqueued: true, runId }. Використовуйте openclaw cron runs --id <job-id>, щоб відстежити підсумковий результат.

Моделі

cron add|edit --model <ref> вибирає дозволену модель для завдання.

Cron --model — це основна модель завдання, а не перевизначення /model сеансу чату. Це означає:

  • Налаштовані резервні моделі все одно застосовуються, коли вибрана модель завдання завершується помилкою.
  • Корисне навантаження fallbacks на рівні завдання замінює налаштований список резервних моделей, якщо воно присутнє.
  • Порожній список резервних моделей на рівні завдання (fallbacks: [] у корисному навантаженні/API завдання) робить запуск Cron строгим.
  • Коли завдання має --model, але список резервних моделей не налаштований, OpenClaw передає явне порожнє перевизначення резервних моделей, щоб основна модель агента не додавалася як прихована ціль повторної спроби.

Пріоритет моделі ізольованого Cron

Ізольований Cron розв’язує активну модель у такому порядку:

  1. Перевизначення Gmail-hook.
  2. --model на рівні завдання.
  3. Збережене перевизначення моделі сеансу Cron (коли користувач вибрав його).
  4. Вибір моделі агента або стандартної моделі.

Швидкий режим

Швидкий режим ізольованого Cron відповідає розв’язаному вибору активної моделі. Налаштування моделі params.fastMode застосовується за замовчуванням, але збережене перевизначення сеансу fastMode усе одно має пріоритет над конфігурацією.

Повторні спроби перемикання активної моделі

Якщо ізольований запуск викидає LiveSessionModelSwitchError, Cron зберігає перемкнутого провайдера й модель (а також перевизначення перемкнутого профілю автентифікації, коли воно присутнє) для активного запуску перед повторною спробою. Зовнішній цикл повторних спроб обмежено двома повторними спробами перемикання після початкової спроби, після чого він переривається замість нескінченного циклу.

Вивід запуску та відмови

Придушення застарілих підтверджень

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

Придушення мовчазного токена

Якщо ізольований запуск Cron повертає лише мовчазний токен (NO_REPLY або no_reply), Cron придушує як пряму вихідну доставку, так і резервний шлях підсумку в черзі, тож у чат нічого не надсилається.

Структуровані відмови

Ізольовані запуски Cron надають перевагу структурованим метаданим відмови виконання з вбудованого запуску, а потім повертаються до відомих маркерів відмови у фінальному виводі, як-от SYSTEM_RUN_DENIED, INVALID_REQUEST і фраз відмови через прив’язку схвалення.

cron list та історія запусків показують причину відмови замість того, щоб повідомляти заблоковану команду як ok.

Зберігання

Зберігання й обрізання керуються в конфігурації:

  • cron.sessionRetention (типово 24h) обрізає завершені сеанси ізольованих запусків.
  • cron.runLog.maxBytes і cron.runLog.keepLines обрізають ~/.openclaw/cron/runs/<jobId>.jsonl.

Міграція старіших завдань

Поширені редагування

Оновіть налаштування доставки без зміни повідомлення:

openclaw cron edit <job-id> --announce --channel telegram --to "123456789"

Вимкніть доставку для ізольованого завдання:

openclaw cron edit <job-id> --no-deliver

Увімкніть легкий контекст початкового завантаження для ізольованого завдання:

openclaw cron edit <job-id> --light-context

Оголосіть у певний канал:

openclaw cron edit <job-id> --announce --channel slack --to "channel:C1234567890"

Оголосіть у тему форуму Telegram:

openclaw cron edit <job-id> --announce --channel telegram --to "-1001234567890" --thread-id 42

Створіть ізольоване завдання з легким контекстом початкового завантаження:

openclaw cron add \
  --name "Lightweight morning brief" \
  --cron "0 7 * * *" \
  --session isolated \
  --message "Summarize overnight updates." \
  --light-context \
  --no-deliver

--light-context застосовується лише до ізольованих завдань із ходом агента. Для запусків Cron легкий режим залишає контекст початкового завантаження порожнім замість впровадження повного набору початкового завантаження робочої області.

Поширені команди адміністратора

Ручний запуск і перевірка:

openclaw cron list
openclaw cron list --agent ops
openclaw cron show <job-id>
openclaw cron run <job-id>
openclaw cron run <job-id> --due
openclaw cron runs --id <job-id> --limit 50

openclaw cron list за замовчуванням показує всі відповідні завдання. Передайте --agent <id>, щоб показати лише завдання, чий ефективний нормалізований ідентифікатор агента збігається; завдання без збереженого ідентифікатора агента рахуються як налаштований стандартний агент.

Записи cron runs містять діагностику доставки з цільовим призначенням Cron, розв’язаною ціллю, надсиланнями інструмента повідомлень, використанням резервної доставки та станом доставки.

Перенацілювання агента й сеансу:

openclaw cron edit <job-id> --agent ops
openclaw cron edit <job-id> --clear-agent
openclaw cron edit <job-id> --session current
openclaw cron edit <job-id> --session "session:daily-brief"

openclaw cron add попереджає, коли --agent пропущено для завдань із ходом агента, і повертається до стандартного агента (main). Передайте --agent <id> під час створення, щоб закріпити конкретного агента.

Налаштування доставки:

openclaw cron edit <job-id> --announce --channel slack --to "channel:C1234567890"
openclaw cron edit <job-id> --best-effort-deliver
openclaw cron edit <job-id> --no-best-effort-deliver
openclaw cron edit <job-id> --no-deliver

Пов’язане