Gateway
Усунення несправностей
Це докладний посібник з експлуатації. Спочатку перейдіть до /help/troubleshooting, щоб виконати швидку первинну діагностику.
Послідовність команд
Виконуйте в такому порядку:
openclaw statusopenclaw gateway statusopenclaw logs --followopenclaw doctoropenclaw channels status --probeОзнаки справної роботи:
openclaw gateway statusпоказуєRuntime: running,Connectivity probe: okі рядокCapability: ....openclaw doctorне повідомляє про проблеми конфігурації чи служби, що блокують роботу.openclaw channels status --probeпоказує актуальний стан транспорту для кожного облікового запису, а там, де це підтримується, —worksабоaudit ok.
Після оновлення
Використовуйте, якщо оновлення завершилося, але Gateway не працює, канали порожні або виклики моделей завершуються помилками 401.
openclaw status --allopenclaw update status --jsonopenclaw gateway status --deepopenclaw doctor --fixopenclaw gateway restartПеревірте:
Update restartуopenclaw status/openclaw status --all. Для незавершених або невдалих передавань указано наступну команду, яку потрібно виконати.plugin load failed: dependency tree corrupted; run openclaw doctor --fixу розділі каналів: конфігурація каналу досі існує, але реєстрація плагіна завершилася помилкою до завантаження каналу.- Помилки 401 від провайдера після повторної автентифікації:
openclaw doctor --fixперевіряє застарілі OAuth-копії автентифікаційних даних окремих агентів і видаляє старі копії, щоб усі агенти використовували поточний спільний профіль.
Розділені інсталяції та захист від новішої конфігурації
Використовуйте, якщо служба Gateway несподівано зупиняється після оновлення або журнали показують, що один бінарний файл openclaw старіший за версію, яка востаннє записала openclaw.json.
OpenClaw позначає записи конфігурації за допомогою meta.lastTouchedVersion. Команди лише для читання можуть перевіряти конфігурацію, записану новішою версією OpenClaw, але старіший бінарний файл відмовляється виконувати зміни процесів і служб. Блокуються такі дії: запуск, зупинення, перезапуск і видалення служби Gateway, примусове перевстановлення служби, запуск Gateway у режимі служби та очищення порту gateway --force.
which openclawopenclaw --versionopenclaw gateway status --deepopenclaw config get meta.lastTouchedVersionВиправте PATH
Виправте PATH, щоб openclaw указував на новішу інсталяцію, а потім повторіть дію.
Перевстановіть службу Gateway
Перевстановіть потрібну службу Gateway із новішої інсталяції:
openclaw gateway install --forceopenclaw gateway restartВидаліть застарілі обгортки
Видаліть застарілі записи системного пакета або старої обгортки, які досі вказують на старий бінарний файл openclaw.
Невідповідність протоколу після повернення до попередньої версії
Використовуйте, якщо після зниження версії або повернення до попередньої версії в журналах постійно з’являється protocol mismatch. Працює старіший Gateway, але новіший локальний клієнтський процес досі повторно підключається з діапазоном протоколу, який старіший Gateway не підтримує.
openclaw --versionwhich -a openclawopenclaw gateway status --deepopenclaw doctor --deepopenclaw logs --followПеревірте:
protocol mismatch ... client=... v<version> min=<n> max=<n> expected=<n>у журналах Gateway.Established clients:уopenclaw gateway status --deepабоGateway clientsуopenclaw doctor --deep: активні TCP-клієнти, підключені до порту Gateway, із PID та командними рядками, якщо це дозволяє ОС.- Клієнтський процес, командний рядок якого вказує на новішу інсталяцію або обгортку OpenClaw, від якої було виконано повернення.
Виправлення:
- Зупиніть або перезапустіть застарілий клієнтський процес OpenClaw, показаний у
gateway status --deep. - Перезапустіть застосунки або обгортки, у які вбудовано OpenClaw: локальні панелі керування, редактори, допоміжні процеси серверів застосунків або довготривалі оболонки
openclaw logs --follow. - Повторно виконайте
openclaw gateway status --deepабоopenclaw doctor --deepі переконайтеся, що PID застарілого клієнта зник.
Не змушуйте старіший Gateway приймати новіший несумісний протокол. Підвищення версії протоколу захищає контракт обміну даними; відновлення після повернення версії потребує очищення процесів і версій.
Символьне посилання Skills пропущено через вихід за межі шляху
Використовуйте, якщо журнали містять:
Пропуск шляху Skills, що виходить за межі налаштованого кореня: ... reason=symlink-escapeКожен корінь Skills є межею ізоляції. Символьне посилання в ~/.agents/skills, <workspace>/.agents/skills, <workspace>/skills або ~/.openclaw/skills пропускається, якщо його фактична ціль розташована за межами цього кореня, якщо тільки ціль не позначено як довірену явно.
Перевірте посилання:
ls -l ~/.agents/skills/<name>realpath ~/.agents/skills/<name>openclaw config get skills.loadЯкщо ціль вибрано навмисно, налаштуйте як безпосередній корінь Skills, так і дозволену ціль символьного посилання:
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}Потім почніть новий сеанс або зачекайте, поки засіб спостереження за Skills оновить дані. Перезапустіть Gateway, якщо запущений процес передує зміні конфігурації.
Не використовуйте широкі цілі, як-от ~, / або всю синхронізовану папку проєкту. Обмежте allowSymlinkTargets фактичним коренем Skills, який містить довірені каталоги SKILL.md.
Якщо застосування Skill Workshop також має записувати дані через ці довірені символьні посилання на шляхи Skills робочого простору, увімкніть skills.workshop.allowSymlinkTargetWrites. Залишайте цей параметр вимкненим для спільних коренів Skills, доступних лише для читання.
Пов’язані матеріали:
Для довгого контексту Anthropic 429 потрібне додаткове використання
Використовуйте, якщо журнали або помилки містять: HTTP 429: rate_limit_error: Extra usage is required for long context requests.
openclaw logs --followopenclaw models statusopenclaw config get agents.defaults.modelsПеревірте:
- Вибрана модель Anthropic є моделлю Claude 4.x із загальнодоступною підтримкою контексту 1M (Opus 4.6/4.7/4.8, Sonnet 4.6) або конфігурація моделі досі містить застарілий параметр
params.context1m: true. - Поточні облікові дані Anthropic не мають права на використання довгого контексту.
- Запити завершуються помилкою лише під час довгих сеансів або запусків моделей, яким потрібен контекст 1M.
Варіанти виправлення:
Використовуйте стандартне контекстне вікно
Перейдіть на модель зі стандартним контекстним вікном або видаліть застарілий параметр context1m зі старої
конфігурації моделі, яка не має загальнодоступної підтримки контексту 1M.
Використовуйте придатні облікові дані
Використовуйте облікові дані Anthropic, придатні для запитів із довгим контекстом, або перейдіть на ключ API Anthropic.
Налаштуйте резервні моделі
Налаштуйте резервні моделі, щоб виконання продовжувалося, коли запити Anthropic із довгим контекстом відхиляються.
Пов’язані матеріали:
Відповіді 403 із блокуванням від вищого рівня
Використовуйте, якщо зовнішній провайдер LLM повертає загальну помилку 403, наприклад Your request was blocked.
Не вважайте, що це завжди проблема конфігурації OpenClaw. Відповідь може надходити від зовнішнього рівня безпеки, як-от CDN, WAF, правило керування ботами або зворотний проксі перед кінцевою точкою, сумісною з OpenAI.
openclaw statusopenclaw gateway statusopenclaw logs --followПеревірте:
- Кілька моделей одного провайдера завершуються однаковою помилкою.
- Замість звичайної помилки API провайдера повертається HTML або загальний текст системи безпеки.
- Події безпеки на боці провайдера за той самий час запиту.
- Мінімальний безпосередній пробний запит
curlуспішний, тоді як звичайні запити у форматі SDK завершуються помилкою.
Якщо докази вказують на блокування WAF/CDN, спочатку виправте фільтрацію на боці провайдера. Надавайте перевагу вузько обмеженому правилу дозволу або пропуску для шляху API, який використовує OpenClaw, і не вимикайте захист для всього сайту.
Пов’язані матеріали:
Локальний сервер, сумісний з OpenAI, проходить прямі перевірки, але запуски агентів завершуються помилкою
Використовуйте, якщо:
curl ... /v1/modelsпрацює.- Малі прямі виклики
/v1/chat/completionsпрацюють. - Запуски моделей OpenClaw завершуються помилкою лише під час звичайних кроків агента.
curl http://127.0.0.1:1234/v1/modelscurl http://127.0.0.1:1234/v1/chat/completions \ -H 'content-type: application/json' \ -d '{"model":"<id>","messages":[{"role":"user","content":"hi"}],"stream":false}'openclaw infer model run --model <provider/model> --prompt "hi" --jsonopenclaw logs --followПеревірте:
- Малі прямі виклики успішні, але запуски OpenClaw завершуються помилкою лише для більших запитів.
- Помилки
model_not_foundабо 404, хоча прямий запит/v1/chat/completionsпрацює з тим самим ідентифікатором моделі без префікса. - Помилки сервера про те, що
messages[].contentочікує рядок. - Періодичні попередження
incomplete turn detected ... stopReason=stop payloads=0з локальним сервером, сумісним з OpenAI. - Збої сервера, які виникають лише за більшої кількості токенів запиту або з повними запитами середовища виконання агента.
Поширені ознаки
model_not_foundз локальним сервером у стилі MLX/vLLM: переконайтеся, щоbaseUrlмістить/v1,apiмає значення"openai-completions"для серверів/v1/chat/completions, аmodels.providers.<provider>.models[].idє локальним ідентифікатором провайдера без префікса. Вибирайте його з префіксом провайдера один раз, наприкладmlx/mlx-community/Qwen3-30B-A3B-6bit; запис у каталозі залишайте якmlx-community/Qwen3-30B-A3B-6bit.messages[...].content: invalid type: sequence, expected a string: сервер відхиляє структуровані частини вмісту Chat Completions. Виправлення: установітьmodels.providers.<provider>.models[].compat.requiresStringContent: true.validation.keysабо дозволені ключі повідомлень, як-от["role","content"]: сервер відхиляє метадані повторного відтворення у стилі OpenAI в повідомленнях Chat Completions. Виправлення: установітьmodels.providers.<provider>.models[].compat.strictMessageKeys: true.incomplete turn detected ... stopReason=stop payloads=0: сервер виконав запит Chat Completions, але не повернув видимого користувачеві тексту асистента для цього кроку. OpenClaw один раз повторює безпечні для повторного відтворення порожні кроки, сумісні з OpenAI; постійні помилки зазвичай означають, що сервер повертає порожній або нетекстовий вміст чи приховує текст остаточної відповіді.- Малі прямі запити успішні, але запуски агентів OpenClaw завершуються збоями сервера або моделі (наприклад, Gemma у деяких збірках
inferrs): транспорт OpenClaw, імовірно, уже налаштовано правильно; сервер не може обробити більшу структуру запиту середовища виконання агента. - Після вимкнення інструментів кількість помилок зменшується, але вони не зникають: схеми інструментів створювали частину навантаження, але решта проблеми все одно пов’язана з ресурсами зовнішньої моделі чи сервера або з помилкою сервера.
Варіанти виправлення
- Установіть
compat.requiresStringContent: trueдля серверів Chat Completions, які підтримують лише рядки. - Установіть
compat.strictMessageKeys: trueдля строгих серверів Chat Completions, які приймають у кожному повідомленні лишеroleіcontent. - Установіть
compat.supportsTools: falseдля моделей або серверів, які не можуть надійно обробляти набір схем інструментів OpenClaw. - За можливості зменште навантаження запиту: скоротіть початкове завантаження робочого простору, історію сеансу, використовуйте легшу локальну модель або сервер із кращою підтримкою довгого контексту.
- Якщо малі прямі запити залишаються успішними, але кроки агента OpenClaw досі спричиняють збій сервера, розглядайте це як обмеження зовнішнього сервера або моделі та надайте його розробникам приклад відтворення з прийнятою структурою корисного навантаження.
Пов’язані матеріали:
Немає відповідей
Якщо канали працюють, але відповіді немає, перевірте маршрутизацію та політики, перш ніж щось перепідключати.
openclaw statusopenclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw config get channelsopenclaw logs --followЗверніть увагу на:
- Очікування сполучення для відправників особистих повідомлень.
- Обмеження згадування в групі (
requireMention,mentionPatterns). - Невідповідності списків дозволених каналів і груп.
Поширені ознаки:
drop guild message (mention required→ групове повідомлення ігнорується до згадування.pairing request→ відправнику потрібне схвалення.blocked/allowlist→ відправника або канал відфільтровано політикою.
Пов’язані матеріали:
Підключення інтерфейсу керування панеллю
Якщо панель або інтерфейс керування не підключається, перевірте URL-адресу, режим автентифікації та припущення щодо захищеного контексту.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --jsonЗверніть увагу на:
- Правильні URL-адреси перевірки та панелі.
- Невідповідність режиму автентифікації або токена між клієнтом і Gateway.
- Використання HTTP там, де потрібна ідентифікація пристрою.
Якщо після оновлення локальний браузер не може підключитися до 127.0.0.1:18789, спочатку відновіть локальну службу Gateway і переконайтеся, що вона обслуговує панель:
openclaw gateway restartlsof -i :18789curl http://127.0.0.1:18789Якщо curl повертає HTML OpenClaw, Gateway працює, а проблема, найімовірніше, пов’язана з кешем браузера, старим глибоким посиланням або застарілим станом вкладки. Відкрийте http://127.0.0.1:18789 безпосередньо й перейдіть із панелі. Якщо після перезапуску служба не залишається запущеною, виконайте openclaw gateway start і повторно перевірте openclaw gateway status.
Ознаки підключення та автентифікації
device identity required→ незахищений контекст або відсутня автентифікація пристрою.origin not allowed→ браузернийOriginвідсутній уgateway.controlUi.allowedOrigins(або підключення виконується з браузерного джерела, що не є loopback, без явного списку дозволених).device nonce required/device nonce mismatch→ клієнт не завершує процес автентифікації пристрою на основі виклику (connect.challenge+device.nonce).device signature invalid/device signature expired→ клієнт підписав неправильні дані (або використав застарілу позначку часу) для поточного рукостискання.AUTH_TOKEN_MISMATCHзcanRetryWithDeviceToken=true→ клієнт може виконати одну довірену повторну спробу з кешованим токеном пристрою.- Ця повторна спроба з кешованим токеном повторно використовує кешований набір областей доступу, збережений із токеном сполученого пристрою. Натомість виклики з явним
deviceToken/ явнимscopesзберігають запитаний набір областей доступу. AUTH_SCOPE_MISMATCH→ токен пристрою розпізнано, але його схвалені області доступу не охоплюють цей запит на підключення; повторно сполучіть пристрій або схваліть запитаний контракт областей доступу замість ротації спільного токена Gateway.- Поза цим шляхом повторної спроби пріоритет автентифікації підключення такий: спочатку явно заданий спільний токен або пароль, потім явний
deviceToken, далі збережений токен пристрою, а потім початковий токен. - В асинхронному шляху інтерфейсу керування Tailscale Serve невдалі спроби для того самого
{scope, ip}серіалізуються до того, як обмежувач зареєструє помилку. Тому дві одночасні невдалі повторні спроби від одного клієнта можуть призвести доretry laterпід час другої спроби замість двох звичайних повідомлень про невідповідність. too many failed authentication attempts (retry later)від loopback-клієнта браузерного джерела → повторні помилки від того самого нормалізованогоOriginтимчасово блокуються; інше джерело localhost використовує окрему групу.- Повторний
unauthorizedпісля цієї повторної спроби → розбіжність спільного токена й токена пристрою; оновіть конфігурацію токена та за потреби повторно схваліть або замініть токен пристрою. gateway connect failed:→ неправильний цільовий хост, порт або URL-адреса.
Коротка таблиця кодів деталей автентифікації
Використовуйте error.details.code з невдалої відповіді connect, щоб вибрати наступну дію:
| Код деталі | Значення | Рекомендована дія |
|---|---|---|
AUTH_TOKEN_MISSING |
Клієнт не надіслав обов’язковий спільний токен. | Вставте або задайте токен у клієнті та повторіть спробу. Для шляхів панелі: openclaw config get gateway.auth.token, а потім вставте його в налаштування інтерфейсу керування. |
AUTH_TOKEN_MISMATCH |
Спільний токен не збігається з токеном автентифікації Gateway. | Якщо canRetryWithDeviceToken=true, дозвольте одну довірену повторну спробу. Повторні спроби з кешованим токеном повторно використовують збережені схвалені області доступу; виклики з явним deviceToken / scopes зберігають запитані області доступу. Якщо помилка не зникає, виконайте контрольний список відновлення після розбіжності токенів. |
AUTH_DEVICE_TOKEN_MISMATCH |
Кешований токен окремого пристрою застарів або був відкликаний. | Замініть або повторно схваліть токен пристрою за допомогою CLI пристроїв, а потім підключіться знову. |
AUTH_SCOPE_MISMATCH |
Токен пристрою дійсний, але його схвалена роль або області доступу не охоплюють цей запит на підключення. | Повторно сполучіть пристрій або схваліть запитаний контракт областей доступу; не розглядайте це як розбіжність спільного токена. |
PAIRING_REQUIRED |
Ідентифікація пристрою потребує схвалення. Перевірте error.details.reason на наявність not-paired, scope-upgrade, role-upgrade або metadata-upgrade і використовуйте requestId / remediationHint, коли вони наявні. |
Схваліть запит, що очікує: openclaw devices list, а потім openclaw devices approve <requestId>. Для підвищення областей доступу або ролі використовується той самий процес після перевірки запитаного доступу. |
Перевірка міграції автентифікації пристрою v2:
openclaw --versionopenclaw doctoropenclaw gateway statusЯкщо журнали містять помилки одноразового значення або підпису, оновіть клієнт, що підключається, і перевірте його:
Дочекайтеся connect.challenge
Клієнт очікує на виданий Gateway connect.challenge.
Підпишіть дані
Клієнт підписує дані, прив’язані до виклику.
Надішліть одноразове значення пристрою
Клієнт надсилає connect.params.device.nonce із тим самим одноразовим значенням виклику.
Якщо openclaw devices rotate / revoke / remove неочікувано відхилено:
- Сеанси токенів сполучених пристроїв можуть керувати лише власним пристроєм, якщо виклик також не має
operator.admin. openclaw devices rotate --scope ...може запитувати лише ті операторські області доступу, які вже має сеанс виклику.
Пов’язані матеріали:
- Конфігурація (режими автентифікації Gateway)
- Інтерфейс керування
- Пристрої
- Віддалений доступ
- Автентифікація довіреного проксі
Служба Gateway не працює
Використовуйте цей розділ, якщо службу встановлено, але процес не залишається запущеним.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --deep # також перевірити служби системного рівняЗверніть увагу на:
Runtime: stoppedз підказками щодо завершення.- Невідповідність конфігурації служби (
Config (cli)іConfig (service)). - Конфлікти порту або прослуховувача.
- Додаткові інсталяції launchd, systemd або schtasks, коли використовується
--deep. - Підказки щодо очищення
Other gateway-like services detected (best effort).
Поширені ознаки
Gateway start blocked: set gateway.mode=localабоexisting config is missing gateway.mode→ локальний режим Gateway не ввімкнено або файл конфігурації було перезаписано й у ньому втраченоgateway.mode. Виправлення: задайтеgateway.mode="local"у конфігурації або повторно виконайтеopenclaw onboard --mode local/openclaw setup, щоб відновити очікувану конфігурацію локального режиму. Якщо OpenClaw працює через Podman, стандартний шлях до конфігурації —~/.openclaw/openclaw.json.refusing to bind gateway ... without auth→ прив’язка не до loopback без дійсного шляху автентифікації Gateway (токен або пароль чи довірений проксі, якщо його налаштовано).another gateway instance is already listening/EADDRINUSE→ конфлікт порту.Other gateway-like services detected (best effort)→ існують застарілі або паралельні модулі launchd, systemd чи schtasks. У більшості конфігурацій слід використовувати один Gateway на комп’ютер; якщо потрібно більше одного, ізолюйте порти, конфігурацію, стан і робочий простір. Див. /gateway#multiple-gateways-same-host.System-level OpenClaw gateway service detectedвід doctor → системний модуль systemd існує, а служба рівня користувача відсутня. Видаліть або вимкніть дублікат, перш ніж дозволяти doctor установити службу користувача, або задайтеOPENCLAW_SERVICE_REPAIR_POLICY=external, якщо системний модуль є запланованим супервізором.Gateway service port does not match current gateway config→ установлений супервізор досі закріплює старий--port. Виконайтеopenclaw doctor --fixабоopenclaw gateway install --force, а потім перезапустіть службу Gateway.
Пов’язані матеріали:
Gateway у macOS непомітно припиняє відповідати, а потім відновлює роботу після взаємодії з панеллю
Використовуйте, коли канали (Telegram, WhatsApp тощо) на хості macOS замовкають на період від кількох хвилин до кількох годин, а Gateway, схоже, відновлює роботу щойно ви відкриваєте Control UI, підключаєтеся через SSH або іншим чином взаємодієте з хостом. Зазвичай у openclaw status немає очевидних симптомів, оскільки на момент перевірки Gateway уже знову працює.
ls ~/.openclaw/logs/stability/ | tail -5openclaw gateway stability --bundle latestpmset -g log | grep -iE "sleep|wake|maintenance" | tail -50launchctl print gui/$UID/ai.openclaw.gateway | grep -E "state|last exit|runs"Шукайте:
- Один або кілька пакетів
*-uncaught_exception.jsonу~/.openclaw/logs/stability/, деerror.codeмає код тимчасової мережевої помилки, як-отENETDOWN,ENETUNREACH,EHOSTUNREACHабоECONNREFUSED. - Рядки
pmset -g log, як-отEntering Sleep state due to 'Maintenance Sleep'абоen0 driver is slow (msg: WillChangeState to 0), що збігаються в часі з аварійними завершеннями. Power Nap / Maintenance Sleep ненадовго переводить драйвер Wi-Fi у стан 0; будь-який вихіднийconnect(), що припадає на цей проміжок, може завершитися помилкоюENETDOWNнавіть на хості, який в інших випадках має повноцінне мережеве з’єднання. - Вивід
launchctl print, що показуєstate = not runningіз кількома нещодавнімиrunsі кодом виходу, особливо якщо проміжок між аварійним завершенням і наступним запуском становить близько години, а не кілька секунд. Після серії аварійних завершень macOS launchd застосовує недокументований механізм захисту від повторних запусків, через який може перестати виконуватиKeepAlive=true, доки зовнішній тригер, як-от інтерактивний вхід, підключення панелі керування абоlaunchctl kickstart, не активує його знову.
Типові ознаки:
- Пакет стабільності, у якому
error.codeмає значенняENETDOWNабо споріднений код, а стек викликів указує на NodenetlookupAndConnect/Socket.connect. OpenClaw2026.5.26і новіші версії класифікують їх як безпечні тимчасові мережеві помилки, тому вони більше не передаються до верхньорівневого обробника неперехоплених помилок; якщо використовується старіша версія, спочатку оновіть її. - Тривалі періоди без активності, які завершуються одразу після підключення до Control UI або входу на хост через SSH: саме видима для користувача активність повторно активує механізм повторного запуску launchd, а не будь-яка дія панелі керування над Gateway.
- Лічильник
runsзбільшується протягом дня без відповідного рядкаreceived SIG*; shutting downу~/Library/Logs/openclaw/gateway.log: під час штатного завершення роботи сигнал записується в журнал, а під час тимчасових аварійних завершень — ні.
Що робити:
-
Оновіть Gateway, якщо використовується версія, старіша за
2026.5.26. Після оновлення майбутні помилкиENETDOWNзаписуватимуться як попередження замість завершення процесу. -
Зменште активність режиму обслуговування під час сну на Mac mini / настільних хостах, призначених для постійної роботи як сервери:
bash sudo pmset -a sleep 0 disksleep 0 standby 0 powernap 0Це суттєво зменшує, але не усуває повністю базові перебої в роботі драйвера. Система все одно може переходити в деякі режими обслуговування під час сну для підтримки TCP keepalive та mDNS незалежно від цих прапорців.
-
Додайте засіб контролю працездатності, щоб у майбутньому швидко виявити серію аварійних завершень, після якої launchd припинить повторні запуски:
bash # Приклад перевірки працездатності з урахуванням launchd, придатної для 5-хвилинного cron або LaunchAgentstate=$(launchctl print gui/$UID/ai.openclaw.gateway 2>/dev/null | awk -F'= ' '/state =/ {print $2; exit}')if [ "$state" != "running" ]; then launchctl kickstart -k gui/$UID/ai.openclaw.gatewayfiМета полягає в тому, щоб ззовні повторно активувати механізм повторного запуску; лише
KeepAlive=trueнедостатньо в macOS після серії аварійних завершень.
Пов’язані матеріали:
Цикл супервізора macOS launchd із дубльованими LaunchAgent для Gateway/Node
Використовуйте, коли інсталяція macOS постійно перезапускається кожні кілька секунд, перевірки працездатності openclaw
почергово показують доступність і недоступність, а надсилання через канали зупиняється,
хоча служба, схоже, працює.
Це спостерігалося в старіших інсталяціях, де одночасно були активні LaunchAgent ai.openclaw.gateway і
ai.openclaw.node, кожен із яких додавав
OPENCLAW_LAUNCHD_LABEL. У такому стані OpenClaw може виявити супервізію launchd,
спробувати передати керування перезапуском назад launchd і потрапити у швидкий цикл
EADDRINUSE/повторного запуску замість підтримання одного стабільного процесу Gateway.
for i in 1 2 3 4; do ps aux | grep 'openclaw.*index.js' | grep -v grep | awk '{print $2}' sleep 10done openclaw gateway status --deepopenclaw node statuslaunchctl print gui/$UID/ai.openclaw.gateway | grep -E 'state|last exit|runs'tail -n 80 ~/Library/Logs/openclaw/gateway.logШукайте:
- Кілька PID Gateway у 30-секундній вибірці замість одного стабільного процесу.
EADDRINUSE,another gateway instance is already listeningабо повторювані рядки перезапуску/передавання керування вgateway.log.- Одночасно завантажені
~/Library/LaunchAgents/ai.openclaw.gateway.plistі~/Library/LaunchAgents/ai.openclaw.node.plistна хості, де має працювати лише одна керована служба Gateway.
Що робити:
-
Якщо на цьому хості має працювати лише служба Gateway, видаліть керовану службу Node за допомогою OpenClaw. Пропустіть цей крок, якщо служба Node активно використовується для віддалених функцій Node; її видалення зупинить ці функції на цьому хості:
bash openclaw node uninstall -
Установіть постійну обгортку Gateway, яка очищає успадковані маркери launchd перед запуском OpenClaw. Використовуйте підтримуваний параметр
--wrapper; не редагуйте згенерований файл у~/.openclaw/service-env/, оскільки повторне встановлення служби, оновлення та відновлення за допомогою Doctor повторно генерують цей файл:bash mkdir -p ~/.local/bincat >~/.local/bin/openclaw-launchd-workaround <<'EOF'#!/bin/shset -euunset OPENCLAW_LAUNCHD_LABEL LAUNCH_JOB_LABEL LAUNCH_JOB_NAME XPC_SERVICE_NAME || trueexec openclaw "$@"EOFchmod 700 ~/.local/bin/openclaw-launchd-workaround openclaw gateway install \ --wrapper ~/.local/bin/openclaw-launchd-workaround \ --forcegateway installзберігає шлях до обгортки під час примусових перевстановлень, оновлень і виправлень за допомогою doctor. -
Переконайтеся, що Gateway працює стабільно й обслуговує RPC, а не лише прослуховує з’єднання:
bash openclaw gateway status --deep --require-rpc for i in 1 2 3 4; do ps aux | grep 'openclaw.*index.js' | grep -v grep | awk '{print $2}' sleep 10doneВибірка PID має показувати один стабільний процес замість змінного набору PID, а диспетчеризація вхідних повідомлень каналів має відновитися.
-
Після оновлення до випуску, у якому виправлено базовий цикл із двома LaunchAgent, видаліть обхідне рішення та перевстановіть звичайну керовану службу:
bash OPENCLAW_WRAPPER= openclaw gateway install --forcerm ~/.local/bin/openclaw-launchd-workaround
Пов’язане:
Gateway завершує роботу під час інтенсивного використання пам’яті
Використовуйте, коли Gateway зникає під навантаженням, супервізор повідомляє про перезапуск у стилі OOM або в журналах згадується critical memory pressure bundle written.
openclaw gateway status --deepopenclaw logs --followopenclaw gateway stability --bundle latestopenclaw gateway diagnostics exportШукайте:
Reason: diagnostic.memory.pressure.criticalв останньому пакеті стабільності.Memory pressure:зcritical/rss_threshold,critical/heap_thresholdабоcritical/rss_growth.- Значення
V8 heap:поблизу граничного обсягу купи. - Записи
Largest session files:, як-отagents/<agent>/sessions/<session>.jsonlабоsessions/<session>.jsonl. - Лічильники пам’яті cgroup у Linux, коли Gateway працює в контейнері або службі з обмеженням пам’яті.
Поширені ознаки:
critical memory pressure bundle writtenз’являється незадовго до перезапуску → OpenClaw зберіг пакет стабільності перед OOM. Перевірте його за допомогоюopenclaw gateway stability --bundle latest.memory pressure: level=critical ... memoryPressureSnapshot=disabledз’являється в журналах Gateway → OpenClaw виявив критичний тиск на пам’ять, але знімок стабільності перед OOM вимкнено.Largest session files:указує на дуже великий шлях до редагованої стенограми → скоротіть збережену історію сеансів, перевірте зростання сеансу або перемістіть старі стенограми з активного сховища перед перезапуском.- Кількість використаних байтів
V8 heap:близька до граничного обсягу купи → зменште навантаження від підказок і сеансів, скоротіть кількість одночасних завдань або збільште граничний обсяг купи Node лише після підтвердження, що таке робоче навантаження є очікуваним. Memory pressure: critical/rss_growth→ обсяг пам’яті швидко зріс у межах одного інтервалу вибірки. Перевірте останні журнали на наявність великого імпорту, неконтрольованого виведення інструментів, повторюваних спроб або пакета поставлених у чергу завдань агентів.- У журналах з’являється критичний тиск на пам’ять, але пакета немає → це типова поведінка. Установіть
diagnostics.memoryPressureSnapshot: true, щоб під час майбутніх подій критичного тиску на пам’ять зберігався пакет стабільності перед OOM.
Пакет стабільності не містить корисного навантаження. Він містить операційні дані про пам’ять і редаговані відносні шляхи до файлів, але не текст повідомлень, тіла webhook, облікові дані, токени, файли cookie або необроблені ідентифікатори сеансів. Додавайте експорт діагностики до звітів про помилки замість копіювання необроблених журналів.
Пов’язане:
Gateway відхилив недійсну конфігурацію
Використовуйте, коли запуск Gateway завершується помилкою Invalid config або журнали гарячого перезавантаження повідомляють, що недійсне редагування було пропущено.
openclaw logs --followopenclaw config fileopenclaw config validateopenclaw doctorШукайте:
Invalid config at ...config reload skipped (invalid config): ...Config write rejected: ...- Файл
openclaw.json.rejected.*із позначкою часу поруч з активною конфігурацією. - Файл
openclaw.json.clobbered.*із позначкою часу, якщоdoctor --fixвиправив пошкоджене безпосереднє редагування. - OpenClaw зберігає останні 32 файли
.clobbered.*для кожного шляху конфігурації та видаляє старіші під час ротації.
Що сталося
- Конфігурація не пройшла перевірку під час запуску, гарячого перезавантаження або запису, виконаного OpenClaw.
- Запуск Gateway завершується безпечною відмовою замість перезапису
openclaw.json. - Гаряче перезавантаження пропускає недійсні зовнішні редагування та залишає чинну конфігурацію середовища виконання активною.
- Записи, виконувані OpenClaw, відхиляють недійсне або руйнівне корисне навантаження перед фіксацією та зберігають
.rejected.*. openclaw doctor --fixвідповідає за виправлення. Він може видалити префікси, що не належать до JSON, або відновити останню відому справну копію, зберігши відхилене корисне навантаження як.clobbered.*.- Коли для одного шляху конфігурації виконується багато виправлень, OpenClaw видаляє старіші файли
.clobbered.*під час ротації, щоб найновіше виправлене корисне навантаження залишалося доступним.
Перевірка та виправлення
CONFIG="$(openclaw config file)"ls -lt "$CONFIG".clobbered.* "$CONFIG".rejected.* 2>/dev/null | headdiff -u "$CONFIG" "$(ls -t "$CONFIG".clobbered.* 2>/dev/null | head -n 1)"openclaw config validateopenclaw doctorПоширені ознаки
.clobbered.*існує → doctor зберіг пошкоджене зовнішнє редагування під час виправлення активної конфігурації..rejected.*існує → запис конфігурації, виконаний OpenClaw, не пройшов перевірку схеми або перезапису перед фіксацією.Config write rejected:→ під час запису була спроба вилучити обов’язкову структуру, різко зменшити файл або зберегти недійсну конфігурацію.config reload skipped (invalid config):→ безпосереднє редагування не пройшло перевірку, тому запущений Gateway його проігнорував.Invalid config at ...→ запуск завершився помилкою до завантаження служб Gateway.missing-meta-vs-last-good,gateway-mode-missing-vs-last-goodабоsize-drop-vs-last-good:*→ запис, виконаний OpenClaw, було відхилено, оскільки порівняно з останньою справною резервною копією було втрачено поля або зменшено розмір.Config last-known-good promotion skipped→ кандидат містив замінники прихованих секретів, як-от***.
Варіанти виправлення
- Запустіть
openclaw doctor --fix, щоб doctor виправив конфігурацію з префіксом або наслідками перезапису чи відновив останню справну версію. - Скопіюйте лише потрібні ключі з
.clobbered.*або.rejected.*, а потім застосуйте їх за допомогоюopenclaw config setабоconfig.patch. - Перед перезапуском виконайте
openclaw config validate. - Під час ручного редагування зберігайте повну конфігурацію JSON5, а не лише частковий об’єкт, який потрібно змінити.
Пов’язані матеріали:
Попередження перевірки Gateway
Використовуйте, коли openclaw gateway probe встановлює з’єднання, але все одно виводить блок попереджень.
openclaw gateway probeopenclaw gateway probe --jsonopenclaw gateway probe --ssh user@gateway-hostЗверніть увагу на:
warnings[].codeіprimaryTargetIdу виведенні JSON.- Чи стосується попередження резервного підключення через SSH, кількох Gateway, відсутніх областей доступу або нерозпізнаних посилань на автентифікаційні дані.
Поширені ознаки:
SSH tunnel failed to start; falling back to direct probes.→ налаштування SSH завершилося помилкою, але команда все одно спробувала підключитися безпосередньо до налаштованих цілей або цілей зворотного зв’язку.multiple reachable gateway identities detected→ відповіли різні Gateway або OpenClaw не зміг підтвердити, що доступні цілі є тим самим Gateway. Тунель SSH, URL-адреса проксі або налаштована віддалена URL-адреса того самого Gateway вважаються одним Gateway із кількома транспортами, навіть якщо їхні порти відрізняються.Read-probe diagnostics are limited by gateway scopes (missing operator.read)→ підключення успішне, але детальний RPC обмежений областю доступу; сполучіть ідентичність пристрою або використайте облікові дані зoperator.read.Gateway accepted the WebSocket connection, but follow-up read diagnostics failed→ підключення успішне, але виконання повного набору діагностичних RPC завершилося через перевищення часу очікування або з помилкою. Вважайте цей Gateway доступним, але з обмеженою діагностикою; порівняйтеconnect.okіconnect.rpcOkу виведенні--json.Capability: pairing-pendingабоgateway closed (1008): pairing required→ Gateway відповів, але цьому клієнту все ще потрібне сполучення або схвалення для звичайного операторського доступу.- Текст попередження про нерозпізнане посилання на секрет
gateway.auth.*/gateway.remote.*→ автентифікаційні дані були недоступні в цьому шляху команди для цілі, підключення до якої завершилося помилкою.
Пов’язані матеріали:
Канал підключено, але повідомлення не надходять
Якщо стан каналу — підключено, але обмін повідомленнями не відбувається, зосередьтеся на політиках, дозволах і специфічних для каналу правилах доставлення.
openclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw status --deepopenclaw logs --followopenclaw config get channelsЗверніть увагу на:
- Політику особистих повідомлень (
pairing,allowlist,open,disabled). - Список дозволених груп і вимоги щодо згадок.
- Відсутні дозволи або області доступу API каналу.
Поширені ознаки:
mention required→ повідомлення проігноровано через групову політику згадок.pairing/ сліди очікування схвалення → відправника не схвалено.missing_scope,not_in_channel,Forbidden,401/403→ проблема з автентифікацією або дозволами каналу.
Пов’язані матеріали:
Доставлення Cron і Heartbeat
Якщо Cron або Heartbeat не запустився чи не виконав доставлення, спочатку перевірте стан планувальника, а потім ціль доставлення.
openclaw cron statusopenclaw cron listopenclaw cron runs --id <jobId> --limit 20openclaw system heartbeat lastopenclaw logs --followЗверніть увагу на:
- Чи ввімкнено Cron і чи вказано час наступного пробудження.
- Стан історії запусків завдання (
ok,skipped,error). - Причини пропуску Heartbeat (
quiet-hours,requests-in-flight,cron-in-progress,lanes-busy,alerts-disabled,empty-heartbeat-file,no-tasks-due).
Поширені ознаки
cron: scheduler disabled; jobs will not run automatically→ Cron вимкнено.cron: timer tick failed→ такт планувальника завершився помилкою; перевірте помилки файлів, журналів і середовища виконання.heartbeat skippedзreason=quiet-hours→ поза межами вікна активних годин.heartbeat skippedзreason=empty-heartbeat-file→HEARTBEAT.mdіснує, але містить лише порожні рядки, коментарі, заголовки, огорожі блоків або заготовку порожнього списку завдань, тому OpenClaw пропускає виклик моделі.heartbeat skippedзreason=no-tasks-due→HEARTBEAT.mdмістить блокtasks:, але на цьому такті жодне із завдань не має виконуватися.heartbeat: unknown accountId→ недійсний ідентифікатор облікового запису для цілі доставлення Heartbeat.heartbeat skippedзreason=dm-blocked→ ціль Heartbeat визначено як призначення типу особистого повідомлення, колиagents.defaults.heartbeat.directPolicy(або перевизначення для окремого агента) має значенняblock.
Пов’язані матеріали:
Node сполучено, але інструмент не працює
Якщо Node сполучено, але інструменти не працюють, окремо перевірте стан переднього плану, дозволів і схвалення.
openclaw nodes statusopenclaw nodes describe --node <idOrNameOrIp>openclaw approvals get --node <idOrNameOrIp>openclaw logs --followopenclaw statusЗверніть увагу на:
- Чи перебуває Node в мережі та чи має очікувані можливості.
- Надані дозволи ОС на камеру, мікрофон, геопозицію та екран.
- Схвалення виконання команд і стан списку дозволених команд.
Поширені ознаки:
NODE_BACKGROUND_UNAVAILABLE→ застосунок Node має перебувати на передньому плані.*_PERMISSION_REQUIRED/LOCATION_PERMISSION_REQUIRED→ відсутній дозвіл ОС.SYSTEM_RUN_DENIED: approval required→ очікується схвалення виконання команди.SYSTEM_RUN_DENIED: allowlist miss→ команду заблоковано списком дозволених команд.
Пов’язані матеріали:
Інструмент браузера не працює
Використовуйте, коли дії інструмента браузера завершуються помилкою, хоча сам Gateway працює справно.
openclaw browser statusopenclaw browser start --browser-profile openclawopenclaw browser profilesopenclaw logs --followopenclaw doctorЗверніть увагу на:
- Чи задано
plugins.allowі чи містить воноbrowser. - Чинний шлях до виконуваного файлу браузера.
- Доступність профілю CDP.
- Наявність локального Chrome для профілів
existing-session/user.
Ознаки Plugin / виконуваного файлу
unknown command "browser"абоunknown command 'browser'→ вбудований Plugin браузера виключено налаштуваннямplugins.allow.- Інструмент браузера відсутній або недоступний, коли
browser.enabled=true→plugins.allowвиключаєbrowser, тому Plugin не завантажився. Failed to start Chrome CDP on port→ не вдалося запустити процес браузера.browser.executablePath not found→ налаштований шлях недійсний.browser.cdpUrl must be http(s) or ws(s)→ налаштована URL-адреса CDP використовує непідтримувану схему, як-отfile:абоftp:.browser.cdpUrl has invalid port→ налаштована URL-адреса CDP має недійсний порт або порт поза допустимим діапазоном.Playwright is not available in this gateway build; '<feature>' is unsupported.→ у поточній інсталяції Gateway відсутня основна залежність середовища виконання браузера; перевстановіть або оновіть OpenClaw, а потім перезапустіть Gateway. Знімки ARIA та базові знімки сторінок усе ще можуть працювати, але навігація, знімки ШІ, знімки елементів за CSS-селекторами й експорт у PDF залишатимуться недоступними.
Ознаки Chrome MCP / наявного сеансу
Could not find DevToolsActivePort for chrome→ наявному сеансу Chrome MCP ще не вдалося підключитися до вибраного каталогу даних браузера. Відкрийте сторінку перевірки браузера, увімкніть віддалене налагодження, залиште браузер відкритим, схваліть перший запит на підключення, а потім повторіть спробу. Якщо стан входу в обліковий запис не потрібен, віддайте перевагу керованому профілюopenclaw.No browser tabs found for profile="user"→ у профілі підключення Chrome MCP немає відкритих локальних вкладок Chrome.Remote CDP for profile "<name>" is not reachable→ налаштована віддалена кінцева точка CDP недоступна з хоста Gateway.Browser attachOnly is enabled ... not reachableабоBrowser attachOnly is enabled and CDP websocket ... is not reachable→ профіль лише для підключення не має доступної цілі або кінцева точка HTTP відповіла, але WebSocket CDP усе одно не вдалося відкрити.
Ознаки елементів / знімків екрана / передавання файлів
fullPage is not supported for element screenshots→ запит на знімок екрана поєднав--full-pageз--refабо--element.element screenshots are not supported for existing-session profiles; use ref from snapshot.→ виклики знімків екрана Chrome MCP /existing-sessionмають використовувати захоплення сторінки або--refзнімка, а не CSS--element.existing-session file uploads do not support element selectors; use ref/inputRef.→ обробникам передавання файлів Chrome MCP потрібні посилання на знімки, а не CSS-селектори.existing-session file uploads currently support one file at a time.→ у профілях Chrome MCP передавайте один файл за один виклик.existing-session dialog handling does not support timeoutMs.→ обробники діалогів у профілях Chrome MCP не підтримують перевизначення часу очікування.existing-session type does not support timeoutMs overrides.→ не вказуйтеtimeoutMsдляact:typeу профіляхprofile="user"/ наявного сеансу Chrome MCP або використовуйте керований профіль чи профіль браузера CDP, якщо потрібен власний час очікування.response body is not supported for existing-session profiles yet.→ дляresponsebodyусе ще потрібен керований браузер або необроблений профіль CDP.- Застарілі перевизначення області перегляду, темного режиму, локалі або автономного режиму в профілях лише для підключення чи віддалених профілях CDP → запустіть
openclaw browser stop --browser-profile <name>, щоб закрити активний сеанс керування та звільнити стан емуляції Playwright/CDP без перезапуску всього Gateway.
Пов’язані матеріали:
Якщо після оновлення щось раптово перестало працювати
Більшість несправностей після оновлення спричинена розбіжностями конфігурації або застосуванням суворіших стандартних налаштувань.
1. Поведінка автентифікації та перевизначення URL змінилася
openclaw gateway statusopenclaw config get gateway.modeopenclaw config get gateway.remote.urlopenclaw config get gateway.auth.modeЩо перевірити:
- Якщо
gateway.mode=remote, виклики CLI можуть спрямовуватися до віддаленого сервісу, тоді як локальний сервіс працює справно. - Явні виклики
--urlне використовують збережені облікові дані як резервний варіант.
Типові ознаки:
gateway connect failed:→ неправильна цільова URL-адреса.unauthorized→ кінцева точка доступна, але автентифікація неправильна.
2. Обмеження прив’язування та автентифікації стали суворішими
openclaw config get gateway.bindopenclaw config get gateway.auth.modeopenclaw config get gateway.auth.tokenopenclaw gateway statusopenclaw logs --followЩо перевірити:
- Прив’язування не до loopback-інтерфейсу (
lan,tailnet,custom) потребує коректного шляху автентифікації Gateway: автентифікації за спільним токеном/паролем або правильно налаштованого розгортанняtrusted-proxyне на loopback-інтерфейсі. - Старі ключі на кшталт
gateway.tokenне замінюютьgateway.auth.token.
Типові ознаки:
refusing to bind gateway ... without auth→ прив’язування не до loopback-інтерфейсу без коректного шляху автентифікації Gateway.Connectivity probe: failed, коли середовище виконання працює → Gateway працює, але недоступний із поточними параметрами автентифікації або URL-адреси.
3. Стан сполучення та ідентичності пристрою змінився
openclaw devices listopenclaw pairing list --channel <channel> [--account <id>]openclaw logs --followopenclaw doctorЩо перевірити:
- Очікують схвалення пристрої для панелі керування/вузлів.
- Очікують схвалення запити на сполучення через приватні повідомлення після змін політики або ідентичності.
Типові ознаки:
device identity required→ вимоги автентифікації пристрою не виконано.pairing required→ відправника/пристрій необхідно схвалити.
Якщо після перевірок конфігурація сервісу та середовище виконання все ще не узгоджуються, повторно встановіть метадані сервісу з того самого каталогу профілю/стану:
openclaw gateway install --forceopenclaw gateway restartПов’язані матеріали: