/tmp/openclaw с openclaw gateway status. Перекрёстные ссылки ведут к headless SSH, выравниванию CLI, токену launchd и диагностической лестнице, чтобы не плодить пять полуготовых runbook.2026 Node 22 и оболочка приложения плюс CLI: мифы, которые сжигают часы разбора
Апстрим-документация теперь описывает macOS как оболочку, которая валидирует и оркестрирует, а бинарник Gateway и протокол живут в глобально установленном CLI openclaw. Если запустить только установочный скрипт, не доказав, что node -v удовлетворяет заявленному минимуму, или поставить только приложение, ожидая встроенный runtime, появятся сбои, кажущиеся случайными в Dashboard или на первом рукопожатии WebSocket. Выделенное облачное железо помогает, потому что PATH, глобальный префикс npm, метку LaunchAgent и корни журналов можно зафиксировать под одной служебной учётной записью, а не гадать, какая сессия ноутбука последней выполняла npm i -g.
По сравнению с акцентом на Node 20 в headless SSH, многие установочные пути 2026 года предполагают Node 22; здесь 22 — пол приёмки, а для замороженных образов на 20 оставлена отдельная ветка. Узлы ближе к региону отличаются от далёкого M4 Pro в основном временем загрузки зависимостей, а не семантикой протокола, поэтому команды приёмки одинаковы, а строки закупки различаются.
Проверять только сборку App Store:дополнительно вывести node -v, which openclaw, openclaw --version и npm prefix -g.
Считать install.sh и npm global двумя источниками истины:в каждом окне обслуживания выбрать один главный путь.
Видеть прослушивание 18789 и думать, что процесс новый:часто это присоединение к старому Gateway; сначала сравните время рождения PID.
Править токен до чтения журналов:сначала метки времени в /tmp/openclaw, затем ветка про токен launchd.
Делить одну учётку между инженерами с npm global:ProgramArguments уезжает тихо; отдельные учётки остаются лучшей практикой.
Включите эти проверки в тот же предварительный блок, что и управление общим узлом, чтобы SSH-места не затирали префиксы вслепую.
Владельцы образов должны публиковать зафиксированные semver-диапазоны для глобального CLI и запрещённые префиксы PATH в заметках AMI, а при первом запуске добавлять хвост openclaw doctor в централизованные журналы, чтобы дежурный сравнил пакет AMI со штампом CLI до глубокого копания.
Когда сосуществуют интерактивная ветка ноутбука и безголовая облачная, требуйте в тикете поле, какая ветка менялась; иначе все уверены, что прод синхронизирован, пока LaunchAgent всё ещё указывает на вчерашний префикс.
Платформенным командам полезно после каждого успешного обновления сохранять короткий вывод launchctl print, чтобы позже сравнивать тикеты за секунды, а не часы, когда регрессии возвращаются.
Относитесь к release notes как к контрактам API: переименованные флаги upstream должны обновлять внутренние сниппеты в тот же день, иначе автоматизация бесшумно дрейфует на нескольких спринтах.
Таблицы: install.sh против npm global, присоединение против нового слушателя на 18789
Разбор начинается с двух осей: основной путь установки и поведение порта. Сопоставьте с большой матрицей в устранении проблем установки; там широко, здесь — двойной контур 2026 и порядок Node 22.
| Основной путь | Лучше когда | Дополнительная приёмка |
|---|---|---|
| Официальный install.sh | Нужно, чтобы установщик обработал Node и типичные ловушки PATH при первом облачном подъёме | Коды выхода, неинтерактивные переменные, цели журналов |
| npm global openclaw@latest | Золотые образы уже содержат Node 22 и должны совпасть с корпоративным зеркалом npm | Абсолютные пути в ProgramArguments plist |
| Симптом 18789 | Вероятное объяснение | Следующий шаг |
|---|---|---|
| Приложение открывается, но ведёт себя по-старому | Присоединение к существующему Gateway | Сравнить время старта PID с mtime конфигурации |
| Пустой Dashboard и CLI тоже не подключается | Конфликт порта или ошибка bind | Поверхностные команды из диагностической лестницы |
| Падает только launchd | Среда или путь токена | Ветка токен launchd |
Сначала решите, какой бинарник владеет RPC Gateway и когда он стартовал, прежде чем обсуждать ритм UI.
Копируя один runbook в Сингапур, Токио, Сеул, Гонконг, Тайбэй и побережья США, держите путь установки в одной строке закупки, а RTT — в другой; дальность не оправдывает пропуск kickstart или чтения журналов.
Финансы часто спрашивают, почему дальние узлы дороже: отвечайте измеримой доступностью и более быстрыми загрузками зависимостей, а не размытыми заявлениями про ИИ, и связывайте экономию с более короткими окнами обслуживания, потому что rebuild заканчивается быстрее.
Безопасность должна фиксировать, добавляют ли SSH-туннели или обратные прокси иные TLS-предположения, чем локальный Mac mini; занесите это в тот же тикет, что и semver-квадрупель, чтобы не повторять спор каждый квартал.
Готовый блок: Node 22, CLI, LaunchAgent и выравнивание /tmp/openclaw
Ниже короткий, удобный для скриншотов и тикетов фрагмент: он классифицирует сбои, а не закрывает каждый угол. Без GUI-сессии сверяйте заметки PATH с headless SSH, вместо дублирования длинного текста здесь.
node -v which node which openclaw openclaw --version openclaw gateway status ls -lt /tmp/openclaw 2>/dev/null | head launchctl list | grep -i openclaw
Заметка:воспроизводимые операции требуют полного вывода команд в тикете, а не устных версий; добавьте хост, пакет AMI и строку аренды для финансового сверения.
openclaw onboard --install-daemon по-прежнему пишет Label, ProgramArguments и ключи среды вместе. После ручного редактирования plist последующий onboard может пропускать ключи недеструктивно, оставляя гибридные поля. Крупные скачки semver или смену порта трактуйте как rebuild: bootout, переустановка демона, затем kickstart вместо одного лишь npm update. Для безнадзорных проб совмещайте cron-пробы.
Читая журналы Gateway под /tmp/openclaw, сравните метку времени первой строки со временем старта из gateway status, прежде чем решать, не применилась ли конфигурация или старый процесс не завершился.
Несколько экспериментальных Gateway на одном хосте требуют раздельных каталогов состояния, диапазонов портов и явного разделения на firewall; иначе коллизии маскируются под semver-дрейф.
Если журналы могут содержать персональные запросы пользователей, зафиксируйте срок хранения и контроль доступа; это поддерживает минимизацию данных при централизованном сборе диагностики.
Шесть шагов от приёмки CLI до аудируемой облачной резидентности
Заморозить четыре отметки:minor Node, openclaw --version, npm prefix -g, метка LaunchAgent.
Выбрать один главный путь установки:install.sh или npm global, явно в тикете.
Выполнить onboard install-daemon и при ошибке приложить полный stderr.
Запустить gateway status и сверить журналы /tmp/openclaw:подтвердить время рождения и адрес bind.
Открыть приложение macOS для проверок шлюза:если всё ещё сломано, вернуться к выравниванию CLI.
Записать строки региона и SKU:близкий пилот против далёкого M4 Pro, согласовано с страницей заказа.
После обслуживания добавьте версию приложения, версию CLI, метку plist и код выхода health как квадрупель в CMDB или теги затрат, чтобы финансы сверяли счета без угадывания ролей хостов.
Ежеквартально на staging репетируйте глаголы отката: закрепить CLI, bootout LaunchAgent, переустановить демон, затем снова выполнить вставляемый блок, пока квадрупель не совпадёт с последним здоровым тикетом; это окупается при ускорении релизов upstream.
Удобные для цитирования ручки: минимум Node, порт по умолчанию, корень журналов, бюджет ложных срабатываний
Минимум Node:следовать заявленному upstream major; если образы отстают, записать дату заката AMI вместо вечной терпимости к дрейфу.
Порт WebSocket по умолчанию:когда в документации меняются дефолты, обновлять plist, списки разрешений firewall и мониторинг вместе.
Корень журналов:подтвердить фактический путь записи, свободное место и права до операций с токеном.
Внимание:вложенная виртуализация или macOS вне матрицы поставщика меняет допущения разбора и не должна быть единственной производственной истиной.
Демо только на ноутбуке обходят контракт между semver приложения, semver CLI, фактами plist и выравниванием журналов. Опора на кнопку починки GUI без фиксации этих полей гарантирует ту же боль каждую неделю обновлений. Домашний DSL и политики сна добавляют структурный шум для постоянных агентов. Для более стабильной автоматизации iOS CI/CD и ИИ-агентов аренда облачного Mac mini у KVMNODE обычно даёт более сильный операционный ответ: эксклюзивный Apple Silicon, прозрачные регионы, полные лестницы конфигурации, гибкие сроки аренды. Детали подключения и заказа — на странице цен и в центре помощи.
Если две недели пилотируете близкий регион, затем переезжаете на далёкий M4 Pro, сохраните оба квадрупеля приёмки, чтобы постмортемы отделяли скорость загрузки от настроек демона.
Когда App Store и npm временно расходятся, заморозьте одну сторону в окне обслуживания вместо полуобновлённой продакшн-среды; полуобновления дают худшие ошибки присоединения и сдвиг меток журналов.
Захват пакетов только после успешной loopback-health; иначе шум tcpdump скрывает несовпадение semver, которое нужно чинить в первую очередь.
Руководителям платформы полезно документировать SLO именно для демона Gateway, чтобы наблюдаемость включала успешные health-пробы и ротацию журналов под /tmp/openclaw, а не только загрузку CPU.
Дополнительно синхронизируйте календарь релизов приложения и обновлений Gateway, чтобы никто случайно не обновил только витрину App Store без согласованного шага CLI.