Заметки о релизе · матрица · восьмишаговый runbook · тезисы в тикет · консоль VNC
OpenClaw v2026.4.25 переносит старт плагинов на «холодный» постоянный реестр: при запуске агент читает заранее подготовленные метаданные вместо обхода всего дерева расширений — установка и обновления становятся предсказуемее, но появляются новые классы сбоев. Операторы видят пустые панели плагинов, длинные первые холодные старты после апгрейда и рассинхрон между глобальными сборками npm и UI Gateway. В примечаниях к релизу также настаивают на усилении install/update и на проверке Gateway при смешанных версиях — то есть CLI, процесс Gateway и путь к пакету в launchd plist обязаны рассказывать одну и ту же версию. Этот материал дополняет, под прямым углом, статью v2026.4.25: pairing каналов и безопасность Gateway: здесь стабилизируется плоскость плагинов, пока QR и Mission Control остаются вне критического пути. Читайте вместе с частыми релизами, заморозкой и откатом, официальным Docker Compose, ломающим апгрейдом v2026.4.5 и гайдом по десяти типовым ошибкам, чтобы не смешивать на одном тикете «канал в мессенджере зелёный» и «реестр расширений здоров».
Формулировки «холодный реестр», «починка метаданных» и «проверка смешанных версий» описывают наблюдаемое поведение. Во-первых, старт — это холодное чтение. Если индекс на диске мигрирован лишь наполовину, не ждите аккуратной строки «registry corrupt»: увидите пустой экран плагинов или подвисание на минуты, пока Node пересобирает индекс — особенно на удалённом Mac с маленьким SSD и шумным соседом по диску. Во-вторых, пути установки опираются на локальные метаданные, которые должны пережить обрывчатые загрузки npm. Остановившийся tarball оставляет строку плагина с номером версии, но без бинарника — ровно тот класс сбоев, для которого предназначены openclaw plugins repair и связанные команды reindex. В-третьих, смешанные версии — это топология времени выполнения. CLI в интерактивной оболочке может указывать на /opt/homebrew/..., тогда как launchd держит ProgramArguments на старом dist/index.js, либо контейнер Docker монтирует другую корневую конфигурацию, чем хост, на котором вы только что делали repair. Пока пути не сошлись, консоль на 18789 читает не ту сборку, которую вы считаете установленной.
Пять пунктов ниже чаще всего всплывают в тикетах, когда команда пропускает сбор доказательств и прыгает к «переустановить всё». Их можно копировать в раздел «скрытые затраты» заявки на изменение.
Пики холодного старта: первый полный индекс или repair может в полную загрузить CPU и цикл событий Node; на арендованном инстансе 32 ГБ с «шумным» соседом по диску сессия выглядит зависшей, хотя процесс ещё перезаписывает shard-файлы.
Плагины «наполовину»: обрыв сети при скачивании бандла даёт строки манифеста на отсутствующие нативные модули; в UI это «версия известна, переключатель ничего не делает», пока repair не согласует дерево.
Несколько корней установки: Homebrew /opt/homebrew, «наследие» /usr/local, node_modules в ветке разработчика — всё это может нести разные сборки OpenClaw. Job launchd может оставаться на старейшем пути, откуда в логах — предупреждения о смешанных версиях, хотя интерактивный shell уже на 4.25.
Права и песочница: вспомогательный процесс, не сумевший создать файлы в каталоге кэша реестра, чаще пишет «plugin load failed», а не прямолинейный EPERM — по-прежнему нужны те же TCC и проверка владельца, что и у любого долгоживущего агента на macOS. Соединяйте с TCC-чеклистом по удалённому Mac, если автоматизация касается UI.
Здоровье канала не равно здоровью плагинов. Рабочий IM-QR гарантирует доставку в одном коннекторе, но не доказывает согласованность реестра и Gateway. Подпишите критерии приёмки в разных задачах, чтобы не закрыть тикет «в продакшн готовы», пока расширения падают молча.
Холодный реестр награждает за воспроизводимую поверхность установки. Docker фиксирует Node и пакет openclaw в одном слое образа, но bind-mount’ы к хосту вновь смешивают корни, если repair делаете на хосте, а контейнер читает устаревший том. npm install -g на железе раскатывается быстрее, но требует дисциплины: каждый repair, doctor и правка plist — под тем же пользователем macOS, на котором потом откроется 18789; иначе реестр на диске и кэш per-user разъедутся. Таблицу удобно прикреплять к записи о изменениях: по ней быстрее всего доказать, что инцидент — несоответие тома, а не «сломалась модель».
| Ось | npm / pnpm на хосте | Docker Compose | Типичная ошибка чтения |
|---|---|---|---|
| Согласование версий | Зависит от launchd, PATH, профилей shell | Тега образа и смонтированного каталога конфигов | Смотреть только openclaw --version в SSH, не сравнивая argv реального Gateway |
| Сценарий repair | Работа с хостовым реестром на месте | Та же логика внутри контейнера, тот же том | Repair на хосте, пока контейнер укажет на застывший путь внутри образа |
| Скорость отката | Известный tarball и фикс semver | Новый тег и docker compose up | Обновить сразу хост+образ без снимка, потом дебажить две плохие плоскости |
| Наблюдаемость | Потоки логов macOS + локальный браузер на 127.0.0.1:18789 | docker logs и curl внутри контейнера | Только tail по SSH, без DevTools и сравнения хэшей бандла |
Правило: версию продукта задаёт процесс, который поднимает Gateway. CLI — лишь ещё один клиент.
Порядок намеренно жёсткий: сначала факты, потом мутируем. Под пиковым трафиком заранее объявите «окно заморозки» и используйте формулировки из раздела «заморозка и исключения» в гайде по эксплуатации. Снимите свободное место: «холодный» реестр больно реагирует, если на APFS осталось меньше ориентировочно 10–15 %. После смены пакетов сначала openclaw doctor, чтобы в поддержку ушёл читаемый лог, и только потом длинные подкоманды. Если в release note есть repair/reindex — используйте глагол, стандартизированный у вас, и сохраняйте весь stderr: при частичном успехе метаданные остаются смешанными.
Перезапускайте Gateway только после того, как согласованы CLI, plist и точка входа контейнера. Старый процесс против нового реестра — классическое жонглирование lock’ами, похожее на порчу данных. HTTP должен отдавать одну и ту же build-строку: сверяйте /version и баннеры в логах, панель «О программе» в UI, первую строку openclaw --version. Есть отличие — вы ещё не закончили.
Бэкап: выгрузите корень конфигов OpenClaw, каталог данных плагинов, plist launchd. Зафиксируйте openclaw --version и полный argv Gateway через ps до обновления.
Остановить записи: в окне не запускайте skill update и чужие «ручные» установки плагинов, чтобы не переплести миграции.
Поднять пакет: ведите поддерживаемый канал к v2026.4.25. Для глобального npm сравните which openclaw и ProgramArguments launchd — один и тот же префикс.
Запустить doctor: вставьте в тикет дословно всё, что касается плагинов, реестра, gateway, вместе с предупреждениями по таймингам.
Запустить plugins repair / reindex: смотрите на реальное время и I/O; при ошибке храните полный stderr, а не снимок с трёх последних строк.
Перезапустить Gateway: лишь когда версии сходятся, иначе старый PID держит устаревший lock на раскладке.
Проверка смешанных версий: CLI, HTTP-эндпоинт и подвал/«О программе» в UI.
Приёмка в VNC: в графической сессии откройте http://127.0.0.1:18789 (или туннель по документации), проверьте список расширений, карточки авторизации моделей, ящик ошибок. Снимок — к записи о изменении.
Смешанные версии — три быстрые проверки: 1) CLI: openclaw --version 2) Процесс: ps — путь dist/index.js в argv 3) UI: подвал/«О программе», заголовки ответа в DevTools
Заметка: для Docker в runbook явно укажите, где крутятся repair и doctor (хост vs docker compose exec) и согласуйте раскладку томов с гайдом по Compose, чтобы дружелюбный SSH не разъехал контейнер с хостом.
Внимание: не перепрыгивайте мажор, не переписывайте SecretRef и маршрутизацию каналов за один вечер без бэкапов. Если ломается порядок с ломающим изменением v2026.4.5, выбирайте более жёсткий путь.
По SSH по-прежнему удобно гнать doctor, repair и структурные логи. Панель управления, согласие браузерных расширений и тот факт, что тумблер реально запомнился, проверяйте в десктоп-сессии того же пользователя, что владеет job launchd. Сетка ниже рассчитана на одно дежурное подключение по VNC. Застряли на нативном модуле или загадочной ошибке загрузки — откройте гайд по десяти частым сбоям, сопоставьте ключевое слово и вернитесь к шагу 5, чтобы поймать повторяющийся холодный старт.
| Пункт | Действие | Критерий «ок» |
|---|---|---|
| Треугольник версий | CLI, argv процесса, «О программе»/подвал на 18789 | Совпадают major/minor, которые вы планировали |
| Список плагинов | После холодного старта открыть страницу расширений, дождаться стабилизации | Количество = базовая линия до изменения, или дельта документирована |
| Авторизация моделей | Прогнать OAuth-обновления, смотреть баннеры rate limit | Нет бесконечных 401/429 в заданном окне |
| Диск и I/O | Activity Monitor на время reindex | Спайк сходит, свободное место выше порога |
| Регресс, дым | Маленький тест в самом низкорисковом канале | Канал и плагины — отдельные критерии, как в §01 |
Онбординг IM, паттерны безопасности 18789, SSH-туннель рядом с той же плоскостью управления.
Читать →Линии заморозки, исключения и деревья отката при быстром релизном ритме.
Читать →Тома, порт 18789, проверка UI в контейнере на VNC-хосте.
Читать →Сначала doctor, затем repair или reindex и доказательство, что нет смешанных версий. «Слепая» переустановка Gateway лишь откладывает следующий холодный старт и съедает дифф, который показал бы устаревший plist или том.
launchd всё ещё указывает на старую запись dist, а интерактивная оболочка — на новую глобальную установку; либо путь хоста и путь в контейнере под bind-mount смотрят на разные деревья.
CLI и логи — да. Панель управления и часть разрешений macOS — в графической сессии. Таблицу из §05 проходите по VNC под тем же пользователем, что и процесс Gateway.
Холодный реестр меняет «сканировать всё дерево на каждой загрузке» на «владейте метаданными установки и линией версий». Следствие — предсказуемые пики I/O на reindex, более жёсткая связка launchd и npm-префиксов и приёмка в браузерной сессии, которую можно увидеть. Только логи по SSH смешают в одном тикете «канал ок» и «расширения ок» — и вы потеряете дни, отлавливая «призрак», половина стека которого никогда не проверялась.
Mac под столом требует того, кто уложит сон, питание и термолимиты Apple Silicon. Арендованный облачный Mac с SSH и заранее согласованным VNC — часто чище способ поставить «вторые глаза» на 18789, не отправляя коллегу в серверную. Экономика вопроса — кто несёт ночные замены дисков и colo, а не «легок ли OpenClaw».
Чтобы взять в аренду узел Apple Silicon «под проект», который совпадает с этими чеклистами, используйте VNCMac: страница покупки с тарифами и главная с контекстом. Держите pairing и Docker в той же папке runbook, чтобы вся команда смотрела на одну карту от пикселей к процедурам. Детали подключения — удалённый рабочий стол.