Схема CLI-обновления OpenClaw и отладки шлюза после upgrade

2026 OpenClaw openclaw update после upgrade: шлюз не стартует, каналы пусты, модель 401 — update status, Update restart pending и plugin load failed послойная матрица решений

Вы выполнили openclaw update, npm сообщил об успехе, а через минуты шлюз не поднимается, список каналов пуст или каждый вызов модели отдаёт 401. Официальный блок After an update требует update status, контроль handoff Update restart, затем gateway status --deep, doctor --fix и gateway restart. Этот материал превращает лестницу в матрицу решений на первый час — включая plugin load failed: dependency tree corrupted, OAuth shadow credentials и фикс v2026.5.20, запрещающий тихое переключение Node шлюза при нескольких установках Node на хосте.

1. Четырёхслойная triage: не сводите все post-upgrade сбои к одному багу

Команды, которые гоняют еженедельные патчи OpenClaw на Apple Silicon или VPS, часто сжигают смену на перезапуск launchd/systemd, хотя корень на слой выше или ниже демона. Чините слои по порядку — иначе логи противоречат друг другу, а параллельные правки конфига без change control множат регрессии.

  1. L0 пакет и handoff: установщик успешен, но openclaw status --all показывает Update restart pending или failed. Проблема в handoff обновления, не в firewall Telegram.
  2. L1 процесс шлюза: Runtime: stopped, конфликт порта или drift CLI/сервиса. Сначала macOS gateway restart или Linux systemd HOME drift.
  3. L2 канальные плагины: процесс жив, но channels status --probe пуст или plugin load failed. Раздел 6. Probe зелёный без ответа → канал онлайн, probe зелёный, без ответа.
  4. L3 credentials модели: каналы здоровы, чат 401/403. doctor --fix и onboard credentials слои. Старый бинарник не пишет service config → split brain.

Для ежедневных «нет ответа» вне окон upgrade держите под рукой официальную лестницу диагностики. Здесь — шестьдесят минут сразу после openclaw update, когда пропуск одной команды бьёт по throughput Metal-ядра и стабильности RPC.

Скрипты update решают semver-установку; production-ready — handoff: recycle сервиса, rebuild registry плагинов, очистка credential shadows, выравнивание пути Node. Смешивание даёт пустые каналы и intermittent 401, которые команда часами крутит в мессенджерах вместо одного update status --json.

На Apple Silicon полезно смотреть не только средний CPU по пакету, а одно ядро на 100% при chat.history или plugin load — типичная картина «процесс жив, RPC не готов». Снимайте per-process CPU и disk read B/s в одном окне с gateway status --deep, иначе on-call спутает L0 handoff с L4 session indexing.

Не смешивайте post-upgrade triage со split brain без proof: split brain требует выравнивания binary; handoff часто лечится одной командой из status. Когда оба состояния идут подряд — сначала binary, затем эта лестница — иначе rollback откатит не тот слой.

2. Три частых болевых точки (нумерация)

Боль первая: пустые каналы за сетевой outage. После upgrade в Channels ещё видны мессенджеры, но инстансы не регистрируются — в логе старта plugin load failed: dependency tree corrupted; run openclaw doctor --fix. nginx/Tailscale не чинят дерево зависимостей, падающее до конструкторов каналов.

Боль вторая: правка конфига при pending Update restart. Незавершённый handoff → пропуск hot reload, Invalid config, service unit на полузаписанный state. Сначала команда из status --all.

Боль третья: ротация всех API keys на первом 401. Re-OAuth на shared profile не гарантирует инвалидацию устаревших per-agent OAuth auth shadows. doctor --fix точечнее массовой ротации, ломающей staging и CI-клоны с теми же профилями.

Дополнительно: второй openclaw update при красном handoff наслаивает частичные установки. Заморозьте параллельные изменения до зелёной лестницы из раздела 4.

Четвёртая боль: beta-канал на production ради одной фичи из release notes. После upgrade — пустые каналы или respawn без логов. Pin stable, rollback-semver в тикете, beta только на изолированном remote Mac clone, не на боевом launchd.

На каждое upgrade-окно три скрина: Update restart, фрагмент update status --json, Gateway version из gateway status --deep. Этого хватает в большинстве postmortem, чтобы отделить L0 от L2 без полного log dump наружу.

3. Матрица симптом → первое доказательство (цитируемая)

