Get started

Хмарні воркери

Status: active

Хмарні робочі середовища дають змогу сеансу виконувати цикл агента на тимчасовій хмарній машині, тоді як усе, що стосується сеансу, залишається там, де й завжди: відображається на бічній панелі, транслюється наживо, а транскрипт належить Gateway. Gateway орендує машину, установлює на ній зафіксовану версію OpenClaw, синхронізує робочий простір сеансу й передає цикл обробки ходу обмеженому процесу openclaw worker. Виклики моделі проксіюються назад через Gateway, тому облікові дані провайдера ніколи не залишають вашу машину, а кешування запитів продовжує працювати, оскільки провайдер бачить один безперервний потік.

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

Що де виконується

Складова Розташування
Цикл агента й інструменти (exec, read, write, edit, …) Хмарна робоча машина
Виведення моделі й облікові дані провайдера Gateway (проксіюються за посиланням {provider, model})
Транскрипт (стійке сховище сеансу) Gateway
Пряма трансляція на бічну панель Розгалуження Gateway, яке отримує відтворюваний потік подій робочого середовища
Історія Git робочого простору Створюється на машині без облікових даних; Gateway приймає коміти й відповідає за push/PR

Машині не потрібні вхідні порти, окрім sshd: Gateway установлює вихідне з’єднання через SSH із фіксацією ключа, а зворотний тунель передає WebSocket робочого середовища назад. Вбудований провайдер Crabbox примусово використовує загальнодоступний маршрут SSH і вимикає кероване підключення до Tailscale. Вихідний доступ до інтернету визначається політикою провайдера; стандартний профіль AWS має доступ до інтернету, якщо його мережу або групу безпеки не обмежено.

Вимоги

  • Plugin провайдера робочого середовища. Вбудований Plugin crabbox керує CLI Crabbox, який розподіляє оренди між хмарними бекендами (AWS, Hetzner та іншими). Виконуваний файл crabbox має бути в PATH (або задайте settings.binary), а облікові дані провайдера мають бути вже налаштовані. Для допуску до AWS потрібен Crabbox 0.38.1 або новіший.
  • Для робочих середовищ Crabbox AWS фактичне значення aws.instanceProfile має бути порожнім. Перед виділенням ресурсів провайдер перевіряє crabbox config show --json, а потім вимагає, щоб crabbox inspect --json повідомляв providerMetadata.instanceProfileAttached: false із EC2 DescribeInstances. Оренди з роллю екземпляра або без авторитетних метаданих зупиняються й відхиляються.
  • Node.js на орендованій машині. У базових хмарних образах його зазвичай немає — установіть його командою setup профілю.
  • Сеанс із керованим робочим деревом, що належить сеансу (створіть його за допомогою worktree: true). Під час надсилання переміщується вміст цього робочого дерева; звичайні каталоги синхронізуються як дзеркало маніфесту.

Конфігурація

Додайте профіль у cloudWorkers.profiles у файлі openclaw.json:

json
{  "cloudWorkers": {    "profiles": {      "aws": {        "provider": "crabbox",        "install": "bundle",        "settings": {          "provider": "aws",          "class": "standard",          "ttl": "8h",          "idleTimeout": "45m",          "setup": "test -x /usr/bin/node || (curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs)"        }      }    }  }}

Поля профілю:

Ключ Значення
provider Ідентифікатор провайдера робочого середовища, зареєстрований Plugin (crabbox для вбудованого Plugin).
install bundle (за замовчуванням) постачає збірку запущеного Gateway; npm установлює точну випущену версію Gateway із зафіксованою цілісністю. npm вимагає, щоб Gateway запускався з пакетного випуску.
settings JSON, яким керує провайдер. Для crabbox: provider (бекенд), class (клас машини), ttl, idleTimeout (тривалості Go), необов’язковий setup та абсолютний шлях binary. OpenClaw примусово використовує загальнодоступний SSH і вимикає керований Tailscale для цих оренд.
lifetime Необов’язкова збережена політика (idleTimeoutMinutes, maxLifetimeMinutes).

Команда налаштування

