diff --git a/docs/uk/automation/cron-jobs.md b/docs/uk/automation/cron-jobs.md index 0794f340d..d13dcb823 100644 --- a/docs/uk/automation/cron-jobs.md +++ b/docs/uk/automation/cron-jobs.md @@ -6,15 +6,15 @@ read_when: summary: Заплановані завдання, Webhook-и та тригери Gmail PubSub для планувальника Gateway title: Заплановані завдання x-i18n: - generated_at: "2026-04-25T05:54:43Z" + generated_at: "2026-04-26T01:24:15Z" model: gpt-5.4 provider: openai - source_hash: 9ed4dc7222b601b37d98cf1575ced7fd865987882a8c5b28245c5d2423b4cc56 + source_hash: 339bb43e7fa34d4307221b4587402d31ebad7642dee36e32f5a91ca44fa06775 source_path: automation/cron-jobs.md workflow: 15 --- -Cron — це вбудований планувальник Gateway. Він зберігає завдання, пробуджує агента у потрібний час і може повертати результат назад у канал чату або на endpoint Webhook. +Cron — це вбудований планувальник Gateway. Він зберігає завдання, пробуджує агента в потрібний час і може повертати результат назад у канал чату або до кінцевої точки Webhook. ## Швидкий старт @@ -36,43 +36,41 @@ openclaw cron show openclaw cron runs --id ``` -## Як працює cron +## Як працює Cron - 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:`, щоб відокремлена автоматизація браузера не залишала після себе осиротілі процеси. -- Ізольовані запуски cron також захищаються від застарілих відповідей-підтверджень. Якщо +- Стан виконання під час роботи зберігається поруч у `~/.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 після завершення намагаються закрити відстежувані вкладки браузера/процеси для своєї сесії `cron:`, щоб від’єднана автоматизація браузера не залишала після себе осиротілі процеси. +- Ізольовані запуски Cron також захищають від застарілих відповідей-підтверджень. Якщо перший результат — це лише проміжне оновлення статусу (`on it`, `pulling everything together` та подібні підказки), і жоден дочірній запуск субагента більше не - відповідає за фінальну відповідь, OpenClaw повторно формує запит один раз, щоб отримати фактичний - результат перед доставкою. + відповідає за фінальну відповідь, OpenClaw ще раз надсилає запит для отримання + фактичного результату перед доставкою. -Узгодження завдань для 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` | +| `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). Коли і поле дня місяця, і поле дня тижня не є шаблоном-підстановкою, croner виконує збіг, коли **збігається будь-яке** з цих полів, а не обидва. Це стандартна поведінка Vixie cron. ``` # Intended: "9 AM on the 15th, only if it's a Monday" @@ -80,88 +78,94 @@ together` та подібні підказки), і жоден дочірній 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 session | `main` | Наступний цикл heartbeat | Нагадувань, системних подій | -| Isolated | `isolated` | Виділений `cron:` | Звітів, фонових завдань | -| Current session | `current` | Прив’язується під час створення | Повторюваної роботи з контекстом | -| Custom session | `session:custom-id` | Постійна іменована сесія | Процесів, що спираються на історію | +| Стиль | Значення `--session` | Виконується в | Найкраще підходить для | +| --------------- | -------------------- | ------------------------- | ------------------------------ | +| Основна сесія | `main` | Наступного циклу Heartbeat | Нагадувань, системних подій | +| Ізольований | `isolated` | Виділеної `cron:` | Звітів, фонових завдань | +| Поточна сесія | `current` | Прив’язується під час створення | Повторюваної роботи з урахуванням контексту | +| Користувацька сесія | `session:custom-id` | Постійної іменованої сесії | Робочих процесів, що спираються на історію | -Завдання **Main session** ставлять системну подію в чергу та за потреби пробуджують heartbeat (`--wake now` або `--wake next-heartbeat`). Завдання **Isolated** запускають окремий цикл агента з новою сесією. **Custom sessions** (`session:xxx`) зберігають контекст між запусками, що дає змогу реалізувати процеси на кшталт щоденних стендапів, які спираються на попередні підсумки. +Завдання **основної сесії** ставлять системну подію в чергу та за потреби пробуджують Heartbeat (`--wake now` або `--wake next-heartbeat`). **Ізольовані** завдання виконують окремий цикл агента зі свіжою сесією. **Користувацькі сесії** (`session:xxx`) зберігають контекст між запусками, що дає змогу будувати робочі процеси на кшталт щоденних стендапів, які спираються на попередні підсумки. -Для ізольованих завдань “нова сесія” означає новий transcript/session id для кожного запуску. OpenClaw може переносити безпечні налаштування, як-от параметри thinking/fast/verbose, мітки та явні користувацькі перевизначення model/auth, але не успадковує фоновий контекст розмови зі старішого рядка cron: маршрутизацію channel/group, політику send або queue, elevation, origin чи прив’язку рантайму ACP. Використовуйте `current` або `session:`, коли повторюване завдання має навмисно спиратися на той самий контекст розмови. +Для ізольованих завдань «свіжа сесія» означає новий transcript/session id для кожного запуску. OpenClaw може переносити безпечні налаштування, як-от thinking/fast/verbose, мітки та явно вибрані користувачем перевизначення model/auth, але не успадковує фоновий контекст розмови зі старого рядка Cron: маршрутизацію каналу/групи, політику надсилання або черги, elevated-права, джерело чи прив’язку середовища виконання ACP. Використовуйте `current` або `session:`, якщо повторюване завдання має навмисно розвиватися в тому самому контексті розмови. -Для ізольованих завдань завершення рантайму тепер також включає best-effort очищення браузера для цієї сесії cron. Помилки очищення ігноруються, тому фактичний результат cron все одно має пріоритет. +Для ізольованих завдань завершення виконання тепер також включає найкращу спробу очищення браузера для цієї сесії Cron. Помилки очищення ігноруються, щоб фактичний результат Cron усе одно мав пріоритет. -Ізольовані запуски cron також звільняють усі вбудовані екземпляри рантайму MCP, створені для цього завдання, через спільний шлях очищення рантайму. Це відповідає тому, як для main-session і custom-session закриваються клієнти MCP, тож ізольовані завдання cron не залишають після себе дочірні stdio-процеси або довготривалі MCP-з’єднання між запусками. +Ізольовані запуски Cron також звільняють усі вбудовані екземпляри середовища виконання MCP, створені для завдання, через спільний шлях очищення середовища виконання. Це відповідає тому, як завершуються клієнти MCP для основної та користувацьких сесій, тож ізольовані завдання Cron не залишають процесів-нащадків stdio чи довготривалих MCP-з’єднань між запусками. -Коли ізольовані запуски cron оркеструють субагентів, під час доставки також -надається перевага фінальному виводу нащадка, а не застарілому проміжному тексту батьківського процесу. Якщо нащадки все ще -виконуються, OpenClaw пригнічує це часткове батьківське оновлення замість того, щоб його оголошувати. +Коли ізольовані запуски Cron оркеструють субагентів, доставка також надає перевагу фінальному +результату дочірнього нащадка над застарілим проміжним текстом батьківського агента. Якщо нащадки все ще +виконуються, OpenClaw пригнічує це часткове батьківське оновлення замість того, щоб оголошувати його. -Для текстових announce-цілей у Discord OpenClaw надсилає канонічний фінальний -текст асистента один раз, замість того щоб повторно відтворювати і streamed/intermediate text payloads, -і фінальну відповідь. Медіа та структуровані payload-и Discord, як і раніше, доставляються окремими payload-ами, щоб не втрачати вкладення та компоненти. +Для цілей announce у Discord, які підтримують лише текст, OpenClaw надсилає +канонічний фінальний текст асистента один раз замість повторного відтворення і потокового/проміжного текстового payload, і +фінальної відповіді. Медіа та структуровані payload для Discord і далі доставляються окремими payload, щоб вкладення та компоненти не були втрачені. ### Параметри payload для ізольованих завдань - `--message`: текст prompt (обов’язковий для isolated) -- `--model` / `--thinking`: перевизначення model і рівня thinking -- `--light-context`: пропустити ін’єкцію bootstrap-файла робочого простору -- `--tools exec,read`: обмежити, які tools може використовувати завдання +- `--model` / `--thinking`: перевизначення моделі та рівня thinking +- `--light-context`: пропустити ін’єкцію файлів початкового завантаження робочого простору +- `--tools exec,read`: обмежити, які інструменти може використовувати завдання -`--model` використовує вибрану дозволену model для цього завдання. Якщо запитана model -не дозволена, cron записує попередження в лог і повертається до вибору model агента/типової -model для цього завдання. Налаштовані ланцюжки fallback, як і раніше, застосовуються, але звичайне -перевизначення model без явного списку fallback для конкретного завдання більше не додає основну model -агента як приховану додаткову ціль для повторної спроби. +`--model` використовує вибрану дозволену модель для цього завдання. Якщо запитана модель +не дозволена, Cron записує попередження в журнал і повертається до вибору моделі +агента/типової моделі для цього завдання. Налаштовані ланцюжки fallback і далі застосовуються, але звичайне +перевизначення моделі без явного списку fallback для конкретного завдання більше не додає +основну модель агента як приховану додаткову ціль повторної спроби. -Пріоритет вибору model для ізольованих завдань такий: +Пріоритет вибору моделі для ізольованих завдань: -1. Перевизначення model у Gmail hook (коли запуск походить із Gmail і це перевизначення дозволене) +1. Перевизначення моделі Gmail hook (коли запуск надійшов із Gmail і це перевизначення дозволене) 2. `model` у payload конкретного завдання -3. Збережене користувачем перевизначення model для сесії cron -4. Типовий вибір model агента +3. Збережене перевизначення моделі сесії Cron, вибране користувачем +4. Вибір моделі агента/типової моделі -Режим fast також дотримується визначеного активного вибору. Якщо конфігурація вибраної model -має `params.fastMode`, ізольований cron використовує його за замовчуванням. Збережене для сесії -перевизначення `fastMode` усе одно має пріоритет над конфігурацією в обидва боки. +Швидкий режим також дотримується підсумкового активного вибору. Якщо вибрана конфігурація моделі +має `params.fastMode`, ізольований Cron використовує це типово. Збережене перевизначення +сесії `fastMode` усе одно має пріоритет над конфігурацією в обох напрямках. -Якщо під час ізольованого запуску відбувається жива передача на іншу model, cron повторює спробу з -перемкненим provider/model і зберігає цей активний вибір для поточного запуску -перед повторною спробою. Якщо перемикання також містить новий auth profile, cron зберігає -і це перевизначення auth profile для поточного запуску. Кількість повторних спроб обмежена: -після початкової спроби плюс 2 повторні спроби після перемикання cron перериває роботу, а не зациклюється безкінечно. +Якщо ізольований запуск натрапляє на живу передачу керування зі зміною моделі, Cron повторює спробу з +перемкненими provider/model і зберігає цей активний вибір для поточного запуску +перед повторною спробою. Коли перемикання також містить новий профіль auth, Cron зберігає +це перевизначення профілю auth для поточного запуску. Кількість повторів обмежена: після +початкової спроби та ще 2 повторів через перемикання Cron перериває виконання замість безкінечного циклу. -## Доставка і вивід +## Доставка та вивід -| Режим | Що відбувається | -| --------- | -------------------------------------------------------------------- | +| Режим | Що відбувається | +| --------- | ----------------------------------------------------------------- | | `announce` | Резервно доставляє фінальний текст до цілі, якщо агент його не надіслав | -| `webhook` | Надсилає event payload завершення через POST на URL | -| `none` | Без резервної доставки від runner | +| `webhook` | Надсилає POST із payload завершеної події на URL | +| `none` | Без резервної доставки з боку виконавця | -Використовуйте `--announce --channel telegram --to "-1001234567890"` для доставки в канал. Для тем форуму Telegram використовуйте `-1001234567890:topic:123`. Для цілей Slack/Discord/Mattermost слід використовувати явні префікси (`channel:`, `user:`). +Використовуйте `--announce --channel telegram --to "-1001234567890"` для доставки в канал. Для тем форуму Telegram використовуйте `-1001234567890:topic:123`. Цілі Slack/Discord/Mattermost мають використовувати явні префікси (`channel:`, `user:`). Ідентифікатори кімнат Matrix чутливі до регістру; використовуйте точний room ID або форму `room:!room:server` із Matrix. -Для ізольованих завдань доставка в чат є спільною. Якщо маршрут чату доступний, -агент може використовувати tool `message`, навіть коли завдання використовує `--no-deliver`. Якщо -агент надсилає повідомлення до налаштованої/поточної цілі, OpenClaw пропускає резервне announce. -В іншому разі `announce`, `webhook` і `none` лише керують тим, що runner робить із фінальною відповіддю після циклу агента. +Для ізольованих завдань доставка до чату є спільною. Якщо маршрут чату доступний, +агент може використовувати інструмент `message`, навіть якщо для завдання задано `--no-deliver`. Якщо +агент надсилає повідомлення до налаштованої/поточної цілі, OpenClaw пропускає резервний +announce. В іншому разі `announce`, `webhook` і `none` керують лише тим, що +виконавець робить із фінальною відповіддю після циклу агента. -Сповіщення про помилки мають окремий шлях призначення: +Коли агент створює ізольоване нагадування з активного чату, OpenClaw зберігає +збережену активну ціль доставки для маршруту резервного announce. Внутрішні +ключі сесії можуть бути в нижньому регістрі; цілі доставки provider не відновлюються +з цих ключів, коли доступний поточний контекст чату. -- `cron.failureDestination` задає глобальне типове значення для сповіщень про помилки. -- `job.delivery.failureDestination` перевизначає його для окремого завдання. -- Якщо не задано ні перше, ні друге, і завдання вже доставляє через `announce`, сповіщення про помилки тепер резервно надсилаються до цієї основної announce-цілі. -- `delivery.failureDestination` підтримується лише для завдань із `sessionTarget="isolated"`, якщо основний режим доставки не `webhook`. +Сповіщення про збої використовують окремий маршрут призначення: + +- `cron.failureDestination` задає глобальне типове призначення для сповіщень про збої. +- `job.delivery.failureDestination` перевизначає це для окремого завдання. +- Якщо не задано жодного з них і завдання вже доставляє результат через `announce`, сповіщення про збої тепер резервно використовують цю основну ціль announce. +- `delivery.failureDestination` підтримується лише для завдань із `sessionTarget="isolated"`, якщо основний режим доставки не є `webhook`. ## Приклади CLI -Одноразове нагадування (main session): +Одноразове нагадування (основна сесія): ```bash openclaw cron add \ @@ -172,7 +176,7 @@ openclaw cron add \ --wake now ``` -Повторюване ізольоване завдання з доставкою: +Періодичне ізольоване завдання з доставкою: ```bash openclaw cron add \ @@ -202,7 +206,7 @@ openclaw cron add \ ## Webhook-и -Gateway може надавати HTTP endpoint-и Webhook для зовнішніх тригерів. Увімкніть це в конфігурації: +Gateway може відкривати кінцеві точки HTTP Webhook для зовнішніх тригерів. Увімкніть у конфігурації: ```json5 { @@ -221,11 +225,11 @@ Gateway може надавати HTTP endpoint-и Webhook для зовнішн - `Authorization: Bearer ` (рекомендовано) - `x-openclaw-token: ` -Токени в query string відхиляються. +Токени в рядку запиту відхиляються. ### POST /hooks/wake -Поставити системну подію в чергу для main session: +Поставити системну подію в чергу для основної сесії: ```bash curl -X POST http://127.0.0.1:18789/hooks/wake \ @@ -250,25 +254,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/\) +### Зіставлені hook-и (POST /hooks/\) -Власні імена hook розв’язуються через `hooks.mappings` у конфігурації. Mappings можуть перетворювати довільні payload-и на дії `wake` або `agent` за допомогою шаблонів або кодових перетворень. +Користувацькі імена hook-ів зіставляються через `hooks.mappings` у конфігурації. Зіставлення можуть перетворювати довільний payload на дії `wake` або `agent` за допомогою шаблонів або перетворень у коді. ### Безпека -- Тримайте endpoint-и hook за loopback, tailnet або довіреним reverse proxy. +- Тримайте кінцеві точки 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), увімкнені hooks OpenClaw, Tailscale для публічного HTTPS endpoint. +**Передумови**: CLI `gcloud`, `gog` (gogcli), увімкнені hook OpenClaw, Tailscale для публічної кінцевої точки HTTPS. ### Налаштування через майстер (рекомендовано) @@ -276,11 +280,11 @@ curl -X POST http://127.0.0.1:18789/hooks/agent \ openclaw webhooks gmail setup --account openclaw@gmail.com ``` -Це записує конфігурацію `hooks.gmail`, вмикає Gmail preset і використовує Tailscale Funnel для push endpoint. +Це записує конфігурацію `hooks.gmail`, вмикає пресет Gmail і використовує Tailscale Funnel для push-кінцевої точки. ### Автозапуск Gateway -Коли `hooks.enabled=true` і задано `hooks.gmail.account`, Gateway під час запуску виконує `gog gmail watch serve` і автоматично поновлює watch. Установіть `OPENCLAW_SKIP_GMAIL_WATCHER=1`, щоб відмовитися від цього. +Коли `hooks.enabled=true` і задано `hooks.gmail.account`, Gateway під час завантаження запускає `gog gmail watch serve` і автоматично поновлює watch. Задайте `OPENCLAW_SKIP_GMAIL_WATCHER=1`, щоб відмовитися від цього. ### Ручне одноразове налаштування @@ -310,7 +314,7 @@ gog gmail watch start \ --topic projects//topics/gog-gmail-watch ``` -### Перевизначення model для Gmail +### Перевизначення моделі для Gmail ```json5 { @@ -352,16 +356,16 @@ openclaw cron add --name "Ops sweep" --cron "0 6 * * *" --session isolated --mes openclaw cron edit --clear-agent ``` -Примітка щодо перевизначення model: +Примітка щодо перевизначення моделі: -- `openclaw cron add|edit --model ...` змінює вибрану model завдання. -- Якщо model дозволена, саме цей provider/model потрапляє до ізольованого - запуску агента. -- Якщо вона не дозволена, cron виводить попередження і повертається до вибору - model агента/типової model для цього завдання. -- Налаштовані ланцюжки fallback, як і раніше, застосовуються, але звичайне перевизначення `--model` - без явного списку fallback для конкретного завдання більше не переходить до основної - model агента як до тихої додаткової цілі повторної спроби. +- `openclaw cron add|edit --model ...` змінює вибрану модель завдання. +- Якщо модель дозволена, саме цей provider/model передається в ізольований запуск + агента. +- Якщо вона не дозволена, cron виводить попередження й повертається до вибору + моделі агента/типової моделі для завдання. +- Налаштовані ланцюжки fallback і далі застосовуються, але звичайне перевизначення `--model` + без явного списку fallback для конкретного завдання більше не переходить до + основної моделі агента як до тихої додаткової цілі повторної спроби. ## Конфігурація @@ -383,19 +387,19 @@ openclaw cron edit --clear-agent } ``` -Sidecar стану рантайму виводиться з `cron.store`: сховище `.json`, наприклад -`~/clawd/cron/jobs.json`, використовує `~/clawd/cron/jobs-state.json`, тоді як до шляху сховища +Побічний файл стану виконання виводиться з `cron.store`: сховище `.json`, наприклад +`~/clawd/cron/jobs.json`, використовує `~/clawd/cron/jobs-state.json`, а до шляху сховища без суфікса `.json` додається `-state.json`. -Вимкнення cron: `cron.enabled: false` або `OPENCLAW_SKIP_CRON=1`. +Вимкнення Cron: `cron.enabled: false` або `OPENCLAW_SKIP_CRON=1`. -**Повтор одноразового завдання**: тимчасові помилки (rate limit, перевантаження, мережа, server error) повторюються до 3 разів з експоненційною затримкою. Постійні помилки вимикаються негайно. +**Повтор одноразового завдання**: тимчасові помилки (обмеження швидкості, перевантаження, мережа, помилка сервера) повторюються до 3 разів з експоненційним backoff. Постійні помилки вимикаються негайно. -**Повторюваний повтор**: експоненційна затримка (від 30 с до 60 хв) між повторними спробами. Затримка скидається після наступного успішного запуску. +**Повтор періодичного завдання**: експоненційний backoff (від 30 с до 60 хв) між повторними спробами. Backoff скидається після наступного успішного запуску. -**Обслуговування**: `cron.sessionRetention` (типово `24h`) очищає записи сесій ізольованих запусків. `cron.runLog.maxBytes` / `cron.runLog.keepLines` автоматично очищають файли журналів запусків. +**Обслуговування**: `cron.sessionRetention` (типово `24h`) очищає записи сесій ізольованих запусків. `cron.runLog.maxBytes` / `cron.runLog.keepLines` автоматично очищають файли журналу запусків. -## Усунення несправностей +## Усунення неполадок ### Послідовність команд @@ -413,31 +417,34 @@ openclaw doctor ### Cron не спрацьовує - Перевірте `cron.enabled` і змінну середовища `OPENCLAW_SKIP_CRON`. -- Переконайтеся, що Gateway працює безперервно. -- Для розкладів `cron` перевірте часовий пояс (`--tz`) відносно часового поясу хоста. -- `reason: not-due` у виводі запуску означає, що ручний запуск було перевірено командою `openclaw cron run --due`, і час виконання завдання ще не настав. +- Підтвердьте, що Gateway працює безперервно. +- Для розкладів `cron` перевірте часовий пояс (`--tz`) порівняно з часовим поясом хоста. +- `reason: not-due` у виводі запуску означає, що ручний запуск було перевірено через `openclaw cron run --due`, і час завдання ще не настав. ### Cron спрацював, але доставки немає -- Режим доставки `none` означає, що резервне надсилання з боку runner не очікується. Агент - усе одно може надсилати напряму за допомогою tool `message`, коли маршрут чату доступний. +- Режим доставки `none` означає, що резервне надсилання з боку виконавця не очікується. Агент + усе ще може надсилати напряму за допомогою інструмента `message`, коли маршрут чату доступний. - Відсутня/некоректна ціль доставки (`channel`/`to`) означає, що вихідне надсилання було пропущено. -- Помилки автентифікації каналу (`unauthorized`, `Forbidden`) означають, що доставку заблоковано обліковими даними. -- Якщо ізольований запуск повертає лише silent token (`NO_REPLY` / `no_reply`), +- Для Matrix скопійовані або застарілі завдання з room ID у `delivery.to`, приведеними до нижнього регістру, + можуть завершуватися невдачею, оскільки room ID Matrix чутливі до регістру. Відредагуйте завдання на точне + значення `!room:server` або `room:!room:server` із Matrix. +- Помилки автентифікації каналу (`unauthorized`, `Forbidden`) означають, що доставка була заблокована через облікові дані. +- Якщо ізольований запуск повертає лише тихий токен (`NO_REPLY` / `no_reply`), OpenClaw пригнічує пряме вихідне надсилання, а також резервний - шлях queued summary, тому назад у чат нічого не публікується. + шлях зведення в черзі, тому назад у чат нічого не публікується. - Якщо агент має сам написати користувачеві, перевірте, що завдання має придатний - маршрут (`channel: "last"` із попереднім чатом або явний channel/target). + маршрут (`channel: "last"` із попереднім чатом або явний канал/ціль). -### Нюанси часових поясів +### Поширені нюанси часових поясів - Cron без `--tz` використовує часовий пояс хоста gateway. -- Розклади `at` без часового поясу обробляються як UTC. -- Heartbeat `activeHours` використовує налаштоване визначення часового поясу. +- Розклади `at` без часового поясу трактуються як UTC. +- `activeHours` у Heartbeat використовує налаштоване визначення часового поясу. ## Пов’язане -- [Automation & Tasks](/uk/automation) — усі механізми автоматизації з одного погляду -- [Background Tasks](/uk/automation/tasks) — журнал завдань для виконань cron -- [Heartbeat](/uk/gateway/heartbeat) — періодичні цикли main-session +- [Automation & Tasks](/uk/automation) — усі механізми автоматизації з першого погляду +- [Background Tasks](/uk/automation/tasks) — журнал завдань для виконань Cron +- [Heartbeat](/uk/gateway/heartbeat) — періодичні цикли основної сесії - [Timezone](/uk/concepts/timezone) — конфігурація часового поясу diff --git a/docs/uk/channels/matrix.md b/docs/uk/channels/matrix.md index 5e53b05ef..e7d675cc3 100644 --- a/docs/uk/channels/matrix.md +++ b/docs/uk/channels/matrix.md @@ -5,23 +5,23 @@ read_when: summary: Статус підтримки Matrix, налаштування та приклади конфігурації title: Matrix x-i18n: - generated_at: "2026-04-25T21:54:30Z" + generated_at: "2026-04-26T01:24:10Z" model: gpt-5.4 provider: openai - source_hash: faa07a34cbf7b660675298dd0570d1f09b00d578466e7e65e6909c9677bdbccf + source_hash: 1850d51aba7279a3d495c346809b4df26d7da4b7611c5a8c9ab70f9a2b3c827d source_path: channels/matrix.md workflow: 15 --- -Matrix — це вбудований channel Plugin для OpenClaw. -Він використовує офіційний `matrix-js-sdk` і підтримує DM, кімнати, треди, медіа, реакції, опитування, геолокацію та E2EE. +Matrix — це вбудований Plugin каналу для OpenClaw. +Він використовує офіційний `matrix-js-sdk` і підтримує особисті повідомлення, кімнати, треди, медіа, реакції, опитування, геолокацію та E2EE. ## Вбудований Plugin -Matrix постачається як вбудований Plugin у поточних релізах OpenClaw, тож для звичайних -пакетованих збірок окреме встановлення не потрібне. +Matrix постачається як вбудований Plugin у поточних випусках OpenClaw, тому звичайні +пакетні збірки не потребують окремого встановлення. -Якщо ви використовуєте старішу збірку або власне встановлення без Matrix, встановіть +Якщо у вас старіша збірка або користувацьке встановлення без Matrix, встановіть його вручну: Встановлення з npm: @@ -41,17 +41,17 @@ openclaw plugins install ./path/to/local/matrix-plugin ## Налаштування 1. Переконайтеся, що Plugin Matrix доступний. - - У поточних пакетованих релізах OpenClaw він уже вбудований. - - У старіших/власних встановленнях його можна додати вручну за допомогою наведених вище команд. -2. Створіть обліковий запис Matrix на своєму homeserver. -3. Налаштуйте `channels.matrix`, використовуючи один із варіантів: + - Поточні пакетні випуски OpenClaw вже містять його. + - У старіших/користувацьких встановленнях його можна додати вручну наведеними вище командами. +2. Створіть обліковий запис Matrix на вашому homeserver. +3. Налаштуйте `channels.matrix` одним із таких способів: - `homeserver` + `accessToken`, або - `homeserver` + `userId` + `password`. 4. Перезапустіть Gateway. -5. Почніть DM із ботом або запросіть його до кімнати. +5. Почніть особисте листування з ботом або запросіть його до кімнати. - Нові запрошення Matrix працюють лише тоді, коли `channels.matrix.autoJoin` це дозволяє. -Інтерактивні шляхи налаштування: +Шляхи інтерактивного налаштування: ```bash openclaw channels add @@ -61,27 +61,27 @@ openclaw configure --section channels Майстер Matrix запитує: - URL homeserver -- метод автентифікації: access token або пароль +- метод автентифікації: токен доступу або пароль - ID користувача (лише для автентифікації паролем) - необов’язкову назву пристрою - чи вмикати E2EE -- чи налаштовувати доступ до кімнат і автоматичне приєднання за запрошеннями +- чи налаштовувати доступ до кімнат і автоматичне приєднання за запрошенням -Ключова поведінка майстра: +Ключові особливості майстра: -- Якщо змінні середовища автентифікації Matrix уже існують і для цього облікового запису ще не збережено автентифікацію в config, майстер запропонує скорочений варіант із env, щоб зберегти автентифікацію у змінних середовища. +- Якщо змінні середовища автентифікації Matrix уже існують і для цього облікового запису ще не збережено автентифікацію в конфігурації, майстер запропонує скористатися env-скороченням, щоб зберегти автентифікацію у змінних середовища. - Назви облікових записів нормалізуються до ID облікового запису. Наприклад, `Ops Bot` стає `ops-bot`. -- Записи allowlist для DM напряму приймають `@user:server`; відображувані імена працюють лише тоді, коли live directory lookup знаходить одну точну відповідність. -- Записи allowlist для кімнат напряму приймають ID кімнат і псевдоніми. Надавайте перевагу `!room:server` або `#alias:server`; невизначені назви ігноруються під час виконання під час розв’язання allowlist. -- У режимі allowlist для автоматичного приєднання за запрошеннями використовуйте лише стабільні цілі запрошень: `!roomId:server`, `#alias:server` або `*`. Звичайні назви кімнат відхиляються. +- Записи allowlist для особистих повідомлень напряму приймають `@user:server`; відображувані імена працюють лише тоді, коли живий пошук у каталозі знаходить одну точну відповідність. +- Записи allowlist для кімнат напряму приймають ID кімнат і псевдоніми. Надавайте перевагу `!room:server` або `#alias:server`; нерозв’язані назви ігноруються під час виконання під час розв’язання allowlist. +- У режимі allowlist для автоматичного приєднання за запрошенням використовуйте лише стабільні цілі запрошення: `!roomId:server`, `#alias:server` або `*`. Звичайні назви кімнат відхиляються. - Щоб розв’язати назви кімнат перед збереженням, використовуйте `openclaw channels resolve --channel matrix "Project Room"`. -`channels.matrix.autoJoin` за замовчуванням має значення `off`. +`channels.matrix.autoJoin` типово має значення `off`. -Якщо залишити його невстановленим, бот не приєднуватиметься до запрошених кімнат або нових запрошень у стилі DM, тож він не з’являтиметься в нових групах або запрошених DM, якщо ви спершу не приєднаєтеся вручну. +Якщо залишити його невстановленим, бот не приєднуватиметься до запрошених кімнат або нових запрошень у стилі особистих повідомлень, тому він не з’являтиметься в нових групах або запрошених особистих повідомленнях, якщо ви спочатку не приєднаєтеся вручну. -Установіть `autoJoin: "allowlist"` разом із `autoJoinAllowlist`, щоб обмежити, які запрошення він прийматиме, або встановіть `autoJoin: "always"`, якщо хочете, щоб він приєднувався до кожного запрошення. +Установіть `autoJoin: "allowlist"` разом із `autoJoinAllowlist`, щоб обмежити, які запрошення він приймає, або встановіть `autoJoin: "always"`, якщо хочете, щоб він приєднувався до кожного запрошення. У режимі `allowlist` `autoJoinAllowlist` приймає лише `!roomId:server`, `#alias:server` або `*`. @@ -141,17 +141,17 @@ openclaw configure --section channels homeserver: "https://matrix.example.org", userId: "@bot:example.org", password: "replace-me", // pragma: allowlist secret - deviceName: "OpenClaw Gateway", + deviceName: "Шлюз OpenClaw", }, }, } ``` Matrix зберігає кешовані облікові дані в `~/.openclaw/credentials/matrix/`. -Для облікового запису за замовчуванням використовується `credentials.json`; іменовані облікові записи використовують `credentials-.json`. -Коли там існують кешовані облікові дані, OpenClaw вважає Matrix налаштованим для setup, doctor і виявлення channel-status, навіть якщо поточна автентифікація не задана безпосередньо в config. +Для типового облікового запису використовується `credentials.json`; для іменованих облікових записів — `credentials-.json`. +Коли там існують кешовані облікові дані, OpenClaw вважає Matrix налаштованим для setup, doctor і виявлення статусу каналу, навіть якщо поточна автентифікація не задана безпосередньо в конфігурації. -Еквіваленти змінних середовища (використовуються, коли ключ config не встановлено): +Відповідники змінних середовища (використовуються, коли ключ конфігурації не встановлено): - `MATRIX_HOMESERVER` - `MATRIX_ACCESS_TOKEN` @@ -160,7 +160,7 @@ Matrix зберігає кешовані облікові дані в `~/.opencl - `MATRIX_DEVICE_ID` - `MATRIX_DEVICE_NAME` -Для облікових записів не за замовчуванням використовуйте змінні середовища з областю дії облікового запису: +Для нетипових облікових записів використовуйте змінні середовища з областю облікового запису: - `MATRIX__HOMESERVER` - `MATRIX__ACCESS_TOKEN` @@ -179,16 +179,16 @@ Matrix зберігає кешовані облікові дані в `~/.opencl - `MATRIX_OPS_X2D_BOT_HOMESERVER` - `MATRIX_OPS_X2D_BOT_ACCESS_TOKEN` -Matrix екранує розділові знаки в ID облікових записів, щоб уникнути колізій змінних середовища з областю дії. -Наприклад, `-` стає `_X2D_`, тож `ops-prod` перетворюється на `MATRIX_OPS_X2D_PROD_*`. +Matrix екранує розділові знаки в ID облікових записів, щоб уникнути колізій у змінних середовища з областю дії. +Наприклад, `-` стає `_X2D_`, тому `ops-prod` перетворюється на `MATRIX_OPS_X2D_PROD_*`. -Інтерактивний майстер пропонує скорочений варіант із env vars лише тоді, коли ці змінні середовища автентифікації вже присутні, а для вибраного облікового запису ще не збережено автентифікацію Matrix у config. +Інтерактивний майстер пропонує скорочення через env vars лише тоді, коли ці змінні середовища автентифікації вже присутні, а для вибраного облікового запису ще не збережено автентифікацію Matrix у конфігурації. -`MATRIX_HOMESERVER` не можна встановити з workspace `.env`; див. [Файли workspace `.env`](/uk/gateway/security). +`MATRIX_HOMESERVER` не можна встановити з робочого `.env`; див. [Робочі файли `.env`](/uk/gateway/security). ## Приклад конфігурації -Це практична базова конфігурація з pairing для DM, allowlist для кімнат і ввімкненим E2EE: +Ось практична базова конфігурація з pairing для особистих повідомлень, allowlist для кімнат та увімкненим E2EE: ```json5 { @@ -223,17 +223,17 @@ Matrix екранує розділові знаки в ID облікових з } ``` -`autoJoin` застосовується до всіх запрошень Matrix, включно із запрошеннями у стилі DM. OpenClaw не може надійно -класифікувати запрошену кімнату як DM або групу в момент запрошення, тому всі запрошення спочатку проходять через `autoJoin`. -`dm.policy` застосовується після того, як бот приєднався і кімнату класифіковано як DM. +`autoJoin` застосовується до всіх запрошень Matrix, зокрема до запрошень у стилі особистих повідомлень. OpenClaw не може надійно +класифікувати запрошену кімнату як особистий чат чи групу на момент запрошення, тому всі запрошення спочатку проходять через `autoJoin`. +`dm.policy` застосовується після того, як бот уже приєднався і кімнату класифіковано як особистий чат. -## Попередній перегляд потокової відповіді +## Попередні перегляди потокових відповідей -Потокова передача відповідей у Matrix є добровільною функцією. +Потокові відповіді Matrix для reply є опціональними. -Установіть `channels.matrix.streaming` у `"partial"`, якщо хочете, щоб OpenClaw надсилав одну live preview -відповідь, редагував цей preview на місці, поки модель генерує текст, а потім завершував його, коли -відповідь буде готова: +Установіть `channels.matrix.streaming` у значення `"partial"`, якщо хочете, щоб OpenClaw надсилав одну живу +відповідь-попередній перегляд, редагував цей попередній перегляд на місці, поки модель генерує текст, а +потім завершував його, коли відповідь готова: ```json5 { @@ -245,30 +245,30 @@ Matrix екранує розділові знаки в ID облікових з } ``` -- `streaming: "off"` — значення за замовчуванням. OpenClaw чекає на фінальну відповідь і надсилає її один раз. -- `streaming: "partial"` створює одне редаговане preview-повідомлення для поточного блоку відповіді асистента, використовуючи звичайні текстові повідомлення Matrix. Це зберігає застарілу поведінку Matrix із сповіщенням спочатку про preview, тому стандартні клієнти можуть сповіщати про перший текст потокового preview, а не про завершений блок. -- `streaming: "quiet"` створює одне редаговане тихе preview-повідомлення для поточного блоку відповіді асистента. Використовуйте це лише тоді, коли ви також налаштували push rules отримувача для завершених редагувань preview. -- `blockStreaming: true` вмикає окремі повідомлення про поступ у Matrix. Якщо ввімкнено потокову передачу preview, Matrix зберігає live draft для поточного блоку та зберігає завершені блоки як окремі повідомлення. -- Коли потокова передача preview увімкнена, а `blockStreaming` вимкнено, Matrix редагує live draft на місці та завершує ту саму подію, коли блок або хід завершено. -- Якщо preview більше не вміщується в одну подію Matrix, OpenClaw припиняє потокову передачу preview і повертається до звичайної фінальної доставки. -- Відповіді з медіа, як і раніше, надсилають вкладення у звичайному режимі. Якщо застарілий preview більше не можна безпечно повторно використати, OpenClaw редагує його перед надсиланням фінальної відповіді з медіа. -- Редагування preview вимагають додаткових викликів API Matrix. Залиште streaming вимкненим, якщо хочете найобережнішої поведінки щодо обмеження швидкості. +- `streaming: "off"` — значення за замовчуванням. OpenClaw чекає на остаточну відповідь і надсилає її один раз. +- `streaming: "partial"` створює одне редаговане повідомлення попереднього перегляду для поточного блоку асистента, використовуючи звичайні текстові повідомлення Matrix. Це зберігає застарілу поведінку Matrix, коли сповіщення надсилається спочатку на попередній перегляд, тому стандартні клієнти можуть сповіщати про перший потоковий текст попереднього перегляду, а не про завершений блок. +- `streaming: "quiet"` створює одне редаговане тихе повідомлення-попередній перегляд для поточного блоку асистента. Використовуйте це лише тоді, коли ви також налаштували push rules отримувача для завершених редагувань попереднього перегляду. +- `blockStreaming: true` вмикає окремі повідомлення прогресу Matrix. Якщо потоковий попередній перегляд увімкнено, Matrix зберігає чернетку в реальному часі для поточного блоку і залишає завершені блоки як окремі повідомлення. +- Коли потоковий попередній перегляд увімкнено, а `blockStreaming` вимкнено, Matrix редагує чернетку в реальному часі на місці й завершує ту саму подію, коли блок або хід завершено. +- Якщо попередній перегляд більше не вміщується в одну подію Matrix, OpenClaw припиняє потоковий попередній перегляд і повертається до звичайної фінальної доставки. +- Відповіді з медіа все одно надсилають вкладення у звичайний спосіб. Якщо застарілий попередній перегляд більше не можна безпечно повторно використати, OpenClaw редагує його перед надсиланням фінальної відповіді з медіа. +- Редагування попереднього перегляду потребують додаткових викликів API Matrix. Залишайте потокову передачу вимкненою, якщо хочете найобережнішу поведінку щодо обмеження швидкості. -`blockStreaming` сам по собі не вмикає чернетки preview. -Використовуйте `streaming: "partial"` або `streaming: "quiet"` для редагувань preview; потім додавайте `blockStreaming: true`, лише якщо також хочете, щоб завершені блоки асистента залишалися видимими як окремі повідомлення про поступ. +`blockStreaming` саме по собі не вмикає чернетки попереднього перегляду. +Використовуйте `streaming: "partial"` або `streaming: "quiet"` для редагувань попереднього перегляду; потім додавайте `blockStreaming: true` лише якщо також хочете, щоб завершені блоки асистента залишалися видимими як окремі повідомлення про перебіг виконання. -Якщо вам потрібні стандартні сповіщення Matrix без власних push rules, використовуйте `streaming: "partial"` для поведінки з preview спочатку або залиште `streaming` вимкненим для доставки лише фінального повідомлення. З `streaming: "off"`: +Якщо вам потрібні стандартні сповіщення Matrix без користувацьких push rules, використовуйте `streaming: "partial"` для поведінки з попереднім переглядом спочатку або залиште `streaming` вимкненим для лише фінальної доставки. Якщо `streaming: "off"`: - `blockStreaming: true` надсилає кожен завершений блок як звичайне повідомлення Matrix зі сповіщенням. - `blockStreaming: false` надсилає лише фінальну завершену відповідь як звичайне повідомлення Matrix зі сповіщенням. -### Self-hosted push rules для тихих завершених preview +### Власні push rules для тихих завершених попередніх переглядів -Тиха потокова передача (`streaming: "quiet"`) сповіщає отримувачів лише тоді, коли блок або хід завершено — правило push для кожного користувача має збігатися з маркером завершеного preview. Див. [Правила push Matrix для тихих preview](/uk/channels/matrix-push-rules) для повного налаштування (токен отримувача, перевірка pusher, встановлення правил, примітки для окремих homeserver). +Тиха потокова передача (`streaming: "quiet"`) сповіщає отримувачів лише після завершення блоку або ходу — правило push для конкретного користувача має збігатися з маркером завершеного попереднього перегляду. Повне налаштування див. у [Правила push Matrix для тихих попередніх переглядів](/uk/channels/matrix-push-rules) (токен отримувача, перевірка pusher, встановлення правил, примітки для конкретних homeserver). ## Кімнати бот-до-бота -За замовчуванням повідомлення Matrix від інших налаштованих облікових записів OpenClaw Matrix ігноруються. +Типово повідомлення Matrix від інших налаштованих облікових записів OpenClaw Matrix ігноруються. Використовуйте `allowBots`, якщо ви свідомо хочете міжагентний трафік Matrix: @@ -287,17 +287,17 @@ Matrix екранує розділові знаки в ID облікових з } ``` -- `allowBots: true` приймає повідомлення від інших налаштованих бот-облікових записів Matrix у дозволених кімнатах і DM. -- `allowBots: "mentions"` приймає такі повідомлення лише тоді, коли вони явно згадують цього бота в кімнатах. DM усе одно дозволені. +- `allowBots: true` приймає повідомлення від інших налаштованих облікових записів ботів Matrix у дозволених кімнатах і особистих повідомленнях. +- `allowBots: "mentions"` приймає ці повідомлення лише тоді, коли вони явно згадують цього бота в кімнатах. Особисті повідомлення все одно дозволені. - `groups..allowBots` перевизначає налаштування рівня облікового запису для однієї кімнати. -- OpenClaw, як і раніше, ігнорує повідомлення від того самого ID користувача Matrix, щоб уникнути циклів самовідповідей. -- Matrix тут не надає вбудованого прапорця бота; OpenClaw трактує "автор повідомлення — бот" як "надіслано іншим налаштованим обліковим записом Matrix на цьому Gateway OpenClaw". +- OpenClaw і надалі ігнорує повідомлення від того самого ID користувача Matrix, щоб уникнути циклів самовідповіді. +- Matrix тут не надає вбудованого прапорця бота; OpenClaw трактує «створене ботом» як «надіслане іншим налаштованим обліковим записом Matrix на цьому Gateway OpenClaw». -Використовуйте суворі allowlist для кімнат і вимоги до згадування, коли вмикаєте трафік бот-до-бота у спільних кімнатах. +Під час увімкнення трафіку бот-до-бота в спільних кімнатах використовуйте суворі allowlist для кімнат і вимоги до згадування. ## Шифрування та верифікація -У зашифрованих (E2EE) кімнатах вихідні події зображень використовують `thumbnail_file`, тож preview зображень шифруються разом із повним вкладенням. Незашифровані кімнати, як і раніше, використовують звичайний `thumbnail_url`. Налаштування не потрібне — Plugin автоматично визначає стан E2EE. +У зашифрованих кімнатах (E2EE) вихідні події зображень використовують `thumbnail_file`, тож попередні перегляди зображень шифруються разом із повним вкладенням. Незашифровані кімнати й надалі використовують звичайний `thumbnail_url`. Жодної конфігурації не потрібно — Plugin автоматично визначає стан E2EE. Увімкнення шифрування: @@ -315,7 +315,7 @@ Matrix екранує розділові знаки в ID облікових з } ``` -Команди верифікації (усі підтримують `--verbose` для діагностики та `--json` для машиночитаного виводу): +Команди верифікації (усі підтримують `--verbose` для діагностики та `--json` для машинозчитуваного виводу): ```bash openclaw matrix verify status @@ -327,7 +327,7 @@ openclaw matrix verify status openclaw matrix verify status --verbose ``` -Включити збережений recovery key у машиночитаний вивід: +Включити збережений recovery key у машинозчитуваний вивід: ```bash openclaw matrix verify status --include-recovery-key --json @@ -345,7 +345,7 @@ openclaw matrix verify bootstrap openclaw matrix verify bootstrap --verbose ``` -Примусово скинути поточну ідентичність cross-signing перед bootstrap: +Примусово скинути ідентичність cross-signing перед bootstrap: ```bash openclaw matrix verify bootstrap --force-reset-cross-signing @@ -363,25 +363,25 @@ openclaw matrix verify device "" - `Backup usable`: резервну копію ключів кімнат можна завантажити за допомогою довіреного recovery material. - `Device verified by owner`: поточний пристрій OpenClaw має повну довіру до ідентичності Matrix cross-signing. -`Signed by owner` у докладному або JSON-виводі — це лише діагностичний показник. OpenClaw не +`Signed by owner` у докладному або JSON-виводі є лише діагностичним значенням. OpenClaw не вважає цього достатнім, якщо `Cross-signing verified` також не має значення `yes`. -Команда все одно завершується з ненульовим кодом виходу, якщо повна довіра до ідентичності Matrix не завершена, -навіть якщо recovery key може розблокувати матеріал резервної копії. У такому разі завершіть -self-verification з іншого клієнта Matrix: +Команда все одно завершується з ненульовим кодом, якщо повну довіру до ідентичності Matrix не завершено, +навіть якщо recovery key може розблокувати резервні матеріали. У такому разі завершіть +самоверифікацію з іншого клієнта Matrix: ```bash openclaw matrix verify self ``` -Прийміть запит в іншому клієнті Matrix, порівняйте емодзі SAS або десяткові числа +Прийміть запит в іншому клієнті Matrix, порівняйте SAS emoji або десяткові числа і вводьте `yes` лише тоді, коли вони збігаються. Команда чекає, доки Matrix не повідомить `Cross-signing verified: yes`, перш ніж завершитися успішно. Використовуйте `verify bootstrap --force-reset-cross-signing` лише тоді, коли свідомо хочете замінити поточну ідентичність cross-signing. -Докладні відомості про верифікацію пристрою: +Докладні відомості верифікації пристрою: ```bash openclaw matrix verify device "" --verbose @@ -399,25 +399,25 @@ openclaw matrix verify backup status openclaw matrix verify backup status --verbose ``` -Відновлення ключів кімнат із резервної копії на сервері: +Відновлення ключів кімнат із серверної резервної копії: ```bash openclaw matrix verify backup restore ``` -Якщо ключ резервної копії ще не завантажено на диск, передайте Matrix recovery key: +Якщо ключ резервної копії ще не завантажено з диска, передайте Matrix recovery key: ```bash openclaw matrix verify backup restore --recovery-key "" ``` -Інтерактивний процес self-verification: +Інтерактивний процес самоверифікації: ```bash openclaw matrix verify self ``` -Для низькорівневих або вхідних запитів на верифікацію використовуйте: +Для нижчорівневих або вхідних запитів на верифікацію використовуйте: ```bash openclaw matrix verify accept @@ -426,7 +426,7 @@ openclaw matrix verify sas openclaw matrix verify confirm-sas ``` -Щоб скасувати запит, використовуйте `openclaw matrix verify cancel `. +Використовуйте `openclaw matrix verify cancel `, щоб скасувати запит. Докладна діагностика відновлення: @@ -434,20 +434,20 @@ openclaw matrix verify confirm-sas openclaw matrix verify backup restore --verbose ``` -Видалити поточну резервну копію на сервері та створити нову базову резервну копію. Якщо збережений +Видаліть поточну серверну резервну копію та створіть нову базову резервну копію. Якщо збережений ключ резервної копії не вдається коректно завантажити, це скидання також може повторно створити secret storage, щоб -під час майбутніх cold start можна було завантажити новий ключ резервної копії: +майбутні cold start могли завантажувати новий ключ резервної копії: ```bash openclaw matrix verify backup reset --yes ``` -Усі команди `verify` за замовчуванням лаконічні (включно з тихим внутрішнім журналюванням SDK) і показують детальну діагностику лише з `--verbose`. -Для повного машиночитаного виводу під час створення скриптів використовуйте `--json`. +Усі команди `verify` типово є стислими (включно з тихим внутрішнім логуванням SDK) і показують детальну діагностику лише з `--verbose`. +Використовуйте `--json` для повного машинозчитуваного виводу в скриптах. -У конфігураціях із кількома обліковими записами команди Matrix CLI використовують неявний типовий обліковий запис Matrix, якщо не передати `--account `. -Якщо ви налаштовуєте кілька іменованих облікових записів, спочатку встановіть `channels.matrix.defaultAccount`, інакше такі неявні операції CLI зупинятимуться та проситимуть явно вибрати обліковий запис. -Використовуйте `--account`, коли хочете, щоб операції верифікації або пристроїв були явно спрямовані на іменований обліковий запис: +У конфігураціях із кількома обліковими записами CLI-команди Matrix використовують неявний типовий обліковий запис Matrix, якщо ви не передасте `--account `. +Якщо ви налаштуєте кілька іменованих облікових записів, спочатку встановіть `channels.matrix.defaultAccount`, інакше такі неявні CLI-операції зупиняться й попросять вас явно вибрати обліковий запис. +Використовуйте `--account`, коли хочете, щоб операції верифікації або пристрою явно націлювалися на конкретний іменований обліковий запис: ```bash openclaw matrix verify status --account assistant @@ -455,7 +455,7 @@ openclaw matrix verify backup restore --account assistant openclaw matrix devices list --account assistant ``` -Коли шифрування вимкнено або недоступне для іменованого облікового запису, попередження Matrix і помилки верифікації вказують на ключ config цього облікового запису, наприклад `channels.matrix.accounts.assistant.encryption`. +Коли шифрування вимкнено або недоступне для іменованого облікового запису, попередження Matrix і помилки верифікації вказують на ключ конфігурації цього облікового запису, наприклад `channels.matrix.accounts.assistant.encryption`. @@ -463,28 +463,28 @@ openclaw matrix devices list --account assistant - `Locally trusted`: довірений лише цим клієнтом - `Cross-signing verified`: SDK повідомляє про верифікацію через cross-signing - - `Signed by owner`: підписаний вашим власним ключем self-signing + - `Signed by owner`: підписаний вашим власним self-signing key `Verified by owner` стає `yes` лише тоді, коли присутня верифікація cross-signing. - Локальної довіри або самого лише підпису власника недостатньо, щоб OpenClaw вважав - пристрій повністю verified. + Локальної довіри або лише підпису власника недостатньо, щоб OpenClaw вважав + пристрій повністю верифікованим. - `verify bootstrap` — це команда відновлення та налаштування для зашифрованих облікових записів. Послідовно вона: + `verify bootstrap` — це команда відновлення та налаштування для зашифрованих облікових записів. По порядку вона: - ініціалізує secret storage, повторно використовуючи наявний recovery key, коли це можливо - - ініціалізує cross-signing і вивантажує відсутні публічні ключі cross-signing - - позначає та підписує cross-signing поточний пристрій + - ініціалізує cross-signing і завантажує відсутні публічні ключі cross-signing + - позначає поточний пристрій і підписує його через cross-signing - створює серверну резервну копію ключів кімнат, якщо вона ще не існує - Якщо homeserver вимагає UIA для вивантаження ключів cross-signing, OpenClaw спочатку пробує без автентифікації, потім `m.login.dummy`, а потім `m.login.password` (потрібен `channels.matrix.password`). Використовуйте `--force-reset-cross-signing` лише тоді, коли свідомо відкидаєте поточну ідентичність. + Якщо homeserver вимагає UIA для завантаження ключів cross-signing, OpenClaw спочатку пробує без автентифікації, потім `m.login.dummy`, потім `m.login.password` (потрібен `channels.matrix.password`). Використовуйте `--force-reset-cross-signing` лише тоді, коли свідомо відкидаєте поточну ідентичність. - Якщо ви хочете, щоб майбутні зашифровані повідомлення продовжували працювати, і погоджуєтеся втратити стару історію, яку неможливо відновити: + Якщо ви хочете, щоб майбутні зашифровані повідомлення й надалі працювали, і готові втратити невідновлювану стару історію: ```bash openclaw matrix verify backup reset --yes @@ -492,32 +492,32 @@ openclaw matrix verify backup status --verbose openclaw matrix verify status ``` - Додайте `--account `, щоб націлити команду на іменований обліковий запис. Це також може повторно створити secret storage, якщо поточний секрет резервної копії неможливо безпечно завантажити. + Додайте `--account `, щоб націлити команду на іменований обліковий запис. Це також може повторно створити secret storage, якщо поточний секрет резервної копії не вдається безпечно завантажити. Додавайте `--rotate-recovery-key` лише тоді, коли свідомо хочете, щоб старий recovery - key перестав розблоковувати нову базову резервну копію. + key більше не розблоковував нову базову резервну копію. - Якщо `encryption: true`, `startupVerification` за замовчуванням має значення `"if-unverified"`. Під час запуску неперевірений пристрій запитує self-verification в іншому клієнті Matrix, пропускаючи дублікати та застосовуючи cooldown. Налаштовуйте через `startupVerificationCooldownHours` або вимикайте через `startupVerification: "off"`. + З `encryption: true` значення `startupVerification` за замовчуванням дорівнює `"if-unverified"`. Під час запуску неперевірений пристрій запитує самоверифікацію в іншому клієнті Matrix, пропускаючи дублікати та застосовуючи cooldown. Налаштуйте це через `startupVerificationCooldownHours` або вимкніть за допомогою `startupVerification: "off"`. - Під час запуску також виконується консервативний прохід crypto bootstrap, який повторно використовує поточні secret storage та ідентичність cross-signing. Якщо стан bootstrap пошкоджено, OpenClaw намагається виконати захищене відновлення навіть без `channels.matrix.password`; якщо homeserver вимагає UIA з паролем, під час запуску записується попередження, але це не є фатальним. Уже підписані власником пристрої зберігаються. + Під час запуску також виконується консервативний прохід crypto bootstrap, який повторно використовує поточні secret storage та ідентичність cross-signing. Якщо стан bootstrap пошкоджений, OpenClaw намагається виконати захищене відновлення навіть без `channels.matrix.password`; якщо homeserver вимагає password UIA, під час запуску записується попередження, але це не є фатальним. Пристрої, уже підписані власником, зберігаються. Див. [Міграція Matrix](/uk/install/migrating-matrix) для повного процесу оновлення. - - Matrix публікує повідомлення про життєвий цикл верифікації в строгій DM-кімнаті верифікації як повідомлення `m.notice`: запит, готовність (із підказкою "Verify by emoji"), початок/завершення та відомості SAS (емодзі/десяткові числа), коли вони доступні. + + Matrix публікує повідомлення про життєвий цикл верифікації в кімнату суворої верифікації DM як повідомлення `m.notice`: запит, готовність (із вказівкою «Верифікувати за emoji»), початок/завершення та відомості SAS (emoji/десяткові числа), коли вони доступні. - Вхідні запити з іншого клієнта Matrix відстежуються та автоматично приймаються. Для self-verification OpenClaw автоматично запускає процес SAS і підтверджує свій бік, щойно стає доступною верифікація емодзі — вам усе одно потрібно порівняти й підтвердити "They match" у своєму клієнті Matrix. + Вхідні запити з іншого клієнта Matrix відстежуються й автоматично приймаються. Для самоверифікації OpenClaw автоматично запускає SAS-процес і підтверджує свій бік, щойно стає доступною верифікація emoji — вам усе одно потрібно порівняти й підтвердити «They match» у вашому клієнті Matrix. Системні сповіщення верифікації не пересилаються в pipeline чату агента. - Якщо `verify status` повідомляє, що поточного пристрою більше немає в списку на + Якщо `verify status` повідомляє, що поточний пристрій більше не вказаний на homeserver, створіть новий пристрій OpenClaw Matrix. Для входу за паролем: ```bash @@ -529,7 +529,7 @@ openclaw matrix account add \ --device-name OpenClaw-Gateway ``` - Для автентифікації токеном створіть новий access token у своєму клієнті Matrix або в UI адміністратора, + Для автентифікації токеном створіть новий токен доступу у вашому клієнті Matrix або в UI адміністратора, а потім оновіть OpenClaw: ```bash @@ -539,13 +539,13 @@ openclaw matrix account add \ --access-token '' ``` - Замініть `assistant` на ID облікового запису з команди, що завершилася помилкою, або пропустіть - `--account` для облікового запису за замовчуванням. + Замініть `assistant` на ID облікового запису з команди, що завершилася помилкою, або опустіть + `--account` для типового облікового запису. - Старі пристрої під керуванням OpenClaw можуть накопичуватися. Перегляньте список і очистьте їх: + Старі пристрої під керуванням OpenClaw можуть накопичуватися. Переглядайте список і очищайте: ```bash openclaw matrix devices list @@ -555,56 +555,56 @@ openclaw matrix devices prune-stale - Matrix E2EE використовує офіційний crypto-шлях Rust у `matrix-js-sdk` із `fake-indexeddb` як shim для IndexedDB. Crypto state зберігається в `crypto-idb-snapshot.json` (із суворими правами доступу до файлу). + Matrix E2EE використовує офіційний crypto path Rust у `matrix-js-sdk` із `fake-indexeddb` як shim для IndexedDB. Стан crypto зберігається в `crypto-idb-snapshot.json` (з обмежувальними правами доступу до файлу). - Стан зашифрованого runtime зберігається в `~/.openclaw/matrix/accounts//__//` і включає sync store, crypto store, recovery key, snapshot IDB, прив’язки тредів і стан startup verification. Коли токен змінюється, але ідентичність облікового запису залишається тією самою, OpenClaw повторно використовує найкращий наявний root, щоб попередній стан залишався видимим. + Зашифрований стан середовища виконання зберігається в `~/.openclaw/matrix/accounts//__//` і включає sync store, crypto store, recovery key, знімок IDB, прив’язки тредів і стан startup verification. Коли токен змінюється, але ідентичність облікового запису залишається тією самою, OpenClaw повторно використовує найкращий наявний кореневий каталог, щоб попередній стан залишався видимим. ## Керування профілем -Оновити власний профіль Matrix для вибраного облікового запису можна так: +Оновіть власний профіль Matrix для вибраного облікового запису за допомогою: ```bash openclaw matrix profile set --name "OpenClaw Assistant" openclaw matrix profile set --avatar-url https://cdn.example.org/avatar.png ``` -Додайте `--account `, якщо хочете явно націлити команду на іменований обліковий запис Matrix. +Додайте `--account `, якщо хочете явно націлити команду на конкретний іменований обліковий запис Matrix. -Matrix напряму приймає URL аватара `mxc://`. Коли ви передаєте URL аватара `http://` або `https://`, OpenClaw спочатку вивантажує його до Matrix, а потім зберігає отриманий URL `mxc://` назад у `channels.matrix.avatarUrl` (або в перевизначення для вибраного облікового запису). +Matrix напряму приймає URL аватарів `mxc://`. Якщо ви передаєте URL аватара `http://` або `https://`, OpenClaw спочатку завантажує його до Matrix, а потім зберігає розв’язаний URL `mxc://` назад у `channels.matrix.avatarUrl` (або в перевизначення вибраного облікового запису). ## Треди -Matrix підтримує нативні треди Matrix як для автоматичних відповідей, так і для надсилання через message-tool. +Matrix підтримує нативні треди Matrix як для автоматичних відповідей, так і для надсилань через message-tool. -- `dm.sessionScope: "per-user"` (типове значення) зберігає маршрутизацію Matrix DM у межах відправника, тож кілька кімнат DM можуть використовувати один сеанс, якщо вони визначаються як той самий співрозмовник. -- `dm.sessionScope: "per-room"` ізолює кожну кімнату Matrix DM у власний ключ сеансу, водночас і далі використовуючи звичайні перевірки автентифікації та allowlist для DM. -- Явні прив’язки розмов Matrix усе одно мають пріоритет над `dm.sessionScope`, тож прив’язані кімнати й треди зберігають вибраний цільовий сеанс. -- `threadReplies: "off"` залишає відповіді на верхньому рівні та прив’язує вхідні тредові повідомлення до батьківського сеансу. +- `dm.sessionScope: "per-user"` (типове значення) зберігає маршрутизацію DM Matrix прив’язаною до відправника, тому кілька DM-кімнат можуть ділити одну сесію, якщо вони розв’язуються до того самого співрозмовника. +- `dm.sessionScope: "per-room"` ізолює кожну DM-кімнату Matrix у власний ключ сесії, водночас усе ще використовуючи звичайні перевірки автентифікації DM та allowlist. +- Явні прив’язки розмов Matrix і надалі мають пріоритет над `dm.sessionScope`, тому прив’язані кімнати й треди зберігають вибрану цільову сесію. +- `threadReplies: "off"` зберігає відповіді на верхньому рівні та залишає вхідні тредові повідомлення в батьківській сесії. - `threadReplies: "inbound"` відповідає всередині треду лише тоді, коли вхідне повідомлення вже було в цьому треді. -- `threadReplies: "always"` зберігає відповіді в кімнаті в треді, коренем якого є повідомлення-тригер, і маршрутизує цю розмову через відповідний сеанс із областю дії треду від першого повідомлення-тригера. -- `dm.threadReplies` перевизначає параметр верхнього рівня лише для DM. Наприклад, можна ізолювати треди в кімнатах, залишивши DM пласкими. +- `threadReplies: "always"` зберігає відповіді в кімнаті у треді, коренем якого є повідомлення-тригер, і маршрутизує цю розмову через відповідну сесію з областю треду від першого повідомлення-тригера. +- `dm.threadReplies` перевизначає налаштування верхнього рівня лише для DM. Наприклад, ви можете залишити треди в кімнатах ізольованими, водночас зберігаючи DM плоскими. - Вхідні тредові повідомлення включають кореневе повідомлення треду як додатковий контекст агента. -- Надсилання через message-tool автоматично успадковує поточний тред Matrix, коли ціллю є та сама кімната або той самий цільовий користувач DM, якщо явно не вказано `threadId`. -- Повторне використання цільового користувача DM в межах того самого сеансу спрацьовує лише тоді, коли поточні метадані сеансу підтверджують того самого співрозмовника DM у тому самому обліковому записі Matrix; інакше OpenClaw повертається до звичайної маршрутизації в межах користувача. -- Коли OpenClaw бачить, що кімната Matrix DM конфліктує з іншою кімнатою DM у межах того самого спільного сеансу Matrix DM, він публікує одноразове `m.notice` у цій кімнаті з можливістю обходу `/focus`, коли ввімкнено прив’язки тредів і є підказка `dm.sessionScope`. -- Прив’язки тредів під час runtime підтримуються для Matrix. `/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` і прив’язаний до треду `/acp spawn` працюють у кімнатах і DM Matrix. -- `/focus` на верхньому рівні кімнати/DM Matrix створює новий тред Matrix і прив’язує його до цільового сеансу, коли `threadBindings.spawnSubagentSessions=true`. -- Виконання `/focus` або `/acp spawn --thread here` всередині наявного треду Matrix натомість прив’язує цей поточний тред. +- Надсилання через message-tool автоматично успадковують поточний тред Matrix, коли ціль — та сама кімната або та сама DM-ціль користувача, якщо не вказано явний `threadId`. +- Повторне використання DM-цілі користувача для тієї самої сесії спрацьовує лише тоді, коли метадані поточної сесії підтверджують того самого DM-співрозмовника в тому самому обліковому записі Matrix; інакше OpenClaw повертається до звичайної маршрутизації з областю користувача. +- Коли OpenClaw бачить, що DM-кімната Matrix конфліктує з іншою DM-кімнатою в тій самій спільній DM-сесії Matrix, він публікує одноразове `m.notice` у цій кімнаті з аварійним варіантом `/focus`, коли прив’язки тредів увімкнені, і з підказкою `dm.sessionScope`. +- Прив’язки тредів під час виконання підтримуються для Matrix. `/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` і прив’язаний до треду `/acp spawn` працюють у кімнатах і DM Matrix. +- Верхньорівневий `/focus` у кімнаті/DM Matrix створює новий тред Matrix і прив’язує його до цільової сесії, коли `threadBindings.spawnSubagentSessions=true`. +- Запуск `/focus` або `/acp spawn --thread here` всередині наявного треду Matrix натомість прив’язує саме цей поточний тред. ## Прив’язки розмов ACP -Кімнати Matrix, DM і наявні треди Matrix можна перетворити на довговічні робочі області ACP без зміни поверхні чату. +Кімнати Matrix, DM і наявні треди Matrix можна перетворити на довговічні робочі простори ACP без зміни поверхні чату. -Швидкий процес для оператора: +Швидкий процес для операторів: -- Виконайте `/acp spawn codex --bind here` у Matrix DM, кімнаті або наявному треді, який хочете й надалі використовувати. -- У Matrix DM або кімнаті верхнього рівня поточний DM/кімната залишається поверхнею чату, а майбутні повідомлення маршрутизуються до створеного сеансу ACP. +- Виконайте `/acp spawn codex --bind here` всередині DM Matrix, кімнати або наявного треду, якими хочете й надалі користуватися. +- У DM або кімнаті Matrix верхнього рівня поточний DM/кімната залишається поверхнею чату, а майбутні повідомлення маршрутизуються до створеної сесії ACP. - Усередині наявного треду Matrix `--bind here` прив’язує цей поточний тред на місці. -- `/new` і `/reset` скидають той самий прив’язаний сеанс ACP на місці. -- `/acp close` закриває сеанс ACP і видаляє прив’язку. +- `/new` і `/reset` скидають ту саму прив’язану сесію ACP на місці. +- `/acp close` закриває сесію ACP і видаляє прив’язку. Примітки: @@ -613,7 +613,7 @@ Matrix підтримує нативні треди Matrix як для авто ### Конфігурація прив’язки тредів -Matrix успадковує глобальні значення за замовчуванням із `session.threadBindings`, а також підтримує перевизначення для окремого channel: +Matrix успадковує глобальні типові значення з `session.threadBindings`, а також підтримує перевизначення для окремого каналу: - `threadBindings.enabled` - `threadBindings.idleHours` @@ -621,35 +621,35 @@ Matrix успадковує глобальні значення за замов - `threadBindings.spawnSubagentSessions` - `threadBindings.spawnAcpSessions` -Прапорці створення з прив’язкою до тредів у Matrix є добровільними: +Прапорці створення з прив’язкою до тредів Matrix вмикаються опціонально: -- Установіть `threadBindings.spawnSubagentSessions: true`, щоб дозволити `/focus` верхнього рівня створювати та прив’язувати нові треди Matrix. -- Установіть `threadBindings.spawnAcpSessions: true`, щоб дозволити `/acp spawn --thread auto|here` прив’язувати сеанси ACP до тредів Matrix. +- Установіть `threadBindings.spawnSubagentSessions: true`, щоб дозволити верхньорівневому `/focus` створювати й прив’язувати нові треди Matrix. +- Установіть `threadBindings.spawnAcpSessions: true`, щоб дозволити `/acp spawn --thread auto|here` прив’язувати сесії ACP до тредів Matrix. ## Реакції -Matrix підтримує вихідні дії реакцій, вхідні сповіщення про реакції та вхідні реакції-підтвердження. +Matrix підтримує вихідні дії з реакціями, вхідні сповіщення про реакції та вхідні реакції-підтвердження. -- Використання вихідних reaction-інструментів контролюється через `channels["matrix"].actions.reactions`. -- `react` додає реакцію до певної події Matrix. -- `reactions` показує поточне зведення реакцій для певної події Matrix. -- `emoji=""` видаляє власні реакції облікового запису бота на цю подію. +- Інструментарій вихідних реакцій контролюється через `channels["matrix"].actions.reactions`. +- `react` додає реакцію до конкретної події Matrix. +- `reactions` показує поточне зведення реакцій для конкретної події Matrix. +- `emoji=""` видаляє власні реакції облікового запису бота на цій події. - `remove: true` видаляє лише вказану реакцію emoji з облікового запису бота. -Область дії ack reaction визначається у стандартному порядку OpenClaw: +Область дії реакцій-підтверджень використовує стандартний порядок розв’язання OpenClaw: - `channels["matrix"].accounts..ackReaction` - `channels["matrix"].ackReaction` - `messages.ackReaction` -- резервний emoji з identity агента +- резервний emoji ідентичності агента -Область дії ack reaction визначається в такому порядку: +Область реакції-підтвердження розв’язується в такому порядку: - `channels["matrix"].accounts..ackReactionScope` - `channels["matrix"].ackReactionScope` - `messages.ackReactionScope` -Режим сповіщень про реакції визначається в такому порядку: +Режим сповіщень про реакції розв’язується в такому порядку: - `channels["matrix"].accounts..reactionNotifications` - `channels["matrix"].reactionNotifications` @@ -659,26 +659,26 @@ Matrix підтримує вихідні дії реакцій, вхідні с - `reactionNotifications: "own"` пересилає додані події `m.reaction`, коли вони націлені на повідомлення Matrix, створені ботом. - `reactionNotifications: "off"` вимикає системні події реакцій. -- Видалення реакцій не синтезується в системні події, оскільки Matrix показує їх як redaction, а не як окремі видалення `m.reaction`. +- Видалення реакцій не синтезуються в системні події, тому що Matrix показує їх як redaction, а не як окремі видалення `m.reaction`. ## Контекст історії -- `channels.matrix.historyLimit` визначає, скільки останніх повідомлень кімнати включати як `InboundHistory`, коли повідомлення кімнати Matrix запускає агента. Використовується резервне значення `messages.groupChat.historyLimit`; якщо обидва параметри не задані, фактичне типове значення — `0`. Установіть `0`, щоб вимкнути. -- Історія кімнат Matrix обмежується лише кімнатою. DM і далі використовують звичайну історію сеансу. -- Історія кімнат Matrix працює лише для очікуваних повідомлень: OpenClaw буферизує повідомлення кімнати, які ще не викликали відповідь, а потім знімає snapshot цього вікна, коли надходить згадка або інший тригер. +- `channels.matrix.historyLimit` керує тим, скільки останніх повідомлень кімнати включається як `InboundHistory`, коли повідомлення кімнати Matrix запускає агента. Резервно використовується `messages.groupChat.historyLimit`; якщо обидва не встановлені, фактичне типове значення — `0`. Установіть `0`, щоб вимкнути. +- Історія кімнати Matrix стосується лише кімнати. DM і надалі використовують звичайну історію сесії. +- Історія кімнати Matrix працює лише для очікуваних повідомлень: OpenClaw буферизує повідомлення кімнати, які ще не викликали відповіді, а потім робить знімок цього вікна, коли надходить згадка або інший тригер. - Поточне повідомлення-тригер не включається в `InboundHistory`; воно залишається в основному вхідному тілі для цього ходу. -- Повторні спроби для тієї самої події Matrix повторно використовують початковий snapshot історії, а не зсуваються вперед до новіших повідомлень кімнати. +- Повторні спроби для тієї самої події Matrix повторно використовують початковий знімок історії замість зміщення вперед до новіших повідомлень кімнати. ## Видимість контексту -Matrix підтримує спільний параметр `contextVisibility` для додаткового контексту кімнати, такого як отриманий текст відповіді, корені тредів і очікувана історія. +Matrix підтримує спільний контроль `contextVisibility` для додаткового контексту кімнати, наприклад отриманого тексту відповіді, коренів тредів і очікуваної історії. - `contextVisibility: "all"` — типове значення. Додатковий контекст зберігається як отримано. -- `contextVisibility: "allowlist"` фільтрує додатковий контекст до відправників, дозволених активними перевірками allowlist для кімнати/користувача. +- `contextVisibility: "allowlist"` фільтрує додатковий контекст до відправників, дозволених активними перевірками allowlist кімнати/користувача. - `contextVisibility: "allowlist_quote"` працює як `allowlist`, але все одно зберігає одну явну цитовану відповідь. -Цей параметр впливає на видимість додаткового контексту, а не на те, чи може саме вхідне повідомлення викликати відповідь. -Авторизація тригера, як і раніше, походить із параметрів `groupPolicy`, `groups`, `groupAllowFrom` і політики DM. +Це налаштування впливає на видимість додаткового контексту, а не на те, чи може саме вхідне повідомлення викликати відповідь. +Авторизація тригера, як і раніше, визначається налаштуваннями `groupPolicy`, `groups`, `groupAllowFrom` і політики DM. ## Політика DM і кімнат @@ -703,45 +703,45 @@ Matrix підтримує спільний параметр `contextVisibility` } ``` -Див. [Groups](/uk/channels/groups) щодо згадок як умови доступу та поведінки allowlist. +Див. [Groups](/uk/channels/groups) щодо керування згадками та поведінки allowlist. -Приклад pairing для Matrix DM: +Приклад pairing для DM Matrix: ```bash openclaw pairing list matrix openclaw pairing approve matrix ``` -Якщо непідтверджений користувач Matrix продовжує надсилати вам повідомлення до схвалення, OpenClaw повторно використовує той самий код pairing, що очікує, і може знову надіслати відповідь-нагадування після короткого cooldown, замість того щоб створювати новий код. +Якщо непідтверджений користувач Matrix продовжує надсилати вам повідомлення до схвалення, OpenClaw повторно використовує той самий очікуваний код pairing і може знову надіслати відповідь-нагадування після короткого cooldown замість створення нового коду. -Див. [Pairing](/uk/channels/pairing) щодо спільного процесу pairing для DM і структури зберігання. +Див. [Pairing](/uk/channels/pairing) щодо спільного процесу pairing DM і структури зберігання. -## Виправлення direct room +## Відновлення direct room -Якщо стан direct-message розсинхронізується, OpenClaw може отримати застарілі зіставлення `m.direct`, що вказують на старі solo-кімнати замість активного DM. Перевірити поточне зіставлення для співрозмовника можна так: +Якщо стан особистих повідомлень виходить із синхронізації, OpenClaw може отримати застарілі зіставлення `m.direct`, які вказують на старі окремі кімнати замість активного DM. Перевірте поточне зіставлення для співрозмовника за допомогою: ```bash openclaw matrix direct inspect --user-id @alice:example.org ``` -Виправити його можна так: +Виправте його за допомогою: ```bash openclaw matrix direct repair --user-id @alice:example.org ``` -Процес виправлення: +Процес відновлення: -- надає перевагу строгому 1:1 DM, який уже зіставлено в `m.direct` -- якщо такого немає, використовує будь-який поточний strict 1:1 DM із цим користувачем, до якого виконано приєднання +- надає перевагу суворому DM 1:1, який уже зіставлено в `m.direct` +- якщо це неможливо, використовує будь-який поточно приєднаний суворий DM 1:1 із цим користувачем - створює нову direct room і переписує `m.direct`, якщо справного DM не існує -Процес виправлення не видаляє старі кімнати автоматично. Він лише вибирає справний DM і оновлює зіставлення, щоб нові надсилання Matrix, сповіщення про верифікацію та інші процеси direct-message знову були спрямовані до правильної кімнати. +Процес відновлення не видаляє старі кімнати автоматично. Він лише вибирає справний DM і оновлює зіставлення, щоб нові надсилання Matrix, сповіщення верифікації та інші процеси особистих повідомлень знову були спрямовані до правильної кімнати. ## Підтвердження exec Matrix може діяти як нативний клієнт підтвердження для облікового запису Matrix. Нативні -параметри маршрутизації DM/channel, як і раніше, знаходяться в конфігурації підтверджень exec: +параметри маршрутизації DM/каналу, як і раніше, розміщуються в конфігурації підтверджень exec: - `channels.matrix.execApprovals.enabled` - `channels.matrix.execApprovals.approvers` (необов’язково; резервно використовується `channels.matrix.dm.allowFrom`) @@ -749,42 +749,42 @@ Matrix може діяти як нативний клієнт підтвердж - `channels.matrix.execApprovals.agentFilter` - `channels.matrix.execApprovals.sessionFilter` -Особи, що підтверджують, повинні бути ID користувачів Matrix, наприклад `@owner:example.org`. Matrix автоматично вмикає нативні підтвердження, коли `enabled` не задано або дорівнює `"auto"` і вдається визначити принаймні одного approver. Підтвердження exec спочатку використовують `execApprovals.approvers`, а потім можуть резервно використовувати `channels.matrix.dm.allowFrom`. Підтвердження Plugin авторизуються через `channels.matrix.dm.allowFrom`. Установіть `enabled: false`, щоб явно вимкнути Matrix як нативний клієнт підтвердження. В іншому разі запити на підтвердження резервно переходять до інших налаштованих маршрутів підтвердження або до резервної політики підтвердження. +Особи, що підтверджують, мають бути ID користувачів Matrix, наприклад `@owner:example.org`. Matrix автоматично вмикає нативні підтвердження, коли `enabled` не встановлено або має значення `"auto"`, і можна розв’язати принаймні одного підтверджувача. Підтвердження exec спочатку використовують `execApprovals.approvers` і можуть резервно використовувати `channels.matrix.dm.allowFrom`. Підтвердження Plugin авторизуються через `channels.matrix.dm.allowFrom`. Установіть `enabled: false`, щоб явно вимкнути Matrix як нативний клієнт підтвердження. Інакше запити на підтвердження резервно переходять до інших налаштованих маршрутів підтвердження або до резервної політики підтвердження. -Нативна маршрутизація Matrix підтримує обидва види підтверджень: +Нативна маршрутизація Matrix підтримує обидва типи підтвердження: -- `channels.matrix.execApprovals.*` керує нативним режимом fanout DM/channel для запитів на підтвердження Matrix. -- Підтвердження exec використовують набір approver для exec із `execApprovals.approvers` або `channels.matrix.dm.allowFrom`. -- Підтвердження Plugin використовують allowlist Matrix DM із `channels.matrix.dm.allowFrom`. -- Скорочення через реакції Matrix і оновлення повідомлень застосовуються і до підтверджень exec, і до підтверджень Plugin. +- `channels.matrix.execApprovals.*` керує нативним режимом fanout DM/каналу для запитів на підтвердження Matrix. +- Підтвердження exec використовують набір підтверджувачів exec із `execApprovals.approvers` або `channels.matrix.dm.allowFrom`. +- Підтвердження Plugin використовують allowlist DM Matrix із `channels.matrix.dm.allowFrom`. +- Скорочення реакцій Matrix і оновлення повідомлень застосовуються як до підтверджень exec, так і до підтверджень Plugin. Правила доставки: -- `target: "dm"` надсилає запити на підтвердження в DM тих, хто підтверджує +- `target: "dm"` надсилає запити на підтвердження в DM підтверджувачів - `target: "channel"` надсилає запит назад у вихідну кімнату або DM Matrix -- `target: "both"` надсилає запит у DM тих, хто підтверджує, і у вихідну кімнату або DM Matrix +- `target: "both"` надсилає в DM підтверджувачів і у вихідну кімнату або DM Matrix -Запити Matrix на підтвердження ініціалізують скорочення через реакції в основному повідомленні підтвердження: +Запити на підтвердження Matrix ініціалізують скорочення реакцій на основному повідомленні підтвердження: - `✅` = дозволити один раз - `❌` = заборонити -- `♾️` = дозволити завжди, коли таке рішення дозволене ефективною політикою exec +- `♾️` = дозволити завжди, коли таке рішення дозволене фактичною політикою exec -Ті, хто підтверджує, можуть реагувати на це повідомлення або використовувати резервні slash-команди: `/approve allow-once`, `/approve allow-always` або `/approve deny`. +Підтверджувачі можуть реагувати на це повідомлення або використовувати резервні slash commands: `/approve allow-once`, `/approve allow-always` або `/approve deny`. -Лише визначені approver можуть підтверджувати або відхиляти. Для підтверджень exec доставка в channel включає текст команди, тож вмикайте `channel` або `both` лише в довірених кімнатах. +Лише розв’язані підтверджувачі можуть дозволяти або забороняти. Для підтверджень exec доставка в канал включає текст команди, тому вмикайте `channel` або `both` лише в довірених кімнатах. Перевизначення для облікового запису: - `channels.matrix.accounts..execApprovals` -Пов’язана документація: [Підтвердження exec](/uk/tools/exec-approvals) +Пов’язана документація: [Exec approvals](/uk/tools/exec-approvals) -## Slash-команди +## Slash commands -Slash-команди Matrix (наприклад, `/new`, `/reset`, `/model`) працюють безпосередньо в DM. У кімнатах OpenClaw також розпізнає slash-команди, перед якими стоїть власна згадка бота Matrix, тож `@bot:server /new` запускає шлях команди без потреби у спеціальному regex для згадки. Це дозволяє боту залишатися чутливим до повідомлень у стилі кімнат `@mention /command`, які Element та подібні клієнти надсилають, коли користувач завершує ім’я бота табуляцією перед введенням команди. +Slash commands Matrix (наприклад `/new`, `/reset`, `/model`) працюють безпосередньо в DM. У кімнатах OpenClaw також розпізнає slash commands, перед якими стоїть власна згадка Matrix бота, тому `@bot:server /new` запускає шлях команди без потреби в користувацькому regex для згадки. Це дає змогу боту залишатися чутливим до публікацій у стилі кімнат `@mention /command`, які надсилають Element і подібні клієнти, коли користувач автодоповнює бота перед введенням команди. -Правила авторизації, як і раніше, діють: відправники команд повинні відповідати політикам DM або allowlist/owner для кімнат так само, як і для звичайних повідомлень. +Правила авторизації, як і раніше, застосовуються: відправники команд мають відповідати політикам DM або allowlist/owner для кімнат так само, як і для звичайних повідомлень. ## Кілька облікових записів @@ -819,19 +819,19 @@ Slash-команди Matrix (наприклад, `/new`, `/reset`, `/model`) п Значення верхнього рівня `channels.matrix` діють як типові для іменованих облікових записів, якщо обліковий запис не перевизначає їх. Ви можете обмежити успадковані записи кімнат одним обліковим записом Matrix через `groups..account`. Записи без `account` залишаються спільними для всіх облікових записів Matrix, а записи з `account: "default"` і далі працюють, коли типовий обліковий запис налаштовано безпосередньо на верхньому рівні `channels.matrix.*`. -Часткові спільні типові значення автентифікації самі по собі не створюють окремого неявного типового облікового запису. OpenClaw синтезує обліковий запис верхнього рівня `default` лише тоді, коли цей типовий обліковий запис має актуальну автентифікацію (`homeserver` плюс `accessToken` або `homeserver` плюс `userId` і `password`); іменовані облікові записи все одно можуть залишатися доступними для виявлення через `homeserver` плюс `userId`, коли кешовані облікові дані пізніше забезпечують автентифікацію. -Якщо Matrix уже має рівно один іменований обліковий запис або `defaultAccount` вказує на наявний ключ іменованого облікового запису, відновлення/підвищення від одного облікового запису до кількох під час setup зберігає цей обліковий запис замість створення нового запису `accounts.default`. До такого підвищеного облікового запису переміщуються лише ключі автентифікації/bootstrap Matrix; спільні ключі політики доставки залишаються на верхньому рівні. -Установіть `defaultAccount`, якщо хочете, щоб OpenClaw віддавав перевагу одному іменованому обліковому запису Matrix для неявної маршрутизації, перевірок і операцій CLI. -Якщо налаштовано кілька облікових записів Matrix і один ID облікового запису має значення `default`, OpenClaw неявно використовує цей обліковий запис, навіть коли `defaultAccount` не задано. -Якщо ви налаштовуєте кілька іменованих облікових записів, установіть `defaultAccount` або передавайте `--account ` для команд CLI, які залежать від неявного вибору облікового запису. +Часткові спільні типові значення автентифікації самі по собі не створюють окремого неявного типового облікового запису. OpenClaw синтезує верхньорівневий обліковий запис `default` лише тоді, коли цей типовий обліковий запис має нову автентифікацію (`homeserver` плюс `accessToken` або `homeserver` плюс `userId` і `password`); іменовані облікові записи все одно можуть залишатися доступними для виявлення через `homeserver` плюс `userId`, якщо кешовані облікові дані пізніше задовольнять автентифікацію. +Якщо Matrix уже має рівно один іменований обліковий запис або `defaultAccount` вказує на наявний ключ іменованого облікового запису, відновлення/просування налаштування з одного облікового запису до кількох зберігає цей обліковий запис замість створення нового запису `accounts.default`. До цього просунутого облікового запису переміщуються лише ключі автентифікації/bootstrap Matrix; спільні ключі політики доставки залишаються на верхньому рівні. +Установіть `defaultAccount`, якщо хочете, щоб OpenClaw надавав перевагу одному іменованому обліковому запису Matrix для неявної маршрутизації, probe і CLI-операцій. +Якщо налаштовано кілька облікових записів Matrix і один ID облікового запису має значення `default`, OpenClaw неявно використовує цей обліковий запис, навіть коли `defaultAccount` не встановлено. +Якщо ви налаштовуєте кілька іменованих облікових записів, установіть `defaultAccount` або передавайте `--account ` для CLI-команд, які покладаються на неявний вибір облікового запису. Передавайте `--account ` до `openclaw matrix verify ...` і `openclaw matrix devices ...`, коли хочете перевизначити цей неявний вибір для однієї команди. -Див. [Довідник із конфігурації](/uk/gateway/config-channels#multi-account-all-channels) щодо спільного шаблону для кількох облікових записів. +Див. [Configuration reference](/uk/gateway/config-channels#multi-account-all-channels) щодо спільного шаблону кількох облікових записів. ## Приватні/LAN homeserver -За замовчуванням OpenClaw блокує приватні/внутрішні homeserver Matrix для захисту від SSRF, якщо ви -явно не ввімкнете їх для кожного облікового запису окремо. +Типово OpenClaw блокує приватні/внутрішні homeserver Matrix для захисту від SSRF, якщо ви +явно не ввімкнете це окремо для кожного облікового запису. Якщо ваш homeserver працює на localhost, IP LAN/Tailscale або внутрішньому імені хоста, увімкніть `network.dangerouslyAllowPrivateNetwork` для цього облікового запису Matrix: @@ -861,11 +861,11 @@ openclaw matrix account add \ ``` Це явне ввімкнення дозволяє лише довірені приватні/внутрішні цілі. Публічні homeserver без шифрування, такі як -`http://matrix.example.org:8008`, і далі блокуються. Коли можливо, надавайте перевагу `https://`. +`http://matrix.example.org:8008`, і далі блокуються. За можливості надавайте перевагу `https://`. ## Проксіювання трафіку Matrix -Якщо вашому розгортанню Matrix потрібен явний вихідний HTTP(S)-проксі, установіть `channels.matrix.proxy`: +Якщо для вашого розгортання Matrix потрібен явний вихідний HTTP(S)-проксі, установіть `channels.matrix.proxy`: ```json5 { @@ -880,85 +880,90 @@ openclaw matrix account add \ ``` Іменовані облікові записи можуть перевизначати типове значення верхнього рівня через `channels.matrix.accounts..proxy`. -OpenClaw використовує той самий параметр проксі для runtime-трафіку Matrix і перевірок стану облікового запису. +OpenClaw використовує те саме налаштування проксі для трафіку Matrix під час виконання та для probe статусу облікового запису. -## Визначення цілі +## Розв’язання цілей -Matrix приймає такі форми цілей усюди, де OpenClaw просить вас указати ціль кімнати або користувача: +Matrix приймає такі форми цілей усюди, де OpenClaw просить вас вказати ціль кімнати або користувача: - Користувачі: `@user:server`, `user:@user:server` або `matrix:user:@user:server` - Кімнати: `!room:server`, `room:!room:server` або `matrix:room:!room:server` - Псевдоніми: `#alias:server`, `channel:#alias:server` або `matrix:channel:#alias:server` -Live directory lookup використовує обліковий запис Matrix, під яким виконано вхід: +ID кімнат Matrix чутливі до регістру. Використовуйте точний регістр ID кімнати з Matrix +під час налаштування явних цілей доставки, Cron, прив’язок або allowlist. +OpenClaw зберігає внутрішні ключі сесій у канонічному вигляді для зберігання, тому ці ключі +в нижньому регістрі не є надійним джерелом ID доставки Matrix. -- Пошук користувачів виконує запит до каталогу користувачів Matrix на цьому homeserver. -- Пошук кімнат напряму приймає явні ID кімнат і псевдоніми, а потім резервно переходить до пошуку за назвами кімнат, до яких приєднано цей обліковий запис. -- Пошук за назвами приєднаних кімнат є best-effort. Якщо назву кімнати неможливо визначити як ID або псевдонім, вона ігнорується під час runtime-розв’язання allowlist. +Живий пошук у каталозі використовує обліковий запис Matrix, у який виконано вхід: -## Довідник із конфігурації +- Пошук користувачів виконує запити до каталогу користувачів Matrix на цьому homeserver. +- Пошук кімнат напряму приймає явні ID кімнат і псевдоніми, а потім резервно переходить до пошуку назв приєднаних кімнат для цього облікового запису. +- Пошук назв приєднаних кімнат є best-effort. Якщо назву кімнати не вдається розв’язати до ID або псевдоніма, її ігнорують під час розв’язання allowlist у runtime. -- `enabled`: увімкнути або вимкнути channel. +## Довідник конфігурації + +- `enabled`: увімкнути або вимкнути канал. - `name`: необов’язкова мітка для облікового запису. - `defaultAccount`: бажаний ID облікового запису, коли налаштовано кілька облікових записів Matrix. - `homeserver`: URL homeserver, наприклад `https://matrix.example.org`. -- `network.dangerouslyAllowPrivateNetwork`: дозволити цьому обліковому запису Matrix підключатися до приватних/внутрішніх homeserver. Увімкніть це, якщо homeserver визначається як `localhost`, IP LAN/Tailscale або внутрішній хост, такий як `matrix-synapse`. +- `network.dangerouslyAllowPrivateNetwork`: дозволяє цьому обліковому запису Matrix підключатися до приватних/внутрішніх homeserver. Увімкніть це, коли homeserver розв’язується в `localhost`, IP LAN/Tailscale або внутрішній хост на кшталт `matrix-synapse`. - `proxy`: необов’язковий URL HTTP(S)-проксі для трафіку Matrix. Іменовані облікові записи можуть перевизначати типове значення верхнього рівня власним `proxy`. - `userId`: повний ID користувача Matrix, наприклад `@bot:example.org`. -- `accessToken`: access token для автентифікації на основі токена. Для `channels.matrix.accessToken` і `channels.matrix.accounts..accessToken` підтримуються як plaintext-значення, так і значення SecretRef у провайдерах env/file/exec. Див. [Керування секретами](/uk/gateway/secrets). -- `password`: пароль для входу на основі пароля. Підтримуються як plaintext-значення, так і значення SecretRef. +- `accessToken`: токен доступу для автентифікації на основі токена. Для `channels.matrix.accessToken` і `channels.matrix.accounts..accessToken` підтримуються значення plaintext і значення SecretRef у постачальниках env/file/exec. Див. [Керування секретами](/uk/gateway/secrets). +- `password`: пароль для входу на основі пароля. Підтримуються значення plaintext і значення SecretRef. - `deviceId`: явний ID пристрою Matrix. - `deviceName`: відображувана назва пристрою для входу за паролем. - `avatarUrl`: збережений URL власного аватара для синхронізації профілю та оновлень `profile set`. - `initialSyncLimit`: максимальна кількість подій, що отримуються під час стартової синхронізації. - `encryption`: увімкнути E2EE. -- `allowlistOnly`: коли має значення `true`, підвищує політику кімнати `open` до `allowlist` і примусово переводить усі активні політики DM, крім `disabled` (включно з `pairing` і `open`), у `allowlist`. Не впливає на політики `disabled`. -- `allowBots`: дозволити повідомлення від інших налаштованих облікових записів OpenClaw Matrix (`true` або `"mentions"`). +- `allowlistOnly`: коли має значення `true`, переводить політику кімнат `open` у `allowlist` і примусово переводить усі активні політики DM, крім `disabled` (включно з `pairing` і `open`), у `allowlist`. Не впливає на політики `disabled`. +- `allowBots`: дозволяє повідомлення від інших налаштованих облікових записів OpenClaw Matrix (`true` або `"mentions"`). - `groupPolicy`: `open`, `allowlist` або `disabled`. - `contextVisibility`: режим видимості додаткового контексту кімнати (`all`, `allowlist`, `allowlist_quote`). -- `groupAllowFrom`: allowlist ID користувачів для трафіку кімнат. Повні ID користувачів Matrix є найбезпечнішими; точні збіги в каталозі визначаються під час запуску та коли allowlist змінюється під час роботи монітора. Невизначені імена ігноруються. -- `historyLimit`: максимальна кількість повідомлень кімнати, що включаються як контекст історії групи. Використовується резервне значення `messages.groupChat.historyLimit`; якщо обидва параметри не задані, фактичне типове значення — `0`. Установіть `0`, щоб вимкнути. +- `groupAllowFrom`: allowlist ID користувачів для трафіку кімнат. Найбезпечніше використовувати повні ID користувачів Matrix; точні збіги з каталогом розв’язуються під час запуску та коли allowlist змінюється, поки monitor працює. Нерозв’язані назви ігноруються. +- `historyLimit`: максимальна кількість повідомлень кімнати, які включаються як контекст історії групи. Резервно використовується `messages.groupChat.historyLimit`; якщо обидва не встановлені, фактичне типове значення — `0`. Установіть `0`, щоб вимкнути. - `replyToMode`: `off`, `first`, `all` або `batched`. - `markdown`: необов’язкова конфігурація рендерингу Markdown для вихідного тексту Matrix. -- `streaming`: `off` (типове значення), `"partial"`, `"quiet"`, `true` або `false`. `"partial"` і `true` вмикають оновлення чернеток у режимі preview-first зі звичайними текстовими повідомленнями Matrix. `"quiet"` використовує preview notice без сповіщень для self-hosted конфігурацій із push rules. `false` еквівалентне `"off"`. -- `blockStreaming`: `true` вмикає окремі повідомлення про поступ для завершених блоків асистента, поки активна потокова передача чернетки preview. +- `streaming`: `off` (типове значення), `"partial"`, `"quiet"`, `true` або `false`. `"partial"` і `true` вмикають оновлення чернеток із попереднім переглядом через звичайні текстові повідомлення Matrix. `"quiet"` використовує попередні повідомлення notice без сповіщень для конфігурацій із власними push rules. `false` еквівалентне `"off"`. +- `blockStreaming`: `true` вмикає окремі повідомлення прогресу для завершених блоків асистента, поки активна потокова передача чернетки попереднього перегляду. - `threadReplies`: `off`, `inbound` або `always`. -- `threadBindings`: перевизначення на рівні channel для маршрутизації та життєвого циклу сеансів, прив’язаних до тредів. -- `startupVerification`: режим автоматичного запиту self-verification під час запуску (`if-unverified`, `off`). +- `threadBindings`: перевизначення на рівні каналу для маршрутизації та життєвого циклу сесій, прив’язаних до тредів. +- `startupVerification`: режим автоматичного запиту самоверифікації під час запуску (`if-unverified`, `off`). - `startupVerificationCooldownHours`: cooldown перед повторною спробою автоматичних запитів верифікації під час запуску. -- `textChunkLimit`: розмір фрагмента вихідного повідомлення в символах (застосовується, коли `chunkMode` має значення `length`). -- `chunkMode`: `length` розбиває повідомлення за кількістю символів; `newline` розбиває на межах рядків. -- `responsePrefix`: необов’язковий рядок, що додається на початок усіх вихідних відповідей для цього channel. -- `ackReaction`: необов’язкове перевизначення ack reaction для цього channel/облікового запису. -- `ackReactionScope`: необов’язкове перевизначення області дії ack reaction (`group-mentions`, `group-all`, `direct`, `all`, `none`, `off`). +- `textChunkLimit`: розмір частини вихідного повідомлення в символах (застосовується, коли `chunkMode` має значення `length`). +- `chunkMode`: `length` ділить повідомлення за кількістю символів; `newline` ділить за межами рядків. +- `responsePrefix`: необов’язковий рядок, що додається на початок усіх вихідних відповідей для цього каналу. +- `ackReaction`: необов’язкове перевизначення реакції-підтвердження для цього каналу/облікового запису. +- `ackReactionScope`: необов’язкове перевизначення області реакції-підтвердження (`group-mentions`, `group-all`, `direct`, `all`, `none`, `off`). - `reactionNotifications`: режим вхідних сповіщень про реакції (`own`, `off`). -- `mediaMaxMb`: ліміт розміру медіа в МБ для вихідних надсилань і обробки вхідних медіа. +- `mediaMaxMb`: обмеження розміру медіа в МБ для вихідних надсилань і обробки вхідних медіа. - `autoJoin`: політика автоматичного приєднання за запрошенням (`always`, `allowlist`, `off`). Типове значення: `off`. Застосовується до всіх запрошень Matrix, включно із запрошеннями у стилі DM. -- `autoJoinAllowlist`: кімнати/псевдоніми, дозволені, коли `autoJoin` має значення `allowlist`. Записи псевдонімів визначаються до ID кімнат під час обробки запрошення; OpenClaw не довіряє стану псевдоніма, заявленому запрошеною кімнатою. +- `autoJoinAllowlist`: кімнати/псевдоніми, дозволені, коли `autoJoin` має значення `allowlist`. Псевдоніми розв’язуються в ID кімнат під час обробки запрошення; OpenClaw не довіряє стану псевдоніма, заявленому запрошеною кімнатою. - `dm`: блок політики DM (`enabled`, `policy`, `allowFrom`, `sessionScope`, `threadReplies`). -- `dm.policy`: керує доступом до DM після того, як OpenClaw приєднався до кімнати та класифікував її як DM. Це не змінює, чи буде автоматично прийнято запрошення. -- `dm.allowFrom`: allowlist ID користувачів для трафіку DM. Повні ID користувачів Matrix є найбезпечнішими; точні збіги в каталозі визначаються під час запуску та коли allowlist змінюється під час роботи монітора. Невизначені імена ігноруються. -- `dm.sessionScope`: `per-user` (типове значення) або `per-room`. Використовуйте `per-room`, якщо хочете, щоб кожна кімната Matrix DM зберігала окремий контекст, навіть якщо співрозмовник той самий. -- `dm.threadReplies`: перевизначення політики тредів лише для DM (`off`, `inbound`, `always`). Воно перевизначає параметр верхнього рівня `threadReplies` як для розміщення відповідей, так і для ізоляції сеансів у DM. +- `dm.policy`: керує доступом до DM після того, як OpenClaw приєднався до кімнати та класифікував її як DM. Це не змінює того, чи буде запрошення автоматично прийняте. +- `dm.allowFrom`: allowlist ID користувачів для трафіку DM. Найбезпечніше використовувати повні ID користувачів Matrix; точні збіги з каталогом розв’язуються під час запуску та коли allowlist змінюється, поки monitor працює. Нерозв’язані назви ігноруються. +- `dm.sessionScope`: `per-user` (типове значення) або `per-room`. Використовуйте `per-room`, якщо хочете, щоб кожна кімната DM Matrix зберігала окремий контекст, навіть якщо співрозмовник той самий. +- `dm.threadReplies`: перевизначення політики тредів лише для DM (`off`, `inbound`, `always`). Воно перевизначає верхньорівневе налаштування `threadReplies` як для розміщення відповідей, так і для ізоляції сесій у DM. - `execApprovals`: нативна доставка підтверджень exec у Matrix (`enabled`, `approvers`, `target`, `agentFilter`, `sessionFilter`). -- `execApprovals.approvers`: ID користувачів Matrix, яким дозволено підтверджувати запити exec. Необов’язковий параметр, якщо `dm.allowFrom` уже визначає тих, хто підтверджує. +- `execApprovals.approvers`: ID користувачів Matrix, яким дозволено підтверджувати запити exec. Необов’язково, якщо `dm.allowFrom` уже визначає підтверджувачів. - `execApprovals.target`: `dm | channel | both` (типове значення: `dm`). - `accounts`: іменовані перевизначення для окремих облікових записів. Значення верхнього рівня `channels.matrix` діють як типові для цих записів. -- `groups`: карта політик для окремих кімнат. Надавайте перевагу ID кімнат або псевдонімам; невизначені назви кімнат ігноруються під час виконання. Ідентичність сеансу/групи після визначення використовує стабільний ID кімнати. -- `groups..account`: обмежити один успадкований запис кімнати певним обліковим записом Matrix у конфігураціях із кількома обліковими записами. -- `groups..allowBots`: перевизначення на рівні кімнати для відправників-ботів із конфігурації (`true` або `"mentions"`). +- `groups`: мапа політик для окремих кімнат. Надавайте перевагу ID кімнат або псевдонімам; нерозв’язані назви кімнат ігноруються під час виконання. Ідентичність сесії/групи використовує стабільний ID кімнати після розв’язання. +- `groups..account`: обмежує один успадкований запис кімнати конкретним обліковим записом Matrix у конфігураціях із кількома обліковими записами. +- `groups..allowBots`: перевизначення на рівні кімнати для відправників-ботів, налаштованих у системі (`true` або `"mentions"`). - `groups..users`: allowlist відправників для окремої кімнати. -- `groups..tools`: перевизначення allow/deny для інструментів у межах кімнати. -- `groups..autoReply`: перевизначення вимоги згадування на рівні кімнати. `true` вимикає вимогу згадування для цієї кімнати; `false` примусово знову вмикає її. +- `groups..tools`: перевизначення дозволу/заборони інструментів для окремої кімнати. +- `groups..autoReply`: перевизначення керування згадками на рівні кімнати. `true` вимикає вимоги до згадок для цієї кімнати; `false` примусово знову вмикає їх. - `groups..skills`: необов’язковий фільтр Skills на рівні кімнати. -- `groups..systemPrompt`: необов’язковий фрагмент system prompt на рівні кімнати. +- `groups..systemPrompt`: необов’язковий фрагмент системного запиту на рівні кімнати. - `rooms`: застарілий псевдонім для `groups`. -- `actions`: керування доступом до інструментів для окремих дій (`messages`, `reactions`, `pins`, `profile`, `memberInfo`, `channelInfo`, `verification`). +- `actions`: керування інструментами за окремими діями (`messages`, `reactions`, `pins`, `profile`, `memberInfo`, `channelInfo`, `verification`). ## Пов’язане -- [Огляд Channels](/uk/channels) — усі підтримувані channels +- [Огляд каналів](/uk/channels) — усі підтримувані канали - [Pairing](/uk/channels/pairing) — автентифікація DM і процес pairing -- [Groups](/uk/channels/groups) — поведінка групового чату та вимога згадування -- [Маршрутизація channel](/uk/channels/channel-routing) — маршрутизація сеансів для повідомлень -- [Безпека](/uk/gateway/security) — модель доступу та посилення захисту +- [Groups](/uk/channels/groups) — поведінка групового чату та керування згадками +- [Маршрутизація каналів](/uk/channels/channel-routing) — маршрутизація сесій для повідомлень +- [Безпека](/uk/gateway/security) — модель доступу та зміцнення захисту diff --git a/docs/uk/cli/cron.md b/docs/uk/cli/cron.md index be6f478e9..39e618f6a 100644 --- a/docs/uk/cli/cron.md +++ b/docs/uk/cli/cron.md @@ -2,138 +2,128 @@ read_when: - Вам потрібні заплановані завдання та пробудження - Ви налагоджуєте виконання Cron і журнали -summary: Довідка CLI для `openclaw cron` (планування та запуск фонових завдань) +summary: Довідка CLI для `openclaw cron` (планувати та запускати фонові завдання) title: Cron x-i18n: - generated_at: "2026-04-25T05:54:43Z" + generated_at: "2026-04-26T01:24:10Z" model: gpt-5.4 provider: openai - source_hash: 281c0e0e5a3139d2b9cb7cc02afe3b9a9d4a20228a7891eb45c55b7e22c5e1c4 + source_hash: 55cadcf73550367d399b7ca78e842f12a8113f2ec8749f59dadf2bbb5f8417ae source_path: cli/cron.md workflow: 15 --- # `openclaw cron` -Керуйте Cron-завданнями для планувальника Gateway. +Керування завданнями Cron для планувальника Gateway. Пов’язано: -- Cron-завдання: [Cron-завдання](/uk/automation/cron-jobs) +- Завдання Cron: [Завдання Cron](/uk/automation/cron-jobs) Порада: виконайте `openclaw cron --help`, щоб побачити повний набір команд. Примітка: `openclaw cron list` і `openclaw cron show ` показують попередній перегляд -визначеного маршруту доставки. Для `channel: "last"` у попередньому перегляді видно, чи -маршрут визначено з основної/поточної сесії, чи він завершиться безпечною відмовою. +визначеного маршруту доставки. Для `channel: "last"` попередній перегляд показує, чи +маршрут визначено з головної/поточної сесії, чи він буде безпечно відхилений. -Примітка: ізольовані завдання `cron add` типово використовують доставку `--announce`. -Використовуйте `--no-deliver`, щоб залишити вивід внутрішнім. `--deliver` залишається -застарілим псевдонімом для `--announce`. +Примітка: ізольовані завдання `cron add` типово використовують доставку `--announce`. Використовуйте `--no-deliver`, щоб зберегти +вивід внутрішнім. `--deliver` залишається застарілим псевдонімом для `--announce`. -Примітка: доставка чату для ізольованого Cron є спільною. `--announce` — це резервна -доставка виконавця для фінальної відповіді; `--no-deliver` вимикає цей резервний механізм, -але не прибирає інструмент `message` агента, коли маршрут чату доступний. +Примітка: доставка в чат для ізольованого Cron є спільною. `--announce` — це резервна +доставка виконавцем для фінальної відповіді; `--no-deliver` вимикає цю резервну +поведінку, але не прибирає інструмент `message` агента, якщо маршрут чату доступний. -Примітка: одноразові завдання (`--at`) типово видаляються після успішного виконання. -Використовуйте `--keep-after-run`, щоб зберегти їх. +Примітка: одноразові завдання (`--at`) типово видаляються після успішного виконання. Використовуйте `--keep-after-run`, щоб зберегти їх. Примітка: `--session` підтримує `main`, `isolated`, `current` і `session:`. -Використовуйте `current`, щоб прив’язати завдання до активної сесії під час створення, -або `session:` для явного постійного ключа сесії. +Використовуйте `current`, щоб прив’язати завдання до активної сесії під час створення, або `session:` для +явного постійного ключа сесії. Примітка: `--session isolated` створює новий transcript/session id для кожного запуску. -Безпечні налаштування та явні обрані користувачем перевизначення моделі/автентифікації можуть -переноситися, але фоновий контекст розмови — ні: маршрутизація каналу/групи, політика -надсилання/черги, підвищення привілеїв, походження та прив’язка середовища виконання ACP -скидаються для нового ізольованого запуску. +Безпечні налаштування та явні обрані користувачем перевизначення моделі/автентифікації можуть зберігатися, але +фоновий контекст розмови — ні: маршрутизація каналу/групи, політика надсилання/черги, +підвищення привілеїв, джерело та прив’язка середовища виконання ACP скидаються для нового ізольованого запуску. -Примітка: для одноразових CLI-завдань значення дати й часу `--at` без зсуву трактуються як UTC, -якщо ви також не передасте `--tz `, який інтерпретує цей локальний час у вказаному часовому поясі. +Примітка: для одноразових завдань CLI дати й час `--at` без зсуву трактуються як UTC, якщо ви також не передасте +`--tz `, який інтерпретує цей локальний час у вказаному часовому поясі. -Примітка: повторювані завдання тепер використовують експоненційне збільшення затримки повторних -спроб після послідовних помилок (30 с → 1 хв → 5 хв → 15 хв → 60 хв), а після наступного -успішного запуску повертаються до звичайного розкладу. +Примітка: повторювані завдання тепер використовують експоненційне збільшення затримки повторних спроб після послідовних помилок (30s → 1m → 5m → 15m → 60m), а потім повертаються до звичайного розкладу після наступного успішного запуску. -Примітка: `openclaw cron run` тепер повертається, щойно ручний запуск поставлено в чергу на виконання. -Успішні відповіді містять `{ ok: true, enqueued: true, runId }`; використовуйте -`openclaw cron runs --id `, щоб відстежити підсумковий результат. +Примітка: `openclaw cron run` тепер повертає керування, щойно ручний запуск поставлено в чергу на виконання. Успішні відповіді містять `{ ok: true, enqueued: true, runId }`; використовуйте `openclaw cron runs --id `, щоб відстежити підсумковий результат. -Примітка: `openclaw cron run ` типово примусово запускає завдання. -Використовуйте `--due`, щоб зберегти стару поведінку «запускати лише якщо настав час». +Примітка: `openclaw cron run ` типово примусово запускає завдання. Використовуйте `--due`, щоб зберегти +попередню поведінку «запускати, лише якщо настав час». -Примітка: ізольовані запускі Cron пригнічують застарілі відповіді, що містять лише підтвердження. -Якщо перший результат — це лише проміжне оновлення стану, і жоден дочірній запуск субагента -не відповідає за остаточну відповідь, Cron повторно надсилає запит один раз, щоб отримати -реальний результат перед доставкою. +Примітка: ізольовані оберти Cron пригнічують застарілі відповіді, що містять лише підтвердження. Якщо +перший результат — це лише проміжне оновлення стану і жоден дочірній запуск субагента не +відповідає за підсумкову відповідь, Cron повторно формує запит один раз для отримання реального результату +перед доставкою. Примітка: якщо ізольований запуск повертає лише тихий токен (`NO_REPLY` / -`no_reply`), Cron пригнічує і пряму вихідну доставку, і резервний шлях доставки -зведення через чергу, тож у чат нічого не публікується. +`no_reply`), Cron пригнічує як пряме вихідне надсилання, так і резервний шлях +поставленого в чергу підсумку, тож назад у чат нічого не публікується. -Примітка: `cron add|edit --model ...` використовує для завдання вибрану дозволену модель. -Якщо модель не дозволена, Cron показує попередження і натомість повертається до вибору -моделі агента/типової моделі завдання. Налаштовані ланцюжки резервних варіантів і далі -застосовуються, але просте перевизначення моделі без явного списку резервних варіантів -для конкретного завдання більше не додає основну модель агента як приховану додаткову -ціль повторної спроби. +Примітка: `cron add|edit --model ...` використовує для завдання цю вибрану дозволену модель. +Якщо модель не дозволена, Cron попереджає та повертається до вибору моделі агента/типової +для завдання. Налаштовані ланцюжки резервного переходу все ще застосовуються, але звичайне перевизначення +моделі без явного списку резервних моделей для конкретного завдання більше не додає основну модель +агента як приховану додаткову ціль повторної спроби. -Примітка: для ізольованого Cron пріоритет моделі такий: спочатку перевизначення Gmail-hook, -потім `--model` для завдання, далі будь-яке збережене обране користувачем перевизначення -моделі cron-session, а потім звичайний вибір агента/типової моделі. +Примітка: пріоритет моделі для ізольованого Cron такий: спочатку перевизначення Gmail-hook, потім `--model` для +конкретного завдання, потім будь-яке збережене перевизначення моделі cron-session, вибране користувачем, а вже потім +звичайний вибір агента/типової моделі. -Примітка: швидкий режим ізольованого Cron дотримується визначеного активного вибору моделі. -Конфігурація моделі `params.fastMode` застосовується типово, але збережене в сесії -перевизначення `fastMode` усе одно має вищий пріоритет за конфігурацію. +Примітка: швидкий режим ізольованого Cron дотримується визначеного вибору live-моделі. Конфігурація +моделі `params.fastMode` застосовується типово, але збережене перевизначення `fastMode` для сесії +усе одно має вищий пріоритет за конфігурацію. Примітка: якщо ізольований запуск викидає `LiveSessionModelSwitchError`, Cron зберігає -перемкненого провайдера/модель (і перевизначення профілю автентифікації після перемикання, -якщо воно є) для активного запуску перед повторною спробою. Зовнішній цикл повторних спроб -обмежено 2 повторними спробами перемикання після початкової спроби, після чого виконання -переривається замість нескінченного циклу. +змінений provider/model (а також змінене перевизначення профілю автентифікації, якщо воно є) для +активного запуску перед повторною спробою. Зовнішній цикл повторних спроб обмежено 2 повторними спробами +перемикання після початкової спроби, після чого виконання переривається замість нескінченного циклу. -Примітка: сповіщення про збої спочатку використовують `delivery.failureDestination`, -потім глобальний `cron.failureDestination`, а якщо явний напрямок доставки збоїв не -налаштовано — резервно використовують основну ціль анонсування завдання. +Примітка: сповіщення про помилки спочатку використовують `delivery.failureDestination`, потім +глобальний `cron.failureDestination`, а потім у разі відсутності явно налаштованого +місця призначення для помилок повертаються до основної цілі announce цього завдання. -Примітка: утримання/очищення контролюється в конфігурації: +Примітка: збереження/очищення контролюється в конфігурації: - `cron.sessionRetention` (типово `24h`) очищає завершені сесії ізольованих запусків. - `cron.runLog.maxBytes` + `cron.runLog.keepLines` очищають `~/.openclaw/cron/runs/.jsonl`. -Примітка щодо оновлення: якщо у вас є старіші Cron-завдання, створені до поточного формату -доставки/сховища, виконайте `openclaw doctor --fix`. Doctor тепер нормалізує застарілі поля -Cron (`jobId`, `schedule.cron`, поля доставки верхнього рівня, включно із застарілим `threadId`, -псевдоніми доставки `provider` у payload) і мігрує прості резервні завдання Webhook з -`notify: true` до явної доставки Webhook, якщо налаштовано `cron.webhook`. +Примітка щодо оновлення: якщо у вас є старіші завдання Cron, створені до поточного формату доставки/зберігання, виконайте +`openclaw doctor --fix`. Doctor тепер нормалізує застарілі поля Cron (`jobId`, `schedule.cron`, +поля доставки верхнього рівня, включно із застарілим `threadId`, псевдоніми доставки `provider` у payload) і мігрує прості +резервні завдання Webhook з `notify: true` на явну доставку Webhook, якщо налаштовано `cron.webhook`. -## Поширені зміни +## Типові зміни -Оновіть параметри доставки, не змінюючи повідомлення: +Оновити параметри доставки без зміни повідомлення: ```bash openclaw cron edit --announce --channel telegram --to "123456789" ``` -Вимкніть доставку для ізольованого завдання: +Вимкнути доставку для ізольованого завдання: ```bash openclaw cron edit --no-deliver ``` -Увімкніть полегшений початковий контекст для ізольованого завдання: +Увімкнути полегшений початковий контекст для ізольованого завдання: ```bash openclaw cron edit --light-context ``` -Оголосіть у конкретний канал: +Оголошувати в конкретний канал: ```bash openclaw cron edit --announce --channel slack --to "channel:C1234567890" ``` -Створіть ізольоване завдання з полегшеним початковим контекстом: +Створити ізольоване завдання з полегшеним початковим контекстом: ```bash openclaw cron add \ @@ -145,19 +135,20 @@ openclaw cron add \ --no-deliver ``` -`--light-context` застосовується лише до ізольованих завдань типу agent-turn. Для запусків Cron -полегшений режим зберігає початковий контекст порожнім замість ін’єкції повного набору -початкового контексту робочого простору. +`--light-context` застосовується лише до ізольованих завдань типу agent-turn. Для запусків Cron полегшений режим залишає початковий контекст порожнім замість додавання повного набору початкового контексту робочого середовища. -Примітка про відповідальність за доставку: +Примітка щодо відповідальності за доставку: -- Доставка чату ізольованого Cron є спільною. Агент може надсилати напряму за допомогою - інструмента `message`, коли маршрут чату доступний. +- Доставка в чат для ізольованого Cron є спільною. Агент може надсилати напряму за допомогою + інструмента `message`, якщо маршрут чату доступний. - `announce` резервно доставляє фінальну відповідь лише тоді, коли агент не надіслав її напряму до визначеної цілі. `webhook` надсилає завершений payload на URL. - `none` вимикає резервну доставку виконавця. + `none` вимикає резервну доставку виконавцем. +- Нагадування, створені з активного чату, зберігають живу ціль доставки чату + для резервної доставки announce. Внутрішні ключі сесій можуть бути у нижньому регістрі; не + використовуйте їх як джерело істини для чутливих до регістру ідентифікаторів provider, таких як ID кімнат Matrix. -## Поширені команди адміністрування +## Типові команди адміністрування Ручний запуск: @@ -169,9 +160,8 @@ openclaw cron run --due openclaw cron runs --id --limit 50 ``` -Записи `cron runs` містять діагностику доставки з ціллю Cron, яку планувалося використати, -визначеною ціллю, надсиланнями через інструмент повідомлень, використанням резервного механізму -та станом доставки. +Записи `cron runs` містять діагностику доставки з очікуваною ціллю Cron, +визначеною ціллю, надсиланнями через інструмент message, використанням резервної доставки та станом доставлення. Перепризначення агента/сесії: @@ -182,7 +172,7 @@ openclaw cron edit --session current openclaw cron edit --session "session:daily-brief" ``` -Налаштування доставки: +Коригування доставки: ```bash openclaw cron edit --announce --channel slack --to "channel:C1234567890" @@ -191,15 +181,15 @@ openclaw cron edit --no-best-effort-deliver openclaw cron edit --no-deliver ``` -Примітка щодо доставки збоїв: +Примітка щодо доставки помилок: - `delivery.failureDestination` підтримується для ізольованих завдань. -- Завдання основної сесії можуть використовувати `delivery.failureDestination` - лише тоді, коли основний режим доставки — `webhook`. -- Якщо ви не встановили жодного напрямку доставки збоїв, а завдання вже робить - анонс у канал, сповіщення про збій повторно використовують ту саму ціль анонсування. +- Завдання головної сесії можуть використовувати `delivery.failureDestination` лише тоді, коли основний + режим доставки — `webhook`. +- Якщо ви не задаєте жодного місця призначення для помилок і завдання вже оголошує у + канал, сповіщення про помилки повторно використовують ту саму ціль announce. -## Пов’язано +## Пов’язане - [Довідка CLI](/uk/cli) - [Заплановані завдання](/uk/automation/cron-jobs)