Главный симптом Первое доказательство Вероятный слой Следующие шаги (≤3 команды)
Update только что завершён, CLI тормозит status --all → Update restart L0 handoff update status --json → restart/install по подсказке
Список каналов пуст plugin load failed в Channels L2 дерево плагинов doctor --fixgateway restart
401 только у части agents Логи provider 401; doctor про shadow L3 credentials doctor --fix → retest одного agent
gateway install/restart отклонён meta.lastTouchedVersion > CLI binary Split brain Выровнять PATH/binary → статья split brain
Память растёт без OOM gateway status --deep + stability hints Session/runtime plugin Архив больших .jsonlредакция логов production
Рестарт висит 3–4 минуты CPU 100%; chat.history в логах Индексация session rollback v2026.4.26

Активную строку в тикет до расхождения параллельных респондеров. Матрица консервативна: один proof-команда лучше спекулятивной переустановки, стирающей rollback-артефакты.

4. Официальная лестница после update (How-to, цель 15 минут)

  1. Заморозить параллельные правки: в окне upgrade не трогать nginx, не ротировать Telegram, не переустанавливать optional plugins.
  2. Полный статус: openclaw status --all; скрин строки Update restart в change record.
  3. Update JSON: openclaw update status --json; сохранить pending/failed, канал stable/beta, следующую команду.
  4. Глубокий шлюз: openclaw gateway status --deep; Runtime, Config (cli) vs Config (service), порт, Gateway version.
  5. Авторемонт: openclaw doctor --fix для деревьев плагинов, OAuth shadows, устаревших портов сервиса.
  6. Контролируемый рестарт: openclaw gateway restart; при fail → openclaw gateway install --force, снова restart.
  7. Приёмка каналов: openclaw channels status --probe до works / audit ok.
openclaw status --all
openclaw update status --json
openclaw gateway status --deep
openclaw doctor --fix
openclaw gateway restart
openclaw channels status --probe

Наблюдение: второй терминал openclaw logs --follow. Токены редактировать перед вложением — чеклист редакции логов.

Таймстампы каждого шага. На выделенном always-on хосте handoff часто cleared < 5 минут; ноутбук со сном > 20 минут и ложный split brain — типичный паттерн без dedicated gateway на Metal.

Если нужен gateway install --force, зафиксируйте причину в change ticket: незавершённый bootout, неверный Node path, отказ из-за meta.lastTouchedVersion. Без этого следующая смена повторит force вслепую и сотрёт валидный rollback path.

channels status --probe запускайте только при стабильном Runtime. Probe на stopped gateway даёт ложнозелёные дашборды, которые проверяют HTTP, а не регистрацию плагинов. Добавьте короткий test-DM или tool call на целевом agent.

5. Update restart pending и провал handoff

Update restart в openclaw status и status --all. Pending: handoff не завершил recycle supervised gateway. Failed включает следующую команду — часто отсутствующий gateway restart, service unit со старым Node path, незавершённый launchd bootout.

При fail handoff не запускайте сразу второй openclaw update. Читайте update status --json: канал, target tag, блокер. Production pin stable и semver rollback в тикете. Beta около v2026.5.19-beta — тихие respawn-петли.

Если gateway status --deep держит WebSocket health > 10 с, а каналы пусты — размер session-файлов; v2026.4.26 chat.history имитирует failed restart.

На Linux коррелируйте journalctl с update status --json. Часто: upgrade под admin, systemd стартует gateway под service account с HOME drift — пустой merge config после rewrite unit.

На macOS после failed handoff сравните npm global upgrade пользователя и launchd job root/other user. gateway status --deep показывает Config(cli) vs Config(service) — любое расхождение блокирует handoff, не Telegram.

Держите rollback-скрипт на предыдущий stable tag с немедленным status --all. Цель: < 10 минут от решения до cleared или осознанного rollback — измеримо в change process.

6. plugin load failed: dependency tree corrupted

Записи каналов в конфиге есть, регистрация плагина падает до инстанцирования каналов. Поддерживаемый fix: openclaw doctor --fix, не слепое удаление node_modules.

Minimal repro: закомментируйте некритичные plugins.entries, оставьте один messenger + core provider, restart, probe. Включайте по одному — изолированный пакет vs global drift дерева модулей Node, который грузит service.