settings.setup виконується на орендованій машині після готовності SSH і до встановлення OpenClaw. Вона виконується під час кожної спроби підготовки (зокрема повторних спроб після перерваного надсилання), тому має бути ідемпотентною — захищайте встановлення перевіркою command -v/test -x, як у прикладі. Якщо налаштування завершується невдало, провайдер зупиняє оренду, а надсилання безпечно завершується помилкою; частково налаштована машина не залишається запущеною.

Канали встановлення

  • bundle пакує dist запущеного Gateway, скорочений package.json і всі пакети робочого простору, на які посилається збірка; усе це захищається хешем вмісту. Машина перевіряє незмінений пакет за цим хешем, а потім установлює виробничі залежності npm (сценарії вимкнено). Так запускається збірка для розробки в робочому середовищі.
  • npm перевіряє наявність випуску в загальнодоступному реєстрі, фіксує його цілісність SHA-512 та встановлює openclaw@<version>, що точно відповідає Gateway.

Надсилання сеансу

У Control UI відкрийте New Session, виберіть агента, налаштованим середовищем виконання якого є OpenClaw, у меню Where виберіть налаштовану ціль Cloud · profile і запустіть завдання. Вибір хмари автоматично вмикає потрібне кероване робоче дерево; Gateway створює сеанс, завершує надсилання й лише після цього надсилає перший хід. Значок сервера на бічній панелі сеансу показує стійкий стан розміщення. Хмарні цілі не пропонуються для каталогів сеансів зовнішнього CLI.

Еквівалентна послідовність RPC:

Створіть сеанс із керованим робочим деревом, а потім надішліть його (RPC вимагає operator.admin й існує лише за наявності налаштованих профілів):

