diff --git a/docs/uk/automation/cron-jobs.md b/docs/uk/automation/cron-jobs.md index 21edadf41..ded004641 100644 --- a/docs/uk/automation/cron-jobs.md +++ b/docs/uk/automation/cron-jobs.md @@ -1,21 +1,21 @@ --- read_when: - Планування фонових завдань або пробуджень - - Підключення зовнішніх тригерів (Webhook-и, Gmail) до OpenClaw + - Підключення зовнішніх тригерів (Webhook-ів, Gmail) до OpenClaw - Вибір між Heartbeat і Cron для запланованих завдань sidebarTitle: Scheduled tasks summary: Заплановані завдання, Webhook-и та тригери Gmail PubSub для планувальника Gateway title: Заплановані завдання x-i18n: - generated_at: "2026-04-27T02:07:42Z" + generated_at: "2026-04-27T03:39:15Z" model: gpt-5.4 provider: openai - source_hash: ccc139d66e9461fac4b4304496568e6216234616febef1e8f90d4897a4245378 + source_hash: 4d75cd890b473d7c6cac63b008cf218380127bb2786ba484f69272b4094b376e source_path: automation/cron-jobs.md workflow: 15 --- -Cron — це вбудований планувальник Gateway. Він зберігає завдання, пробуджує агента в потрібний час і може повертати результат у чат-канал або до кінцевої точки Webhook. +Cron — це вбудований планувальник Gateway. Він зберігає завдання, пробуджує агента в потрібний час і може повертати результат назад у канал чату або на endpoint Webhook. ## Швидкий старт @@ -46,37 +46,37 @@ Cron — це вбудований планувальник Gateway. Він зб ## Як працює cron -- Cron працює **всередині процесу Gateway** (не всередині моделі). +- 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`. +- Стан виконання під час роботи зберігається поруч у `~/.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 також захищаються від застарілих відповідей-підтверджень. Якщо перший результат — це лише проміжне оновлення стану (`on it`, `pulling everything together` та подібні підказки), і жоден дочірній запуск субагента більше не відповідає за фінальну відповідь, OpenClaw повторно надсилає запит один раз, щоб отримати фактичний результат перед доставкою. -- Ізольовані запуски cron класифікують відомі маркери відмови у виконанні у фінальному підсумку/виводі як помилки, зокрема маркери хоста на кшталт `SYSTEM_RUN_DENIED` і `INVALID_REQUEST`, щоб заблокована команда не позначалася як успішний запуск. +- Ізольовані запуски cron в режимі best-effort закривають відстежувані вкладки/процеси браузера для своєї сесії `cron:`, коли запуск завершується, щоб відокремлена автоматизація браузера не залишала сирітські процеси. +- Ізольовані запуски cron також захищають від застарілих відповідей-підтверджень. Якщо перший результат — це лише проміжне оновлення стану (`on it`, `pulling everything together` і подібні підказки), і жоден дочірній запуск субагента більше не відповідає за фінальну відповідь, OpenClaw повторно надсилає запит один раз для отримання фактичного результату перед доставкою. +- Ізольовані запуски cron віддають перевагу структурованим метаданим відмови у виконанні з вбудованого запуску, а потім переходять до відомих маркерів підсумку/виводу, таких як `SYSTEM_RUN_DENIED` і `INVALID_REQUEST`, щоб заблокована команда не була позначена як успішний запуск. -Узгодження завдань для cron насамперед належить до runtime, а вже потім спирається на стійку історію: активне завдання cron залишається активним, доки runtime cron усе ще відстежує це завдання як таке, що виконується, навіть якщо старий рядок дочірньої сесії все ще існує. Щойно runtime перестає володіти завданням і минає 5-хвилинне вікно пільгового часу, перевірки обслуговування аналізують збережені журнали запусків і стан завдання для відповідного запуску `cron::`. Якщо ця стійка історія показує термінальний результат, журнал завдань фіналізується на її основі; інакше обслуговування, що належить Gateway, може позначити завдання як `lost`. Офлайн-аудит CLI може відновитися зі стійкої історії, але він не розглядає власний порожній внутрішньопроцесний набір активних завдань як доказ того, що запуск cron, яким володіє Gateway, зник. +Узгодження завдань для cron спочатку належить часу виконання, а вже потім спирається на стійку історію: активне завдання cron залишається активним, доки середовище виконання cron все ще відстежує це завдання як таке, що виконується, навіть якщо старий рядок дочірньої сесії все ще існує. Щойно середовище виконання перестає володіти завданням і минає 5-хвилинне вікно очікування, перевірки обслуговування звіряють збережені журнали запусків і стан завдання для відповідного запуску `cron::`. Якщо ця стійка історія показує фінальний результат, журнал завдань завершується на його основі; інакше обслуговування, яким володіє Gateway, може позначити завдання як `lost`. Офлайновий аудит CLI може відновитися зі стійкої історії, але він не вважає власну порожню внутрішньопроцесну множину активних завдань доказом того, що запуск cron, яким володіє Gateway, зник. ## Типи розкладів | Вид | Прапорець CLI | Опис | | ------- | ------------- | ------------------------------------------------------- | -| `at` | `--at` | Одноразова позначка часу (ISO 8601 або відносна, як-от `20m`) | +| `at` | `--at` | Одноразова мітка часу (ISO 8601 або відносна, наприклад `20m`) | | `every` | `--every` | Фіксований інтервал | -| `cron` | `--cron` | Cron-вираз із 5 або 6 полів з необов’язковим `--tz` | +| `cron` | `--cron` | 5-польний або 6-польний cron-вираз із необов’язковим `--tz` | -Позначки часу без часового поясу трактуються як UTC. Додайте `--tz America/New_York` для планування за локальним настінним часом. +Мітки часу без часового поясу трактуються як UTC. Додайте `--tz America/New_York` для планування за локальним настінним часом. -Повторювані вирази на початок години автоматично зміщуються до 5 хвилин, щоб зменшити піки навантаження. Використовуйте `--exact`, щоб примусово встановити точний час, або `--stagger 30s` для явного вікна. +Повторювані вирази на початок кожної години автоматично зсуваються до 5 хвилин, щоб зменшити пікове навантаження. Використовуйте `--exact`, щоб примусово встановити точний час, або `--stagger 30s` для явного вікна. ### День місяця і день тижня використовують логіку OR -Cron-вирази аналізуються за допомогою [croner](https://github.com/Hexagon/croner). Коли і поле дня місяця, і поле дня тижня не є wildcard, croner вважає збігом випадок, коли **збігається будь-яке** з цих полів, а не обидва. Це стандартна поведінка Vixie cron. +Cron-вирази розбираються за допомогою [croner](https://github.com/Hexagon/croner). Коли і поле дня місяця, і поле дня тижня не є wildcard, croner виконує збіг, коли **будь-яке** з полів збігається — а не обидва. Це стандартна поведінка Vixie cron. ``` # Intended: "9 AM on the 15th, only if it's a Monday" @@ -84,34 +84,34 @@ Cron-вирази аналізуються за допомогою [croner](http 0 9 15 * 1 ``` -Такий вираз спрацьовує приблизно 5–6 разів на місяць замість 0–1 разу на місяць. OpenClaw тут використовує стандартну OR-поведінку Croner. Щоб вимагати виконання обох умов, використовуйте модифікатор дня тижня `+` у Croner (`0 9 15 * +1`) або плануйте за одним полем, а інше перевіряйте в prompt або команді свого завдання. +Це спрацьовує приблизно 5–6 разів на місяць замість 0–1 разу на місяць. Тут OpenClaw використовує стандартну поведінку OR із Croner. Щоб вимагати виконання обох умов, використовуйте модифікатор дня тижня `+` у Croner (`0 9 15 * +1`) або налаштуйте розклад за одним полем, а інше перевіряйте в prompt чи команді вашого завдання. ## Стилі виконання -| Стиль | Значення `--session` | Запускається в | Найкраще підходить для | -| --------------- | -------------------- | ----------------------- | ------------------------------- | -| Основна сесія | `main` | Наступний цикл Heartbeat | Нагадувань, системних подій | -| Ізольований | `isolated` | Виділена `cron:` | Звітів, фонових справ | -| Поточна сесія | `current` | Прив’язується під час створення | Повторюваної роботи з урахуванням контексту | -| Користувацька сесія | `session:custom-id` | Постійна іменована сесія | Процесів, що спираються на історію | +| Стиль | Значення `--session` | Виконується в | Найкраще підходить для | +| -------------- | -------------------- | ------------------------ | ------------------------------- | +| Основна сесія | `main` | Наступний цикл heartbeat | Нагадувань, системних подій | +| Ізольований | `isolated` | Виділений `cron:` | Звітів, фонових завдань | +| Поточна сесія | `current` | Прив’язується під час створення | Повторюваної роботи з контекстом | +| Власна сесія | `session:custom-id` | Постійна іменована сесія | Процесів, що накопичують історію | - - Завдання **основної сесії** ставлять у чергу системну подію та за потреби пробуджують heartbeat (`--wake now` або `--wake next-heartbeat`). Такі системні події не подовжують актуальність скидання за днем/простою для цільової сесії. **Ізольовані** завдання запускають окремий цикл агента зі свіжою сесією. **Користувацькі сесії** (`session:xxx`) зберігають контекст між запусками, що дає змогу реалізувати сценарії на кшталт щоденних стендапів, які спираються на попередні підсумки. + + Завдання **основної сесії** ставлять у чергу системну подію і за потреби пробуджують heartbeat (`--wake now` або `--wake next-heartbeat`). Ці системні події не подовжують актуальність щоденного/неактивного скидання для цільової сесії. **Ізольовані** завдання запускають окремий цикл агента з новою сесією. **Власні сесії** (`session:xxx`) зберігають контекст між запусками, що дає змогу реалізувати процеси на кшталт щоденних стендапів, які спираються на попередні підсумки. - - Для ізольованих завдань «свіжа сесія» означає новий ідентифікатор transcript/session для кожного запуску. OpenClaw може переносити безпечні налаштування, як-от параметри thinking/fast/verbose, мітки та явні обрані користувачем перевизначення моделі/автентифікації, але не успадковує фоновий контекст розмови зі старого рядка cron: маршрутизацію каналу/групи, політику надсилання або постановки в чергу, підвищення привілеїв, походження чи прив’язку runtime ACP. Використовуйте `current` або `session:`, коли повторюване завдання має навмисно спиратися на той самий контекст розмови. + + Для ізольованих завдань "нова сесія" означає новий transcript/session id для кожного запуску. OpenClaw може переносити безпечні налаштування, наприклад параметри thinking/fast/verbose, мітки та явні користувацькі перевизначення model/auth, але не успадковує фоновий контекст розмови зі старішого рядка cron: маршрутизацію channel/group, політику send або queue, підвищення привілеїв, origin чи прив’язку середовища виконання ACP. Використовуйте `current` або `session:`, коли повторюване завдання має навмисно будуватися на тому самому контексті розмови. - - Для ізольованих завдань згортання runtime тепер включає best-effort очищення браузера для цієї cron-сесії. Помилки очищення ігноруються, тож фактичний результат cron усе одно має пріоритет. + + Для ізольованих завдань завершення середовища виконання тепер включає best-effort очищення браузера для цієї cron-сесії. Помилки очищення ігноруються, тому реальний результат cron усе одно має пріоритет. - Ізольовані запуски cron також звільняють усі вбудовані екземпляри runtime MCP, створені для завдання, через спільний шлях очищення runtime. Це відповідає тому, як закриваються клієнти MCP для основної та користувацької сесій, тому ізольовані cron-завдання не витікають у stdio дочірні процеси або довготривалі MCP-з’єднання між запусками. + Ізольовані запуски cron також звільняють усі вбудовані екземпляри середовища виконання MCP, створені для завдання, через спільний шлях очищення середовища виконання. Це відповідає тому, як завершується робота клієнтів MCP для основної та власної сесій, тож ізольовані cron-завдання не призводять до витоків дочірніх stdio-процесів або довготривалих MCP-з’єднань між запусками. - - Коли ізольовані запуски cron оркеструють субагентів, під час доставки також надається перевага фінальному виводу нащадка, а не застарілому проміжному тексту батьківського запуску. Якщо нащадки все ще виконуються, OpenClaw пригнічує це часткове оновлення батьківського запуску замість того, щоб оголошувати його. + + Коли ізольовані запуски cron оркеструють субагентів, під час доставки також надається перевага фінальному виводу дочірнього нащадка, а не застарілому проміжному тексту батьківського запуску. Якщо нащадки все ще виконуються, OpenClaw приглушує це часткове батьківське оновлення замість того, щоб оголошувати його. - Для цілей оголошення Discord лише з текстом OpenClaw надсилає канонічний фінальний текст асистента один раз, замість того щоб повторно відтворювати і потокові/проміжні текстові payload-и, і фінальну відповідь. Медіа та структуровані payload-и Discord, як і раніше, доставляються окремо, щоб не втрачалися вкладення та компоненти. + Для цілей оголошення в Discord лише з текстом OpenClaw надсилає один раз канонічний фінальний текст помічника замість повторного відтворення і потокових/проміжних текстових payload-ів, і фінальної відповіді. Медіа та структуровані payload-и Discord, як і раніше, доставляються окремо, щоб не втрачалися вкладення та компоненти. @@ -128,45 +128,45 @@ Cron-вирази аналізуються за допомогою [croner](http Перевизначення рівня thinking. - Пропустити ін’єкцію bootstrap-файлу робочого простору. + Пропустити інʼєкцію файлу bootstrap робочого простору. Обмежити, які інструменти може використовувати завдання, наприклад `--tools exec,read`. -`--model` використовує вибрану дозволену модель для цього завдання. Якщо запитана модель не дозволена, cron записує попередження в журнал і натомість повертається до вибору моделі агента/моделі за замовчуванням для цього завдання. Налаштовані ланцюжки fallback, як і раніше, застосовуються, але просте перевизначення моделі без явного списку fallback для конкретного завдання більше не додає основну модель агента як приховану додаткову ціль для повторної спроби. +`--model` використовує вибрану дозволену модель для цього завдання. Якщо запитана модель не дозволена, cron записує попередження в журнал і натомість повертається до вибору моделі агента/моделі за замовчуванням для цього завдання. Налаштовані ланцюжки fallback, як і раніше, застосовуються, але просте перевизначення моделі без явного списку fallback для завдання більше не додає основну модель агента як приховану додаткову ціль повторної спроби. -Пріоритет вибору моделі для ізольованих завдань: +Пріоритет вибору моделі для ізольованих завдань такий: -1. Перевизначення моделі через Gmail hook (коли запуск прийшов із Gmail і це перевизначення дозволене) -2. `model` у payload конкретного завдання -3. Збережене перевизначення моделі cron-сесії, вибране користувачем +1. Перевизначення моделі hook Gmail (коли запуск надійшов із Gmail і це перевизначення дозволене) +2. `model` у payload для конкретного завдання +3. Збережене користувачем перевизначення моделі сесії cron 4. Вибір моделі агента/за замовчуванням -Режим fast також використовує визначений під час виконання вибір. Якщо конфігурація вибраної моделі має `params.fastMode`, ізольований cron використовує це значення за замовчуванням. Збережене в сесії перевизначення `fastMode` усе одно має пріоритет над конфігурацією в будь-який бік. +Швидкий режим також слідує за вибраним активним налаштуванням. Якщо вибрана конфігурація моделі має `params.fastMode`, ізольований cron використовує це за замовчуванням. Збережене в сесії перевизначення `fastMode` усе одно має пріоритет над конфігурацією в будь-який бік. -Якщо ізольований запуск натрапляє на live-передавання керування через перемикання моделі, cron виконує повторну спробу з перемкненим provider/model і зберігає цей live-вибір для активного запуску перед повторною спробою. Якщо перемикання також передає новий профіль автентифікації, cron також зберігає це перевизначення auth profile для активного запуску. Повторні спроби обмежені: після початкової спроби плюс 2 повторні спроби через перемикання cron переривається замість безкінечного циклу. +Якщо ізольований запуск натрапляє на активне передавання керування під час перемикання моделі, cron повторює спробу з перемкненим provider/model і зберігає цей активний вибір для поточного запуску перед повторною спробою. Коли перемикання також несе новий auth profile, cron теж зберігає це перевизначення auth profile для поточного запуску. Кількість повторних спроб обмежена: після початкової спроби плюс 2 повторні спроби перемикання cron перериває виконання замість нескінченного циклу. ## Доставка і вивід -| Режим | Що відбувається | -| ---------- | ------------------------------------------------------------------- | -| `announce` | Резервно доставляє фінальний текст до цілі, якщо агент його не надіслав | -| `webhook` | Надсилає payload завершеної події методом POST на URL | -| `none` | Без резервної доставки з боку виконавця | +| Режим | Що відбувається | +| --------- | ------------------------------------------------------------------ | +| `announce` | Резервно доставляє фінальний текст до цілі, якщо агент не надіслав його | +| `webhook` | Надсилає POST payload завершеної події на URL | +| `none` | Немає резервної доставки з боку виконавця | -Використовуйте `--announce --channel telegram --to "-1001234567890"` для доставки до каналу. Для тем форуму Telegram використовуйте `-1001234567890:topic:123`. Цілі Slack/Discord/Mattermost мають використовувати явні префікси (`channel:`, `user:`). Ідентифікатори кімнат Matrix чутливі до регістру; використовуйте точний room ID або форму `room:!room:server` із Matrix. +Використовуйте `--announce --channel telegram --to "-1001234567890"` для доставки в канал. Для тем форуму Telegram використовуйте `-1001234567890:topic:123`. Для цілей Slack/Discord/Mattermost слід використовувати явні префікси (`channel:`, `user:`). Ідентифікатори кімнат Matrix чутливі до регістру; використовуйте точний room ID або форму `room:!room:server` із Matrix. -Для ізольованих завдань доставка до чату є спільною. Якщо маршрут чату доступний, агент може використовувати інструмент `message`, навіть коли для завдання використовується `--no-deliver`. Якщо агент надсилає повідомлення до налаштованої/поточної цілі, OpenClaw пропускає резервне оголошення. Інакше `announce`, `webhook` і `none` керують лише тим, що виконавець робить із фінальною відповіддю після циклу агента. +Для ізольованих завдань доставка в чат є спільною. Якщо маршрут чату доступний, агент може використовувати інструмент `message`, навіть коли завдання використовує `--no-deliver`. Якщо агент надсилає в налаштовану/поточну ціль, OpenClaw пропускає резервне оголошення. Інакше `announce`, `webhook` і `none` керують лише тим, що виконавець робить із фінальною відповіддю після циклу агента. -Коли агент створює ізольоване нагадування з активного чату, OpenClaw зберігає збережену live-ціль доставки для маршруту резервного оголошення. Внутрішні ключі сесії можуть бути в нижньому регістрі; цілі доставки provider не реконструюються з цих ключів, коли доступний контекст поточного чату. +Коли агент створює ізольоване нагадування з активного чату, OpenClaw зберігає збережену активну ціль доставки для маршруту резервного оголошення. Внутрішні ключі сесії можуть бути в нижньому регістрі; цілі доставки provider не реконструюються з цих ключів, коли доступний поточний контекст чату. -Сповіщення про помилки використовують окремий шлях призначення: +Сповіщення про збої використовують окремий шлях призначення: -- `cron.failureDestination` задає глобальне значення за замовчуванням для сповіщень про помилки. -- `job.delivery.failureDestination` перевизначає його для окремого завдання. -- Якщо не задано жодного з них, а завдання вже використовує доставку через `announce`, сповіщення про помилки тепер резервно надсилаються до тієї самої основної цілі оголошення. -- `delivery.failureDestination` підтримується лише для завдань із `sessionTarget="isolated"`, якщо тільки основний режим доставки не є `webhook`. +- `cron.failureDestination` задає глобальне значення за замовчуванням для сповіщень про збої. +- `job.delivery.failureDestination` перевизначає його для конкретного завдання. +- Якщо жодне з них не задане і завдання вже доставляє через `announce`, сповіщення про збої тепер резервно надсилаються до цієї основної цілі `announce`. +- `delivery.failureDestination` підтримується лише для завдань `sessionTarget="isolated"`, якщо основний режим доставки не є `webhook`. ## Приклади CLI @@ -194,7 +194,7 @@ Cron-вирази аналізуються за допомогою [croner](http --to "channel:C1234567890" ``` - + ```bash openclaw cron add \ --name "Deep analysis" \ @@ -211,7 +211,7 @@ Cron-вирази аналізуються за допомогою [croner](http ## Webhook-и -Gateway може відкривати HTTP-кінцеві точки Webhook для зовнішніх тригерів. Увімкніть у конфігурації: +Gateway може відкривати HTTP endpoint-и Webhook для зовнішніх тригерів. Увімкніть у конфігурації: ```json5 { @@ -230,11 +230,11 @@ Gateway може відкривати HTTP-кінцеві точки Webhook д - `Authorization: Bearer ` (рекомендовано) - `x-openclaw-token: ` -Токени в рядку запиту відхиляються. +Токени в query string відхиляються. - Додає системну подію в чергу для основної сесії: + Додати системну подію в чергу для основної сесії: ```bash curl -X POST http://127.0.0.1:18789/hooks/wake \ @@ -252,7 +252,7 @@ Gateway може відкривати HTTP-кінцеві точки Webhook д - Запускає ізольований цикл агента: + Запустити ізольований цикл агента: ```bash curl -X POST http://127.0.0.1:18789/hooks/agent \ @@ -265,18 +265,18 @@ Gateway може відкривати HTTP-кінцеві точки Webhook д - Користувацькі назви hook-ів визначаються через `hooks.mappings` у конфігурації. Зіставлення можуть перетворювати довільні payload-и на дії `wake` або `agent` за допомогою шаблонів або перетворень коду. + Власні назви hook-ів визначаються через `hooks.mappings` у конфігурації. Зіставлення можуть перетворювати довільні payload-и на дії `wake` або `agent` за допомогою шаблонів або перетворень коду. -Тримайте кінцеві точки hook-ів за loopback, tailnet або довіреним reverse proxy. +Тримайте endpoint-и hook-ів за loopback, tailnet або довіреним reverse proxy. -- Використовуйте окремий токен hook-ів; не використовуйте повторно токени автентифікації gateway. +- Використовуйте окремий токен hook-а; не використовуйте повторно токени автентифікації gateway. - Тримайте `hooks.path` на окремому підшляху; `/` відхиляється. - Установіть `hooks.allowedAgentIds`, щоб обмежити явну маршрутизацію `agentId`. -- Залишайте `hooks.allowRequestSessionKey=false`, якщо вам не потрібні сесії, вибрані викликачем. -- Якщо ви вмикаєте `hooks.allowRequestSessionKey`, також установіть `hooks.allowedSessionKeyPrefixes`, щоб обмежити дозволені форми ключів сесій. +- Тримайте `hooks.allowRequestSessionKey=false`, якщо вам не потрібні сесії, вибрані викликачем. +- Якщо ви вмикаєте `hooks.allowRequestSessionKey`, також установіть `hooks.allowedSessionKeyPrefixes`, щоб обмежити дозволені форми ключів сесії. - Payload-и hook-ів за замовчуванням обгортаються межами безпеки. @@ -285,7 +285,7 @@ Gateway може відкривати HTTP-кінцеві точки Webhook д Підключіть тригери вхідної пошти Gmail до OpenClaw через Google PubSub. -**Передумови:** CLI `gcloud`, `gog` (gogcli), увімкнені hooks OpenClaw, Tailscale для публічної кінцевої точки HTTPS. +**Передумови:** CLI `gcloud`, `gog` (gogcli), увімкнені hooks OpenClaw, Tailscale для публічного HTTPS endpoint. ### Налаштування через майстер (рекомендовано) @@ -294,13 +294,13 @@ Gateway може відкривати HTTP-кінцеві точки Webhook д openclaw webhooks gmail setup --account openclaw@gmail.com ``` -Це записує конфігурацію `hooks.gmail`, вмикає пресет Gmail і використовує Tailscale Funnel для push-кінцевої точки. +Це записує конфігурацію `hooks.gmail`, вмикає preset Gmail і використовує Tailscale Funnel для push endpoint. ### Автозапуск 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`, щоб відмовитися від цього. -### Ручне одноразове налаштування +### Одноразове ручне налаштування @@ -313,7 +313,7 @@ openclaw webhooks gmail setup --account openclaw@gmail.com ``` - + ```bash gcloud pubsub topics create gog-gmail-watch gcloud pubsub topics add-iam-policy-binding gog-gmail-watch \ @@ -377,9 +377,9 @@ openclaw cron edit --clear-agent Примітка щодо перевизначення моделі: - `openclaw cron add|edit --model ...` змінює вибрану модель завдання. -- Якщо модель дозволена, саме цей provider/model передається до ізольованого запуску агента. -- Якщо вона не дозволена, cron видає попередження і повертається до вибору моделі агента/моделі за замовчуванням для завдання. -- Налаштовані ланцюжки fallback, як і раніше, застосовуються, але просте перевизначення `--model` без явного списку fallback для конкретного завдання більше не переходить до основної моделі агента як до мовчазної додаткової цілі повторної спроби. +- Якщо модель дозволена, саме цей provider/model потрапляє до ізольованого запуску агента. +- Якщо вона не дозволена, cron видає попередження і повертається до вибору моделі агента/за замовчуванням для завдання. +- Налаштовані ланцюжки fallback, як і раніше, застосовуються, але просте перевизначення `--model` без явного списку fallback для завдання більше не переходить до основної моделі агента як до тихої додаткової цілі повторної спроби. ## Конфігурація @@ -402,25 +402,25 @@ openclaw cron edit --clear-agent } ``` -Побічний файл стану runtime виводиться з `cron.store`: сховище `.json`, таке як `~/clawd/cron/jobs.json`, використовує `~/clawd/cron/jobs-state.json`, тоді як до шляху сховища без суфікса `.json` додається `-state.json`. +Sidecar стану часу виконання виводиться з `cron.store`: сховище `.json`, таке як `~/clawd/cron/jobs.json`, використовує `~/clawd/cron/jobs-state.json`, а шлях сховища без суфікса `.json` отримує додаток `-state.json`. Вимкнення cron: `cron.enabled: false` або `OPENCLAW_SKIP_CRON=1`. - **Повтор для одноразових завдань**: тимчасові помилки (ліміт запитів, перевантаження, мережа, помилка сервера) повторюються до 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` автоматично очищають файли журналу запусків. ## Усунення несправностей -### Командна драбина +### Послідовність команд ```bash openclaw status @@ -436,33 +436,33 @@ openclaw doctor - Перевірте `cron.enabled` і змінну середовища `OPENCLAW_SKIP_CRON`. - - Підтвердьте, що Gateway працює безперервно. + - Переконайтеся, що Gateway працює безперервно. - Для розкладів `cron` перевірте часовий пояс (`--tz`) відносно часового поясу хоста. - `reason: not-due` у виводі запуску означає, що ручний запуск було перевірено через `openclaw cron run --due`, але час виконання завдання ще не настав. - - Режим доставки `none` означає, що резервне надсилання з боку виконавця не очікується. Агент усе ще може надсилати напряму за допомогою інструмента `message`, коли маршрут чату доступний. - - Відсутня/некоректна ціль доставки (`channel`/`to`) означає, що вихідне надсилання було пропущено. - - Для Matrix скопійовані або застарілі завдання з room ID у `delivery.to`, приведеними до нижнього регістру, можуть не працювати, оскільки room ID у Matrix чутливі до регістру. Відредагуйте завдання, вказавши точне значення `!room:server` або `room:!room:server` з Matrix. - - Помилки автентифікації каналу (`unauthorized`, `Forbidden`) означають, що доставку заблоковано обліковими даними. - - Якщо ізольований запуск повертає лише безшумний токен (`NO_REPLY` / `no_reply`), OpenClaw пригнічує пряме вихідне надсилання, а також резервний шлях підсумку в черзі, тож назад у чат нічого не публікується. - - Якщо агент має сам надіслати повідомлення користувачу, перевірте, що завдання має придатний маршрут (`channel: "last"` з попереднім чатом або явний канал/ціль). + - Режим доставки `none` означає, що резервне надсилання з боку виконавця не очікується. Агент усе ще може надсилати напряму через інструмент `message`, коли доступний маршрут чату. + - Відсутня/некоректна ціль доставки (`channel`/`to`) означає, що вихідну доставку було пропущено. + - Для Matrix скопійовані або застарілі завдання з `delivery.to` room ID у нижньому регістрі можуть зазнавати помилки, оскільки room ID у Matrix чутливі до регістру. Відредагуйте завдання, вказавши точне значення `!room:server` або `room:!room:server` із Matrix. + - Помилки автентифікації каналу (`unauthorized`, `Forbidden`) означають, що доставку було заблоковано обліковими даними. + - Якщо ізольований запуск повертає лише тихий токен (`NO_REPLY` / `no_reply`), OpenClaw приглушує пряму вихідну доставку, а також резервний шлях підсумку через чергу, тож назад у чат нічого не публікується. + - Якщо агент має сам надіслати повідомлення користувачу, перевірте, що завдання має придатний маршрут (`channel: "last"` із попереднім чатом або явний канал/ціль). - - - Актуальність щоденного скидання та скидання через простій не базується на `updatedAt`; див. [Керування сесіями](/uk/concepts/session#session-lifecycle). - - Пробудження cron, запуски heartbeat, сповіщення exec і службові дії gateway можуть оновлювати рядок сесії для маршрутизації/стану, але вони не продовжують `sessionStartedAt` або `lastInteractionAt`. - - Для застарілих рядків, створених до появи цих полів, OpenClaw може відновити `sessionStartedAt` із заголовка сесії transcript JSONL, якщо файл усе ще доступний. Для застарілих рядків простою без `lastInteractionAt` цей відновлений час початку використовується як базова точка простою. + + - Актуальність щоденного та неактивного скидання не базується на `updatedAt`; див. [Керування сесіями](/uk/concepts/session#session-lifecycle). + - Пробудження cron, запуски heartbeat, сповіщення exec і службові операції gateway можуть оновлювати рядок сесії для маршрутизації/статусу, але вони не подовжують `sessionStartedAt` або `lastInteractionAt`. + - Для застарілих рядків, створених до появи цих полів, OpenClaw може відновити `sessionStartedAt` із заголовка сесії transcript JSONL, якщо файл усе ще доступний. Для застарілих неактивних рядків без `lastInteractionAt` цей відновлений час початку використовується як базове значення неактивності. - + - Cron без `--tz` використовує часовий пояс хоста gateway. - Розклади `at` без часового поясу трактуються як UTC. - `activeHours` у Heartbeat використовує налаштоване визначення часового поясу. -## Пов’язане +## Пов’язані матеріали -- [Автоматизація і завдання](/uk/automation) — огляд усіх механізмів автоматизації +- [Автоматизація й завдання](/uk/automation) — усі механізми автоматизації в одному місці - [Фонові завдання](/uk/automation/tasks) — журнал завдань для виконань cron - [Heartbeat](/uk/gateway/heartbeat) — періодичні цикли основної сесії - [Часовий пояс](/uk/concepts/timezone) — конфігурація часового поясу diff --git a/docs/uk/cli/cron.md b/docs/uk/cli/cron.md index d644c9aa6..0d4e23e86 100644 --- a/docs/uk/cli/cron.md +++ b/docs/uk/cli/cron.md @@ -5,10 +5,10 @@ read_when: summary: Довідник CLI для `openclaw cron` (планування та запуск фонових завдань) title: Cron x-i18n: - generated_at: "2026-04-27T02:07:40Z" + generated_at: "2026-04-27T03:39:17Z" model: gpt-5.4 provider: openai - source_hash: 1c63cb6418b8ac4a38566f604162ca5d4e202726d1ef6a97e3ce072f90c179c3 + source_hash: 5c37e5ccd1069ae50e641c420cae8e2250bb279def39f46ef52b46c791d6f8b0 source_path: cli/cron.md workflow: 15 --- @@ -17,103 +17,109 @@ x-i18n: Керуйте завданнями Cron для планувальника Gateway. -Пов’язано: +Пов’язане: - Завдання Cron: [Завдання Cron](/uk/automation/cron-jobs) -Порада: запустіть `openclaw cron --help`, щоб побачити повний набір команд. +Порада: виконайте `openclaw cron --help`, щоб переглянути повний набір команд. -Примітка: `openclaw cron list` і `openclaw cron show ` попередньо показують -визначений маршрут доставки. Для `channel: "last"` попередній перегляд показує, чи -маршрут визначено з основної/поточної сесії, чи він буде безпечно відхилений. +Примітка: `openclaw cron list` і `openclaw cron show ` показують +попередній перегляд визначеного маршруту доставки. Для `channel: "last"` у +попередньому перегляді показано, чи маршрут визначено з основної/поточної сесії, +чи він завершиться безпечною відмовою. Примітка: ізольовані завдання `cron add` типово використовують доставку `--announce`. -Використовуйте `--no-deliver`, щоб залишити вивід внутрішнім. `--deliver` залишається -застарілим псевдонімом для `--announce`. +Використовуйте `--no-deliver`, щоб залишити вивід внутрішнім. `--deliver` і далі +підтримується як застарілий псевдонім для `--announce`. -Примітка: доставка чату для ізольованого cron є спільною. `--announce` — це резервна -доставка виконавця для фінальної відповіді; `--no-deliver` вимикає цей резервний механізм, -але не прибирає інструмент `message` агента, якщо маршрут чату доступний. +Примітка: доставка чату для ізольованого cron є спільною. `--announce` — це +резервна доставка виконавця для фінальної відповіді; `--no-deliver` вимикає цей +резервний варіант, але не прибирає інструмент `message` агента, якщо маршрут чату доступний. -Примітка: одноразові завдання (`--at`) типово видаляються після успішного виконання. +Примітка: одноразові завдання (`--at`) після успішного виконання типово видаляються. Використовуйте `--keep-after-run`, щоб зберегти їх. Примітка: `--session` підтримує `main`, `isolated`, `current` і `session:`. -Використовуйте `current`, щоб прив’язати до активної сесії під час створення, або -`session:` для явного постійного ключа сесії. +Використовуйте `current`, щоб прив’язати завдання до активної сесії на момент створення, +або `session:` для явного постійного ключа сесії. -Примітка: `--session isolated` створює новий ідентифікатор стенограми/сесії для -кожного запуску. Безпечні налаштування й явні користувацькі перевизначення моделі/автентифікації -можуть переноситися, але фоновий контекст розмови — ні: маршрутизація каналу/групи, -політика надсилання/черги, підвищення привілеїв, походження та прив’язка середовища виконання ACP -скидаються для нового ізольованого запуску. +Примітка: `--session isolated` створює новий transcript/ідентифікатор сесії для +кожного запуску. Безпечні налаштування та явні вибрані користувачем перевизначення +моделі/автентифікації можуть переноситися, але фоновий контекст розмови — ні: +маршрутизація каналу/групи, політика надсилання/черги, підвищення привілеїв, походження +та прив’язка середовища виконання ACP скидаються для нового ізольованого запуску. -Примітка: для одноразових завдань CLI дата й час `--at` без зсуву інтерпретуються як UTC, -якщо ви також не передасте `--tz `, який тлумачить цей локальний час у вказаному часовому поясі. +Примітка: для одноразових завдань CLI значення дати й часу `--at` без зсуву +трактуються як UTC, якщо ви також не передасте `--tz `, який інтерпретує +цей локальний час у вказаному часовому поясі. -Примітка: повторювані завдання тепер використовують експоненційне збільшення затримки повторних спроб -після послідовних помилок (30s → 1m → 5m → 15m → 60m), а потім повертаються до звичайного розкладу -після наступного успішного запуску. +Примітка: повторювані завдання тепер використовують експоненційне збільшення +затримки повторних спроб після послідовних помилок (30 с → 1 хв → 5 хв → 15 хв → 60 хв), +а після наступного успішного запуску повертаються до звичайного розкладу. -Примітка: `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 +повторно формує запит один раз для отримання реального результату перед доставкою. Примітка: якщо ізольований запуск cron повертає лише тихий токен (`NO_REPLY` / -`no_reply`), cron пригнічує як пряму вихідну доставку, так і резервний шлях -поставленого в чергу підсумку, тож у чат нічого не буде надіслано. +`no_reply`), cron приглушує як пряму вихідну доставку, так і резервний шлях +доставки підсумку через чергу, тож у чат нічого не публікується. -Примітка: ізольовані запуски cron розглядають відомі маркери відмови у фінальному виводі, як-от -`SYSTEM_RUN_DENIED`, `INVALID_REQUEST` і фрази відмови, пов’язані з прив’язкою до схвалення, -як помилки. Тоді `cron list` та історія запусків показують відповідний токен у причині помилки, -замість того щоб повідомляти про заблоковану команду як `ok`. +Примітка: ізольовані запуски cron надають перевагу структурованим метаданим +відмови у виконанні з вбудованого запуску, а потім використовують відомі маркери +відмови у фінальному виводі, як-от `SYSTEM_RUN_DENIED`, `INVALID_REQUEST` і фрази +відмови, пов’язані з прив’язкою схвалення. `cron list` та історія запусків +показують причину відмови замість того, щоб повідомляти заблоковану команду як `ok`. -Примітка: `cron add|edit --model ...` використовує для завдання цю вибрану дозволену модель. -Якщо модель не дозволена, cron показує попередження та натомість повертається до вибору -моделі агента/типової моделі для завдання. Налаштовані ланцюжки резервного перемикання все ще -застосовуються, але звичайне перевизначення моделі без явного списку резервних варіантів для завдання -більше не додає основну модель агента як приховану додаткову ціль для повторної спроби. +Примітка: `cron add|edit --model ...` використовує для завдання цю вибрану +дозволену модель. Якщо модель не дозволена, cron показує попередження і замість +цього повертається до вибору моделі агента/типової моделі завдання. Налаштовані +ланцюжки резервного переходу й далі застосовуються, але просте перевизначення +моделі без явного списку резервних варіантів для завдання більше не додає +основну модель агента як приховану додаткову ціль повторної спроби. -Примітка: пріоритет моделей в ізольованому cron такий: спочатку перевизначення Gmail-hook, -потім `--model` для завдання, потім будь-яке збережене користувачем перевизначення моделі cron-сесії, -а далі — звичайний вибір моделі агента/типової моделі. +Примітка: для ізольованого cron пріоритет моделі такий: спочатку перевизначення +Gmail-hook, потім `--model` для завдання, далі будь-яке збережене перевизначення +моделі cron-session, вибране користувачем, і лише потім звичайний вибір +агента/типової моделі. -Примітка: швидкий режим ізольованого cron дотримується визначеного вибору live-моделі. -Конфігурація моделі `params.fastMode` застосовується типово, але збережене в сесії -перевизначення `fastMode` усе одно має вищий пріоритет над конфігурацією. +Примітка: швидкий режим ізольованого cron працює відповідно до визначеного +активного вибору моделі. Конфігурація моделі `params.fastMode` застосовується +типово, але збережене перевизначення `fastMode` для сесії все одно має вищий пріоритет. -Примітка: якщо ізольований запуск викидає `LiveSessionModelSwitchError`, cron зберігає -перемкнутого провайдера/модель (а також перевизначення профілю автентифікації після перемикання, -якщо воно є) для активного запуску перед повторною спробою. Зовнішній цикл повторних спроб -обмежено 2 спробами перемикання після початкової спроби, після чого виконання переривається, -замість того щоб зациклитися назавжди. +Примітка: якщо ізольований запуск породжує `LiveSessionModelSwitchError`, cron +зберігає зміненого постачальника/модель (а також перевизначення зміненого профілю +автентифікації, якщо воно є) для активного запуску перед повторною спробою. +Зовнішній цикл повторних спроб обмежено 2 повторними спробами перемикання після +початкової спроби; потім він переривається, а не зациклюється безкінечно. -Примітка: сповіщення про збої спочатку використовують `delivery.failureDestination`, потім -глобальний `cron.failureDestination`, і зрештою повертаються до основної цілі -announce для завдання, якщо явне призначення для збоїв не налаштоване. +Примітка: сповіщення про помилки спочатку використовують `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, створені до +поточного формату доставки/сховища, виконайте `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" @@ -131,7 +137,7 @@ openclaw cron edit --no-deliver openclaw cron edit --light-context ``` -Оголошуйте в конкретний канал: +Оголошуйте в певний канал: ```bash openclaw cron edit --announce --channel slack --to "channel:C1234567890" @@ -141,29 +147,29 @@ openclaw cron edit --announce --channel slack --to "channel:C1234567890 ```bash openclaw cron add \ - --name "Легкий ранковий брифінг" \ + --name "Lightweight morning brief" \ --cron "0 7 * * *" \ --session isolated \ - --message "Підсумуй нічні оновлення." \ + --message "Summarize overnight updates." \ --light-context \ --no-deliver ``` -`--light-context` застосовується лише до ізольованих завдань типу agent-turn. Для запусків cron -полегшений режим залишає початковий контекст порожнім замість того, щоб додавати повний -набір початкового контексту робочого простору. +`--light-context` застосовується лише до ізольованих завдань типу agent-turn. +Для запусків cron полегшений режим зберігає початковий контекст порожнім замість +впровадження повного набору початкового контексту робочого простору. -Примітка щодо відповідальності за доставку: +Примітка щодо володіння доставкою: -- Доставка чату для ізольованого cron є спільною. Агент може надсилати напряму - за допомогою інструмента `message`, коли маршрут чату доступний. -- `announce` резервно доставляє фінальну відповідь лише тоді, коли агент не надіслав - її напряму до визначеної цілі. `webhook` надсилає завершений payload за URL. - `none` вимикає резервну доставку виконавця. -- Нагадування, створені з активного чату, зберігають ціль доставки live-чату - для резервної доставки announce. Внутрішні ключі сесії можуть бути в нижньому регістрі; - не використовуйте їх як джерело істини для чутливих до регістру ідентифікаторів провайдерів, - таких як ідентифікатори кімнат Matrix. +- Доставка чату для ізольованого cron є спільною. Агент може надсилати + безпосередньо за допомогою інструмента `message`, якщо маршрут чату доступний. +- `announce` резервно доставляє фінальну відповідь лише тоді, коли агент не + надіслав її безпосередньо до визначеної цілі. `webhook` надсилає завершений + payload на URL. `none` вимикає резервну доставку виконавця. +- Нагадування, створені з активного чату, зберігають активну ціль доставки чату + для резервної доставки announce. Внутрішні ключі сесій можуть бути в нижньому + регістрі; не використовуйте їх як джерело істини для чутливих до регістру + ідентифікаторів постачальників, таких як ідентифікатори кімнат Matrix. ## Поширені команди адміністрування @@ -177,11 +183,11 @@ openclaw cron run --due openclaw cron runs --id --limit 50 ``` -Записи `cron runs` містять діагностику доставки з цільовою ціллю cron, -визначеною ціллю, надсиланнями через інструмент message, використанням резервного -механізму та станом доставки. +Записи `cron runs` містять діагностику доставки з ціллю cron, яку було +заплановано, визначеною ціллю, надсиланнями через інструмент message, +використанням резервного варіанта та станом доставки. -Перенаправлення агента/сесії: +Перепризначення агента/сесії: ```bash openclaw cron edit --agent ops @@ -199,15 +205,16 @@ openclaw cron edit --no-best-effort-deliver openclaw cron edit --no-deliver ``` -Примітка щодо доставки збоїв: +Примітка щодо доставки помилок: - `delivery.failureDestination` підтримується для ізольованих завдань. - Завдання основної сесії можуть використовувати `delivery.failureDestination` лише тоді, коли основний режим доставки — `webhook`. -- Якщо ви не задаєте жодного призначення для збоїв, а завдання вже оголошує в - канал, сповіщення про збої повторно використовують ту саму ціль announce. +- Якщо ви не налаштуєте жодного призначення для помилок, а завдання вже робить + announce у канал, сповіщення про помилки повторно використовуватимуть ту саму + ціль announce. -## Пов’язано +## Пов’язане - [Довідник CLI](/uk/cli) - [Заплановані завдання](/uk/automation/cron-jobs) diff --git a/docs/uk/providers/ollama.md b/docs/uk/providers/ollama.md index a6a99713d..388425c8f 100644 --- a/docs/uk/providers/ollama.md +++ b/docs/uk/providers/ollama.md @@ -1,56 +1,58 @@ --- read_when: - - Ви хочете запускати OpenClaw з хмарними або локальними моделями через Ollama + - Ви хочете запустити OpenClaw з хмарними або локальними моделями через Ollama - Вам потрібні вказівки з налаштування та конфігурації Ollama - - Ви хочете використовувати візійні моделі Ollama для розпізнавання зображень + - Ви хочете використовувати vision-моделі Ollama для розуміння зображень summary: Запустіть OpenClaw з Ollama (хмарні та локальні моделі) title: Ollama x-i18n: - generated_at: "2026-04-27T02:57:19Z" + generated_at: "2026-04-27T03:39:16Z" model: gpt-5.4 provider: openai - source_hash: 2347bab12354fbcf4065eec923695f1cc71eb2740f6fd589c9b70c0b71794469 + source_hash: 467bae016d29083185c54e887a5a2083e0e1b69f1e28a96529d3cb861042179a source_path: providers/ollama.md workflow: 15 --- -OpenClaw інтегрується з рідним API Ollama (`/api/chat`) для розміщених хмарних моделей і локальних/самостійно розміщених серверів Ollama. Ви можете використовувати Ollama у трьох режимах: `Cloud + Local` через доступний хост Ollama, `Cloud only` з `https://ollama.com` або `Local only` через доступний хост Ollama. +OpenClaw інтегрується з нативним API Ollama (`/api/chat`) для розміщених хмарних моделей і локальних/self-hosted серверів Ollama. Ви можете використовувати Ollama у трьох режимах: `Cloud + Local` через доступний хост Ollama, `Cloud only` через `https://ollama.com` або `Local only` через доступний хост Ollama. -**Користувачі віддаленого Ollama**: Не використовуйте OpenAI-сумісну URL-адресу `/v1` (`http://host:11434/v1`) з OpenClaw. Це ламає виклик інструментів, і моделі можуть виводити сирий JSON інструментів як звичайний текст. Натомість використовуйте рідну URL-адресу API Ollama: `baseUrl: "http://host:11434"` (без `/v1`). +**Користувачі віддаленого Ollama**: Не використовуйте з OpenClaw OpenAI-сумісну URL-адресу `/v1` (`http://host:11434/v1`). Це ламає виклики інструментів, і моделі можуть виводити сирий JSON інструментів як звичайний текст. Натомість використовуйте URL нативного API Ollama: `baseUrl: "http://host:11434"` (без `/v1`). -Конфігурація провайдера Ollama використовує `baseUrl` як канонічний ключ. OpenClaw також приймає `baseURL` для сумісності з прикладами у стилі OpenAI SDK, але в новій конфігурації слід надавати перевагу `baseUrl`. +Конфігурація провайдера Ollama використовує `baseUrl` як канонічний ключ. OpenClaw також приймає `baseURL` для сумісності з прикладами у стилі OpenAI SDK, але в новій конфігурації слід віддавати перевагу `baseUrl`. -Локальні хости Ollama та хости Ollama у LAN не потребують справжнього bearer-токена; OpenClaw використовує локальний маркер `ollama-local` лише для базових URL-адрес Ollama з loopback, приватною мережею, `.local` і звичайним іменем хоста. Віддалені публічні хости та Ollama Cloud (`https://ollama.com`) потребують справжніх облікових даних через `OLLAMA_API_KEY`, профіль автентифікації або `apiKey` провайдера. +Локальні та LAN-хости Ollama не потребують справжнього bearer-токена; OpenClaw використовує локальний маркер `ollama-local` лише для loopback, приватної мережі, `.local` і базових URL Ollama з простим іменем хоста. Віддалені публічні хости та Ollama Cloud (`https://ollama.com`) потребують справжніх облікових даних через `OLLAMA_API_KEY`, профіль автентифікації або `apiKey` провайдера. -Коли Ollama використовується для embedding-пам’яті, bearer-автентифікація прив’язується до хоста, де її було оголошено. Ключ на рівні провайдера надсилається лише хосту Ollama цього провайдера; `agents.*.memorySearch.remote.apiKey` надсилається лише його віддаленому хосту embedding; а чисте значення змінної середовища `OLLAMA_API_KEY` трактується як домовленість для Ollama Cloud, а не надсилається локальним/самостійно розміщеним хостам за замовчуванням. +Користувацькі id провайдерів, які задають `api: "ollama"`, використовують ті самі правила автентифікації. Наприклад, провайдер `ollama-remote`, що вказує на приватний LAN-хост Ollama, може використовувати `apiKey: "ollama-local"`, і субагенти розв’язуватимуть цей маркер через хук провайдера Ollama, а не трактуватимуть його як відсутні облікові дані. + +Коли Ollama використовується для embedding-пам’яті, bearer-автентифікація прив’язується до хоста, де її було оголошено. Ключ рівня провайдера надсилається лише на хост Ollama цього провайдера; `agents.*.memorySearch.remote.apiKey` надсилається лише на його віддалений хост embedding; а чисте значення змінної середовища `OLLAMA_API_KEY` за замовчуванням трактується як угода для Ollama Cloud, а не надсилається на локальні/self-hosted хости. ## Початок роботи -Виберіть бажаний спосіб налаштування та режим. +Оберіть бажаний спосіб налаштування та режим. - + **Найкраще для:** найшвидшого шляху до робочого хмарного або локального налаштування Ollama. - + ```bash openclaw onboard ``` Виберіть **Ollama** зі списку провайдерів. - + - **Cloud + Local** — локальний хост Ollama плюс хмарні моделі, що маршрутизуються через цей хост - **Cloud only** — розміщені моделі Ollama через `https://ollama.com` - **Local only** — лише локальні моделі - - `Cloud only` запитує `OLLAMA_API_KEY` і пропонує стандартні хмарні варіанти. `Cloud + Local` і `Local only` запитують базову URL-адресу Ollama, виявляють доступні моделі та автоматично завантажують вибрану локальну модель, якщо вона ще недоступна. `Cloud + Local` також перевіряє, чи цей хост Ollama увійшов у систему для доступу до хмари. + + `Cloud only` запитує `OLLAMA_API_KEY` і пропонує типові хмарні значення за замовчуванням. `Cloud + Local` і `Local only` запитують базовий URL Ollama, виявляють доступні моделі та автоматично завантажують вибрану локальну модель, якщо вона ще недоступна. `Cloud + Local` також перевіряє, чи цей хост Ollama увійшов у систему для доступу до хмари. - + ```bash openclaw models list --provider ollama ``` @@ -65,7 +67,7 @@ OpenClaw інтегрується з рідним API Ollama (`/api/chat`) дл --accept-risk ``` - За бажанням укажіть власну базову URL-адресу або модель: + За потреби вкажіть власний базовий URL або модель: ```bash openclaw onboard --non-interactive \ @@ -77,39 +79,39 @@ OpenClaw інтегрується з рідним API Ollama (`/api/chat`) дл - + **Найкраще для:** повного контролю над хмарним або локальним налаштуванням. - + - **Cloud + Local**: установіть Ollama, увійдіть через `ollama signin` і маршрутизуйте хмарні запити через цей хост - **Cloud only**: використовуйте `https://ollama.com` з `OLLAMA_API_KEY` - **Local only**: установіть Ollama з [ollama.com/download](https://ollama.com/download) - + ```bash ollama pull gemma4 - # or + # або ollama pull gpt-oss:20b - # or + # або ollama pull llama3.3 ``` - - Для `Cloud only` використовуйте справжній `OLLAMA_API_KEY`. Для конфігурацій на базі хоста підійде будь-яке значення-заповнювач: + + Для `Cloud only` використовуйте справжній `OLLAMA_API_KEY`. Для конфігурацій на основі хоста підійде будь-яке значення-заповнювач: ```bash - # Cloud + # Хмара export OLLAMA_API_KEY="your-ollama-api-key" - # Local-only + # Лише локально export OLLAMA_API_KEY="ollama-local" - # Or configure in your config file + # Або налаштуйте у вашому файлі конфігурації openclaw config set models.providers.ollama.apiKey "OLLAMA_API_KEY" ``` - + ```bash openclaw models list openclaw models set ollama/gemma4 @@ -136,48 +138,48 @@ OpenClaw інтегрується з рідним API Ollama (`/api/chat`) дл - `Cloud + Local` використовує доступний хост Ollama як контрольну точку і для локальних, і для хмарних моделей. Це рекомендований Ollama гібридний сценарій. + `Cloud + Local` використовує доступний хост Ollama як точку керування і для локальних, і для хмарних моделей. Це рекомендований Ollama гібридний сценарій. - Використовуйте **Cloud + Local** під час налаштування. OpenClaw запитує базову URL-адресу Ollama, виявляє локальні моделі з цього хоста та перевіряє, чи хост увійшов у систему для доступу до хмари через `ollama signin`. Коли хост увійшов у систему, OpenClaw також пропонує стандартні розміщені хмарні моделі, такі як `kimi-k2.5:cloud`, `minimax-m2.7:cloud` і `glm-5.1:cloud`. + Використовуйте **Cloud + Local** під час налаштування. OpenClaw запитує базовий URL Ollama, виявляє локальні моделі на цьому хості та перевіряє, чи хост увійшов у систему для хмарного доступу через `ollama signin`. Якщо хост увійшов у систему, OpenClaw також пропонує типові розміщені хмарні значення за замовчуванням, наприклад `kimi-k2.5:cloud`, `minimax-m2.7:cloud` і `glm-5.1:cloud`. - Якщо хост ще не увійшов у систему, OpenClaw залишає налаштування лише локальним, доки ви не виконаєте `ollama signin`. + Якщо хост ще не увійшов у систему, OpenClaw зберігає налаштування лише локальним, доки ви не виконаєте `ollama signin`. - `Cloud only` працює з розміщеним API Ollama за адресою `https://ollama.com`. + `Cloud only` працює через розміщений API Ollama за адресою `https://ollama.com`. - Використовуйте **Cloud only** під час налаштування. OpenClaw запитує `OLLAMA_API_KEY`, встановлює `baseUrl: "https://ollama.com"` і заповнює список розміщених хмарних моделей. Цей шлях **не** потребує локального сервера Ollama або `ollama signin`. + Використовуйте **Cloud only** під час налаштування. OpenClaw запитує `OLLAMA_API_KEY`, задає `baseUrl: "https://ollama.com"` і заповнює список розміщених хмарних моделей. Цей шлях **не** потребує локального сервера Ollama або `ollama signin`. - Список хмарних моделей, що показується під час `openclaw onboard`, заповнюється в реальному часі з `https://ollama.com/api/tags`, з обмеженням у 500 записів, тому засіб вибору відображає поточний розміщений каталог, а не статичний набір. Якщо `ollama.com` недоступний або не повертає моделей під час налаштування, OpenClaw повертається до попередніх жорстко закодованих підказок, щоб onboarding усе одно завершився. + Список хмарних моделей, що показується під час `openclaw onboard`, заповнюється в реальному часі з `https://ollama.com/api/tags`, з обмеженням до 500 записів, тому засіб вибору відображає поточний розміщений каталог, а не статичний початковий список. Якщо `ollama.com` недоступний або не повертає моделей на момент налаштування, OpenClaw повертається до попередніх жорстко закодованих пропозицій, щоб початкове налаштування все одно завершилося. - У режимі лише локального використання OpenClaw виявляє моделі з налаштованого екземпляра Ollama. Цей шлях призначений для локальних або самостійно розміщених серверів Ollama. + У режимі лише local only OpenClaw виявляє моделі з налаштованого екземпляра Ollama. Цей шлях призначений для локальних або self-hosted серверів Ollama. - Наразі OpenClaw пропонує `gemma4` як локальну модель за замовчуванням. + Наразі OpenClaw пропонує `gemma4` як локальне значення за замовчуванням. ## Виявлення моделей (неявний провайдер) -Коли ви встановлюєте `OLLAMA_API_KEY` (або профіль автентифікації) і **не** визначаєте `models.providers.ollama`, OpenClaw виявляє моделі з локального екземпляра Ollama за адресою `http://127.0.0.1:11434`. +Коли ви задаєте `OLLAMA_API_KEY` (або профіль автентифікації) і **не** визначаєте `models.providers.ollama`, OpenClaw виявляє моделі з локального екземпляра Ollama за адресою `http://127.0.0.1:11434`. -| Поведінка | Деталі | -| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Запит каталогу | Виконує запит до `/api/tags` | -| Визначення можливостей | Використовує best-effort запити до `/api/show`, щоб зчитувати `contextWindow`, розгорнуті параметри Modelfile `num_ctx` і можливості, зокрема vision/tools | -| Візійні моделі | Моделі з можливістю `vision`, про яку повідомляє `/api/show`, позначаються як здатні працювати із зображеннями (`input: ["text", "image"]`), тому OpenClaw автоматично додає зображення до prompt | -| Визначення reasoning | Позначає `reasoning` за евристикою назви моделі (`r1`, `reasoning`, `think`) | -| Ліміти токенів | Установлює `maxTokens` на стандартний максимальний ліміт токенів Ollama, який використовує OpenClaw | -| Вартість | Установлює всі вартості в `0` | +| Поведінка | Деталі | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Запит каталогу | Виконує запит до `/api/tags` | +| Визначення можливостей | Використовує найкращі можливі пошуки через `/api/show`, щоб зчитати `contextWindow`, розширені параметри Modelfile `num_ctx` і можливості, зокрема vision/tools | +| Vision-моделі | Моделі з можливістю `vision`, про яку повідомляє `/api/show`, позначаються як здатні працювати із зображеннями (`input: ["text", "image"]`), тож OpenClaw автоматично додає зображення в prompt | +| Визначення reasoning | Позначає `reasoning` за евристикою назви моделі (`r1`, `reasoning`, `think`) | +| Обмеження токенів | Встановлює `maxTokens` на типове максимальне обмеження токенів Ollama, яке використовує OpenClaw | +| Вартість | Встановлює всі вартості в `0` | -Це дає змогу уникнути ручного додавання моделей, зберігаючи каталог узгодженим із локальним екземпляром Ollama. +Це дає змогу уникнути ручного додавання моделей і водночас зберегти узгодженість каталогу з локальним екземпляром Ollama. ```bash -# See what models are available +# Перегляньте, які моделі доступні ollama list openclaw models list ``` @@ -188,24 +190,24 @@ openclaw models list ollama pull mistral ``` -Нову модель буде автоматично виявлено, і вона стане доступною для використання. +Нова модель буде автоматично виявлена та стане доступною для використання. -Якщо ви явно задаєте `models.providers.ollama`, автоматичне виявлення пропускається, і ви маєте визначити моделі вручну. Див. розділ явно заданої конфігурації нижче. +Якщо ви явно задаєте `models.providers.ollama`, автоматичне виявлення пропускається, і вам потрібно визначати моделі вручну. Див. розділ про явну конфігурацію нижче. ## Vision і опис зображень -Вбудований Plugin Ollama реєструє Ollama як провайдера розуміння медіа, здатного працювати із зображеннями. Це дає OpenClaw змогу маршрутизувати явні запити на опис зображень і налаштовані типові моделі зображень через локальні або розміщені візійні моделі Ollama. +Вбудований Plugin Ollama реєструє Ollama як провайдера розуміння медіа, здатного працювати із зображеннями. Це дає OpenClaw змогу маршрутизувати явні запити на опис зображень і налаштовані типові моделі для зображень через локальні або розміщені vision-моделі Ollama. -Для локального vision завантажте модель, яка підтримує зображення: +Для локального vision завантажте модель, що підтримує зображення: ```bash ollama pull qwen2.5vl:7b export OLLAMA_API_KEY="ollama-local" ``` -Потім перевірте за допомогою infer CLI: +Потім перевірте через CLI infer: ```bash openclaw infer image describe \ @@ -214,9 +216,9 @@ openclaw infer image describe \ --json ``` -`--model` має бути повним посиланням у форматі ``. Якщо його встановлено, `openclaw infer image describe` запускає цю модель безпосередньо замість пропуску опису через те, що модель підтримує вбудоване vision. +`--model` має бути повним посиланням ``. Якщо його задано, `openclaw infer image describe` запускає цю модель безпосередньо, а не пропускає опис через те, що модель підтримує нативне vision. -Щоб зробити Ollama типовою моделлю для розуміння зображень для вхідних медіафайлів, налаштуйте `agents.defaults.imageModel`: +Щоб зробити Ollama типовою моделлю розуміння зображень для вхідних медіа, налаштуйте `agents.defaults.imageModel`: ```json5 { @@ -230,7 +232,7 @@ openclaw infer image describe \ } ``` -Якщо ви визначаєте `models.providers.ollama.models` вручну, позначайте візійні моделі підтримкою вхідних зображень: +Якщо ви визначаєте `models.providers.ollama.models` вручну, позначайте vision-моделі як такі, що підтримують введення зображень: ```json5 { @@ -247,21 +249,21 @@ OpenClaw відхиляє запити на опис зображень для ## Конфігурація - - Найпростіший шлях увімкнення режиму лише локального використання — через змінну середовища: + + Найпростіший шлях увімкнення режиму лише local only — через змінну середовища: ```bash export OLLAMA_API_KEY="ollama-local" ``` - Якщо встановлено `OLLAMA_API_KEY`, ви можете не вказувати `apiKey` у записі провайдера, і OpenClaw заповнить його для перевірок доступності. + Якщо задано `OLLAMA_API_KEY`, можна не вказувати `apiKey` у записі провайдера, і OpenClaw підставить його для перевірок доступності. - - Використовуйте явно задану конфігурацію, якщо вам потрібне налаштування розміщеної хмари, Ollama працює на іншому хості/порту, ви хочете примусово задати конкретні вікна контексту або списки моделей, або вам потрібні повністю ручні визначення моделей. + + Використовуйте явну конфігурацію, якщо вам потрібне розміщене хмарне налаштування, Ollama працює на іншому хості/порті, ви хочете примусово задати конкретні вікна контексту або списки моделей, або вам потрібні повністю ручні визначення моделей. ```json5 { @@ -290,8 +292,8 @@ OpenClaw відхиляє запити на опис зображень для - - Якщо Ollama працює на іншому хості або порту (явно задана конфігурація вимикає автоматичне виявлення, тому визначайте моделі вручну): + + Якщо Ollama працює на іншому хості або порту (явна конфігурація вимикає автоматичне виявлення, тому визначайте моделі вручну): ```json5 { @@ -299,8 +301,8 @@ OpenClaw відхиляє запити на опис зображень для providers: { ollama: { apiKey: "ollama-local", - baseUrl: "http://ollama-host:11434", // No /v1 - use native Ollama API URL - api: "ollama", // Set explicitly to guarantee native tool-calling behavior + baseUrl: "http://ollama-host:11434", // Без /v1 — використовуйте URL нативного API Ollama + api: "ollama", // Задайте явно, щоб гарантувати нативну поведінку виклику інструментів }, }, }, @@ -308,7 +310,7 @@ OpenClaw відхиляє запити на опис зображень для ``` - Не додавайте `/v1` до URL-адреси. Шлях `/v1` використовує OpenAI-сумісний режим, у якому виклик інструментів ненадійний. Використовуйте базову URL-адресу Ollama без суфікса шляху. + Не додавайте `/v1` до URL-адреси. Шлях `/v1` використовує OpenAI-сумісний режим, у якому виклики інструментів працюють ненадійно. Використовуйте базовий URL Ollama без суфікса шляху. @@ -316,7 +318,7 @@ OpenClaw відхиляє запити на опис зображень для ### Вибір моделі -Після налаштування всі ваші моделі Ollama стають доступними: +Після налаштування всі ваші моделі Ollama будуть доступні: ```json5 { @@ -331,7 +333,7 @@ OpenClaw відхиляє запити на опис зображень для } ``` -Також підтримуються власні ідентифікатори провайдера Ollama. Коли посилання на модель використовує префікс активного провайдера, наприклад `ollama-spark/qwen3:32b`, OpenClaw прибирає лише цей префікс перед викликом Ollama, щоб сервер отримав `qwen3:32b`. +Також підтримуються користувацькі id провайдерів Ollama. Коли посилання на модель використовує префікс активного провайдера, наприклад `ollama-spark/qwen3:32b`, OpenClaw прибирає лише цей префікс перед викликом Ollama, щоб сервер отримав `qwen3:32b`. ## Вебпошук Ollama @@ -340,8 +342,8 @@ OpenClaw підтримує **Вебпошук Ollama** як вбудовани | Властивість | Деталі | | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Хост | Використовує налаштований вами хост Ollama (`models.providers.ollama.baseUrl`, якщо задано, інакше `http://127.0.0.1:11434`); `https://ollama.com` напряму використовує розміщений API | -| Автентифікація | Без ключа для локальних хостів Ollama, у які виконано вхід; `OLLAMA_API_KEY` або налаштована автентифікація провайдера для прямого пошуку через `https://ollama.com` або хостів, захищених автентифікацією | -| Вимога | Локальні/самостійно розміщені хости мають бути запущені та мати виконаний вхід через `ollama signin`; прямий розміщений пошук потребує `baseUrl: "https://ollama.com"` і справжній ключ API Ollama | +| Автентифікація | Без ключа для локальних хостів Ollama, у які виконано вхід; `OLLAMA_API_KEY` або налаштована автентифікація провайдера для прямого пошуку через `https://ollama.com` або хостів із захищеним доступом | +| Вимога | Локальні/self-hosted хости мають бути запущені та авторизовані через `ollama signin`; прямий розміщений пошук потребує `baseUrl: "https://ollama.com"` плюс справжній ключ API Ollama | Виберіть **Ollama Web Search** під час `openclaw onboard` або `openclaw configure --section web`, або задайте: @@ -364,12 +366,12 @@ OpenClaw підтримує **Вебпошук Ollama** як вбудовани ## Розширена конфігурація - + - **Виклик інструментів ненадійний у OpenAI-сумісному режимі.** Використовуйте цей режим лише якщо вам потрібен формат OpenAI для проксі та ви не залежите від рідної поведінки виклику інструментів. + **Виклики інструментів в OpenAI-сумісному режимі працюють ненадійно.** Використовуйте цей режим лише тоді, коли вам потрібен формат OpenAI для проксі й ви не залежите від нативної поведінки виклику інструментів. - Якщо вам потрібно використовувати OpenAI-сумісну кінцеву точку натомість (наприклад, за проксі, який підтримує лише формат OpenAI), явно задайте `api: "openai-completions"`: + Якщо вам все ж потрібно використовувати OpenAI-сумісну кінцеву точку (наприклад, за проксі, який підтримує лише формат OpenAI), явно задайте `api: "openai-completions"`: ```json5 { @@ -378,7 +380,7 @@ OpenClaw підтримує **Вебпошук Ollama** як вбудовани ollama: { baseUrl: "http://ollama-host:11434/v1", api: "openai-completions", - injectNumCtxForOpenAICompat: true, // default: true + injectNumCtxForOpenAICompat: true, // за замовчуванням: true apiKey: "ollama-local", models: [...] } @@ -387,9 +389,9 @@ OpenClaw підтримує **Вебпошук Ollama** як вбудовани } ``` - Цей режим може не підтримувати одночасно streaming і виклик інструментів. Можливо, вам доведеться вимкнути streaming за допомогою `params: { streaming: false }` у конфігурації моделі. + Цей режим може не підтримувати одночасно streaming і виклики інструментів. Можливо, вам доведеться вимкнути streaming за допомогою `params: { streaming: false }` у конфігурації моделі. - Коли `api: "openai-completions"` використовується з Ollama, OpenClaw за замовчуванням додає `options.num_ctx`, щоб Ollama мовчки не повертався до вікна контексту 4096. Якщо ваш проксі/upstream відхиляє невідомі поля `options`, вимкніть цю поведінку: + Коли з Ollama використовується `api: "openai-completions"`, OpenClaw за замовчуванням додає `options.num_ctx`, щоб Ollama мовчки не повертався до вікна контексту 4096. Якщо ваш проксі/upstream відхиляє невідомі поля `options`, вимкніть цю поведінку: ```json5 { @@ -409,12 +411,12 @@ OpenClaw підтримує **Вебпошук Ollama** як вбудовани - - Для автоматично виявлених моделей OpenClaw використовує вікно контексту, про яке повідомляє Ollama, коли воно доступне, зокрема більші значення `PARAMETER num_ctx` із користувацьких Modelfile. Інакше він повертається до стандартного вікна контексту Ollama, яке використовує OpenClaw. + + Для моделей з автоматичним виявленням OpenClaw використовує вікно контексту, про яке повідомляє Ollama, коли воно доступне, зокрема більші значення `PARAMETER num_ctx` з користувацьких Modelfile. Інакше використовується типове вікно контексту Ollama, яке застосовує OpenClaw. - Ви можете перевизначити `contextWindow` і `maxTokens` у явно заданій конфігурації провайдера. Щоб обмежити контекст виконання Ollama для кожного запиту без перебудови Modelfile, задайте `params.num_ctx`; OpenClaw надсилає його як `options.num_ctx` і для рідного Ollama, і для OpenAI-сумісного адаптера Ollama. Некоректні, нульові, від’ємні та нескінченні значення ігноруються, і використовується `contextWindow`. + Ви можете перевизначити `contextWindow` і `maxTokens` у явній конфігурації провайдера. Щоб обмежити контекст Ollama для кожного запиту без перебудови Modelfile, задайте `params.num_ctx`; OpenClaw надсилає його як `options.num_ctx` і для нативного Ollama, і для OpenAI-сумісного адаптера Ollama. Некоректні, нульові, від’ємні та нескінченні значення ігноруються, і використовується `contextWindow`. - Записи рідних моделей Ollama також приймають поширені параметри виконання Ollama у `params`, зокрема `temperature`, `top_p`, `top_k`, `min_p`, `num_predict`, `stop`, `repeat_penalty`, `num_batch`, `num_thread` і `use_mmap`. OpenClaw пересилає лише ключі запиту Ollama, тому параметри виконання OpenClaw, такі як `streaming`, не витікають до Ollama. Використовуйте `params.think` або `params.thinking`, щоб надсилати верхньорівневий параметр Ollama `think`; `false` вимикає thinking на рівні API для моделей thinking у стилі Qwen. + Нативні записи моделей Ollama також приймають поширені параметри часу виконання Ollama в `params`, зокрема `temperature`, `top_p`, `top_k`, `min_p`, `num_predict`, `stop`, `repeat_penalty`, `num_batch`, `num_thread` і `use_mmap`. OpenClaw передає далі лише ключі запиту Ollama, тому параметри часу виконання OpenClaw, як-от `streaming`, не витікають в Ollama. Використовуйте `params.think` або `params.thinking`, щоб надсилати верхньорівневий параметр Ollama `think`; `false` вимикає thinking на рівні API для thinking-моделей у стилі Qwen. ```json5 { @@ -440,12 +442,12 @@ OpenClaw підтримує **Вебпошук Ollama** як вбудовани } ``` - `agents.defaults.models["ollama/"].params.num_ctx` для окремої моделі теж працює. Якщо налаштовано обидва варіанти, явний запис моделі провайдера має пріоритет над типовим значенням агента. + Також працює `agents.defaults.models["ollama/"].params.num_ctx` для окремої моделі. Якщо налаштовано обидва варіанти, явний запис моделі провайдера має перевагу над значенням за замовчуванням агента. - - OpenClaw за замовчуванням вважає моделі з назвами на кшталт `deepseek-r1`, `reasoning` або `think` здатними до reasoning. + + OpenClaw за замовчуванням вважає моделі з назвами на кшталт `deepseek-r1`, `reasoning` або `think` такими, що підтримують reasoning. ```bash ollama pull deepseek-r1:32b @@ -455,22 +457,22 @@ OpenClaw підтримує **Вебпошук Ollama** як вбудовани - - Ollama є безкоштовним і працює локально, тому для всіх моделей вартість встановлюється в $0. Це стосується як автоматично виявлених, так і вручну визначених моделей. + + Ollama є безкоштовним і працює локально, тому вартість усіх моделей встановлюється в $0. Це стосується як моделей з автоматичним виявленням, так і моделей, визначених вручну. - - Вбудований Plugin Ollama реєструє провайдер embeddings пам’яті для - [пошуку в пам’яті](/uk/concepts/memory). Він використовує налаштовані базову URL-адресу - і ключ API Ollama, викликає поточну кінцеву точку `/api/embed` Ollama та - по можливості об’єднує кілька фрагментів пам’яті в один запит `input`. + + Вбудований Plugin Ollama реєструє провайдера embedding-пам’яті для + [пошуку в пам’яті](/uk/concepts/memory). Він використовує налаштовані базовий URL + та API-ключ Ollama, викликає поточну кінцеву точку Ollama `/api/embed` і + за можливості об’єднує кілька фрагментів пам’яті в один запит `input`. - | Властивість | Значення | + | Властивість | Значення | | ------------- | ------------------- | - | Типова модель | `nomic-embed-text` | - | Автозавантаження | Так — модель embedding автоматично завантажується, якщо її немає локально | + | Модель за замовчуванням | `nomic-embed-text` | + | Автозавантаження | Так — модель embedding автоматично завантажується, якщо її немає локально | - Щоб вибрати Ollama як провайдера embeddings для пошуку в пам’яті: + Щоб вибрати Ollama як провайдера embedding для пошуку в пам’яті: ```json5 { @@ -484,29 +486,29 @@ OpenClaw підтримує **Вебпошук Ollama** як вбудовани - - Інтеграція Ollama в OpenClaw за замовчуванням використовує **рідний API Ollama** (`/api/chat`), який повністю підтримує одночасно streaming і виклик інструментів. Жодної спеціальної конфігурації не потрібно. + + Інтеграція Ollama в OpenClaw за замовчуванням використовує **нативний API Ollama** (`/api/chat`), який повністю підтримує одночасно streaming і виклики інструментів. Жодної спеціальної конфігурації не потрібно. - Для рідних запитів `/api/chat` OpenClaw також напряму передає керування thinking до Ollama: `/think off` і `openclaw agent --thinking off` надсилають верхньорівневе `think: false`, а `/think low|medium|high` надсилають відповідний рядок зусилля верхнього рівня `think`. `/think max` зіставляється з найвищим рідним рівнем зусилля Ollama, `think: "high"`. + Для нативних запитів `/api/chat` OpenClaw також напряму передає керування thinking до Ollama: `/think off` і `openclaw agent --thinking off` надсилають верхньорівневий `think: false`, а `/think low|medium|high` надсилають відповідний верхньорівневий рядок з рівнем зусилля `think`. `/think max` зіставляється з найвищим нативним рівнем зусилля Ollama, `think: "high"`. - Якщо вам потрібно використовувати OpenAI-сумісну кінцеву точку, див. розділ "Legacy OpenAI-compatible mode" вище. У цьому режимі streaming і виклик інструментів можуть не працювати одночасно. + Якщо вам потрібно використовувати OpenAI-сумісну кінцеву точку, див. розділ "Застарілий OpenAI-сумісний режим" вище. У цьому режимі streaming і виклики інструментів можуть не працювати одночасно. -## Усунення неполадок +## Усунення несправностей - - Переконайтеся, що Ollama запущено, що ви встановили `OLLAMA_API_KEY` (або профіль автентифікації), і що ви **не** визначили явний запис `models.providers.ollama`: + + Переконайтеся, що Ollama запущено, що ви задали `OLLAMA_API_KEY` (або профіль автентифікації), і що ви **не** визначили явний запис `models.providers.ollama`: ```bash ollama serve ``` - Переконайтеся, що API доступний: + Перевірте, чи API доступний: ```bash curl http://localhost:11434/api/tags @@ -514,26 +516,26 @@ OpenClaw підтримує **Вебпошук Ollama** як вбудовани - - Якщо вашої моделі немає у списку, або завантажте її локально, або явно визначте її в `models.providers.ollama`. + + Якщо вашої моделі немає в списку, або завантажте її локально, або явно визначте її в `models.providers.ollama`. ```bash - ollama list # See what's installed + ollama list # Подивіться, що встановлено ollama pull gemma4 ollama pull gpt-oss:20b - ollama pull llama3.3 # Or another model + ollama pull llama3.3 # Або іншу модель ``` - + Перевірте, що Ollama працює на правильному порту: ```bash - # Check if Ollama is running + # Перевірте, чи Ollama запущено ps aux | grep ollama - # Or restart Ollama + # Або перезапустіть Ollama ollama serve ``` @@ -541,22 +543,22 @@ OpenClaw підтримує **Вебпошук Ollama** як вбудовани -Більше довідки: [Усунення неполадок](/uk/help/troubleshooting) і [Часті запитання](/uk/help/faq). +Додаткова допомога: [Усунення несправностей](/uk/help/troubleshooting) і [FAQ](/uk/help/faq). ## Пов’язане - - Огляд усіх провайдерів, посилань на моделі та поведінки перемикання при збоях. + + Огляд усіх провайдерів, посилань на моделі та поведінки failover. - + Як вибирати та налаштовувати моделі. Повні відомості про налаштування та поведінку вебпошуку на базі Ollama. - - Повний довідник з конфігурації. + + Повний довідник із конфігурації.