Отличайте startup load от MCP runtime leaks. Dependency tree — первые секунды; рост памяти через часы — другие runbook. После doctor всё красное — Gateway version и абсолютный Node path из gateway status --deep; multi-Node drift живёт и после v2026.5.20.

Сохраняйте вывод doctor и список plugins до и после --fix. Слепое удаление extensions без doctor повышает риск рассинхрона credentials и plugin metadata — особенно на хостах с rsync-снапшотами ~/.openclaw между staging и prod.

7. Provider 401 и OAuth shadows после upgrade

Часть agents 401, primary ok → OAuth shadows. Re-auth на shared profile не гарантирует инвалидацию per-agent shadows. doctor --fix удаляет устаревшие копии.

Все модели 401: пустой ~/.openclaw/credentials/? systemd EnvironmentFile или launchd env инжектит secrets до старта? Rewrite unit после upgrade вскрывает ordering bugs, скрытые в интерактивной shell.

Cloudflare AI Gateway + Anthropic (2026.5.6–5.7): регресс dual-auth headers. После upgrade проверьте forwarding, не одну key rotation.

Сверьте слои credentials с onboard-руководством: env, file profiles, provider switching — после recycle probe зелёный, chat может идти другим route.

После doctor --fix тестируйте один failing agent минимальным prompt, не сразу prod group chat. Так отделяете shadow-401 от rate-limit 429 и outage провайдера. Фиксируйте provider, agent id, timestamp — базовый набор для повторяемых postmortem на высоконагруженных Metal-хостах.

8. Multi-Node и v2026.5.20

v2026.5.20 чинит тихое переключение Node шлюза при нескольких Node и openclaw update. Путь Node — явная инфраструктура:

  • Абсолютный Node path в launchd ProgramArguments или systemd ExecStart.
  • До/после upgrade: which openclaw, openclaw --version, Gateway version в gateway status --deep.
  • Drift CLI/service: gateway install --force, затем restart.

Homebrew Node upgrades на macOS и nvm default на Linux — топ-триггеры CLI-new/daemon-old даже после guardrail v2026.5.20. Ожидаемые digest в runbook — один grep на дежурстве.

9. Метрики для postmortem (числовые baseline)

  • Длительность handoff: минуты до Update restart cleared (цель < 5 на dedicated host).
  • Время probe: секунды до all-green channels probe (цель < 120).
  • Окно rollback: артефакт предыдущего stable tag ≥ 72 часа.
  • Config churn: строк diff не auto-generated за окно (цель < 50).
  • 401 recovery: минуты до успешного chat одного agent после doctor --fix при shadows (цель < 10).

Пять чисел в шаблон change ticket. Рост handoff quarter-over-quarter — аудит sleep policy на ноутбуках-gateway и перенос production на always-on remote Mac с предсказуемым Metal throughput.

10. FAQ

В: Пропустить update status и сразу restart? Не рекомендуется. Restart при незавершённом handoff зацикливается; status даёт короткий путь.

В: doctor --fix перепишет openclaw.json? Может починить prefix, ports, plugin trees. Snapshot перед major. Invalid → .rejected.*.

В: Связь со split brain? Split brain: старый binary не пишет новый config. Здесь: новый binary, handoff/plugins/credentials не выровнены. Цепочка возможна: сначала split brain, потом эта лестница.

11. Итог: update ставит semver — handoff возвращает production

openclaw update двигает semver. Доступность зависит от завершённого Update restart handoff, целых plugin dependency trees, service unit на нужном Node и OAuth shadows на актуальном shared profile после re-auth. Сон ноутбука, hibernate WSL, слабый VPS и общая рабочая станция dev+gateway раздувают fail handoff — пустые каналы и intermittent 401, пока команда крутит messenger tokens.

Фиксация шлюза на always-on macOS remote node с явными Node paths в launchd плюс SFTP/rsync snapshots ~/.openclaw делает 15-минутную лестницу повторяемой и auditable. Аренда remote Mac SFTPMAC — Apple Silicon 24/7 для OpenClaw и CI/CD, связка с официальной лестницей, split brain recovery, gateway restart и редакцией логов. Dedicated арендованный Mac обычно выигрывает у co-hosting на машине, которая спит, casual обновляет Node или без snapshot discipline — особенно когда нужны стабильный RPC, Metal и предсказуемые upgrade-окна под высокочастотные релизы 2026 года.