Хмарні робочі середовища запускають середовище виконання агента OpenClaw. Виберіть openai/* або іншу модель, що зіставляється з цим середовищем виконання; сеанси, налаштовані для зовнішнього середовища виконання CLI, як-от claude-cli, не можна надіслати.

bash
openclaw gateway call sessions.create \  --params '{"key":"agent:main:big-refactor","worktree":true,"cwd":"/path/to/repo","worktreeName":"big-refactor"}' openclaw gateway call sessions.dispatch \  --timeout 1500000 \  --params '{"key":"agent:main:big-refactor","profileId":"aws"}'

sessions.dispatch припиняє локальний прийом ходів, очікує завершення активної роботи, готує оренду, виконує налаштування, завантажує OpenClaw, синхронізує робочий простір і повертає керування, коли розміщення переходить до стану володіння робочим середовищем active. Закладайте кілька хвилин на перше надсилання; оренди й установлення кешуються, якщо провайдер це підтримує. Після цього взаємодійте із сеансом як зазвичай — ходи автоматично спрямовуються до робочого середовища.

Після завершення ходів робочого середовища придатні файли робочого простору обмеженого розміру узгоджуються назад із керованим робочим деревом сеансу до звільнення заявки на хід. Термінальна подія робочого середовища створює стійкий бар’єр очікуваного результату до підтвердження, тому під час відновлення після перезапуску Gateway віддалений робочий простір завантажується назад до того, як очищення застарілого ходу зможе знищити його власника. Узгодження автентифікує маніфест робочого середовища й зупиняється в разі локального розходження замість перезапису будь-якої зі сторін. Перед зміною файлів Gateway зберігає обмежений журнал відкочування у своїй базі даних стану SQLite; повторна спроба відновлює цей журнал після переривання процесу Gateway. Результати робочого простору використовують файлову семантику Git: звичайні файли, біти виконання, символічні посилання, додавання, зміни й видалення зберігаються, а порожні каталоги та інші режими каталогів — ні. Віддалені об’єкти комітів не зберігаються; отримані зміни файлів залишаються в керованому робочому дереві для звичайної перевірки й коміту.

Коли роботу завершено й жоден хід не виконується, відкрийте меню сеансу та виберіть Stop cloud worker…. Gateway виконує остаточне узгодження робочого простору перед знищенням середовища. Розміщення, що вже перебуває в draining або reconciling, завершує демонтаж; перш ніж видаляти сеанс, зачекайте, доки його значок не зміниться на reclaimed.

Для несправного або некерованого підключеного робочого середовища оператор може як крайній захід викликати environments.destroy із { "force": true }. Примусовий демонтаж стійко позначає розміщення як невдале та відкидає всі неузгоджені віддалені результати перед знищенням середовища.

Еквівалентний адміністративний RPC:

bash
openclaw gateway call sessions.reclaim \  --timeout 600000 \  --params '{"key":"agent:main:big-refactor"}'

Розміщення проходить через стійкий скінченний автомат (local → requested → provisioning → syncing → starting → active), тому після перезапуску Gateway посеред надсилання виконується узгодження, а не залишаються невивільнені машини. Невдалий хід моделі залишає активне розміщення доступним для повторної спроби. Якщо вхідне узгодження робочого простору завершується невдало, робоче середовище також залишається активним, щоб оператор міг усунути локальний конфлікт і повторити спробу без втрати віддаленого результату; натомість помилки життєвого циклу переводять розміщення в стан помилки або повернення й зберігають завершальну частину діагностичних даних.

Модель безпеки

  • Закритий вхідний доступ до робочого середовища. Робочі середовища взаємодіють через спеціальний протокол у тунельованому сокеті із закритим списком дозволених методів — робоче середовище не може викликати операторські RPC.
  • Створені облікові дані, хешовані під час зберігання. Кожне надсилання створює облікові дані робочого середовища; Gateway зберігає лише їхній хеш. Ротація облікових даних і відсікання за епохою власника гарантують не більше одного активного власника на сеанс — застаріле робоче середовище, що повторно підключається, відсікається й ніколи не об’єднується.
  • Фіксація ключа хоста. Провайдер має надати ключ SSH-хоста машини під час підготовки; початкове завантаження підключається зі строгою фіксацією ключа й безпечно завершується помилкою за його відсутності.
  • На машині немає постійних облікових даних моделі, платформи розробки чи хмари. Автентифікація моделі залишається в Gateway (виведення передається за посиланням {provider, model}), Git-коміти робочого простору створюються без облікових даних платформи розробки, а метадані оренди Crabbox AWS авторитетно перевіряються на наявність ролі екземпляра до налаштування. Команди налаштування також не повинні містити облікових даних.
  • Вихідний трафік під керуванням провайдера. Зворотний тунель усуває потребу OpenClaw у прямому доступі до моделі, але OpenClaw не змінює правила брандмауера провайдера. Обмежуйте вихідний трафік у провайдері робочого середовища, коли цього потребує завдання.
  • Стійкі транскрипти з рівно одноразовим записом. Робоче середовище фіксує пакети транскрипту через протокол порівняння й заміни відносно кінцевого вузла сеансу; застаріла база аварійно зупиняє виконання замість дублювання або перебазування оплачуваного виводу.

Усунення несправностей

  • sessions.dispatch — невідомий метод — не налаштовано жодного cloudWorkers.profiles або викликач не має operator.admin.
  • «Хмарні запуски воркера потребують середовища виконання OpenClaw» — виберіть модель, налаштованим середовищем виконання якої є OpenClaw. Зовнішні середовища виконання CLI, як-от claude-cli, не підтримують інференс воркера.
  • «Для початкового завантаження воркера потрібен Node.js на орендованому хості» — додайте встановлення Node до settings.setup (див. вище).
  • Атестація ролі екземпляра AWS завершується помилкою — очистьте aws.instanceProfileCRABBOX_AWS_INSTANCE_PROFILE, якщо задано). Установіть Crabbox 0.38.1 або новішої версії; старіші двійкові файли не надають авторитетного контракту providerMetadata.instanceProfileAttached, потрібного для допуску AWS.
  • Диспетчеризація завершується помилкою постачальника — запис розміщення та environments.list зберігають останню помилку, зокрема кінцеву частину stderr налаштування/початкового завантаження. У разі помилки бокси знищуються, тому ця кінцева частина є основним джерелом для розслідування.
  • Час очікування клієнта спливає під час диспетчеризаціїopenclaw gateway call типово має час очікування 10s; задавайте --timeout із достатнім запасом (диспетчеризація в будь-якому разі продовжує виконуватися на сервері, а повторна спроба під час підготовки відхиляється з session cannot dispatch from placement provisioning).
  • Обслуговування орендcrabbox list --provider <backend> показує активні оренди; crabbox stop --provider <backend> --id <lease> вивільняє одну з них вручну. Неактивні оренди завершуються після закінчення визначеного в профілі idleTimeout.

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

Was this useful?
On this page

On this page