2026OpenClawsplit brainlastTouchedVersiongateway status --deepудалённый Mac

2026 OpenClaw после обновления: split-brain, meta.lastTouchedVersion, gateway status --deep и выравнивание PATH

Официальный troubleshooting описывает newer-config guard: новый билд ставит meta.lastTouchedVersion в openclaw.json, а ваша оболочка всё ещё резолвит старый бинарник openclaw. Тогда gateway restart или gateway install падают или выглядят как no-op. Это не remote-дрейф (неверный gateway.remote.url). Здесь — двойные установки, метаданные launchd/systemd и gateway status --deep. Ссылки: pairing, install, регрессия 4.5, аудит 4.14, doctor 4.x.

OpenClawsplit brainPATHdoctor2026
OpenClaw split brain upgrade lastTouchedVersion shlyuz deep PATH

Боли: почему restart «врёт»

Боль 1: тихий штамп схемы. Новый билд переписывает openclaw.json при первом запуске; JSON выглядит валидным, но мутации сервиса стабильно падают в продакшене, потому что старый бинарник видит более новый stamp и намеренно останавливается.

Боль 2: шизофрения PATH. Homebrew, глобальный npm и ручные symlink разводят which openclaw и реальный бинарник launchd, часто бесшумно.

Боль 3: дубли супервизоров. Deep перечисляет хвосты экспериментов; doctor и install конфликтуют, пока дубли живы.

Боль 4: ложный след pairing. Сначала версии и PATH, потом pairing.

Боль 5: remote URL. Если gateway.remote.url указывает на выведенный хост, симптом похож; разделяйте через which -a.

Слои: отказ старого бинарника vs реальная порча

L0 зафиксируйте openclaw --version и сводку gateway status.

L1 сравните meta.lastTouchedVersion с мажорной линией CLI; если файл новее, остановите мутации со старого бинарника.

L2 выполните openclaw gateway status --deep и сохраните подсказки по системным юнитам.

L3 после выравнивания PATH — openclaw doctor; doctor --fix только на совпадающем бинарнике и с контекстом аудита 4.14.

L4 зелёный RPC перед channels status --probe; иначе каналы и тихий Telegram.

Поля тикета: минимальный пакет доказательств

Две строки версий, пути Config(cli)/service, meta.lastTouchedVersion, which -a openclaw, имена юнитов, выдержка deep, почасовые дельты в окне апгрейда.

На фермах удалённых Mac добавьте CPU и IO, чтобы не спутать голод диска с RPC; см. двухэтапный CI.

Матрица решений

СигнатураСмыслПервый шагИзбегать
Отказ мутацииlastTouchedVersion новее CLIPATH на новый dist, затем install --forcedoctor --fix на старом бинарнике
Deep показывает дублистарые plist/systemdОтключить лишнее по подсказкамдва launchd параллельно
Только пути Config различаютсяHOME driftВыровнять EnvironmentFile и shellJSON без reload
Красный RPC и плохой URLremoteСтатья remotepairing при плохом URL

Семь шагов

  1. Заморозить gateway status и --deep (маскирование).
  2. Список which -a openclaw и целей symlink.
  3. Выровнять PATH shell и супервизора; абсолютные пути в plist при необходимости.
  4. Проверить версии до мутаций.
  5. openclaw gateway install --force и холодный рестарт.
  6. Цикл doctor до нуля блокеров.
  7. Базовая линия: p95 RPC и успешное действие UI.

Пример

which -a openclaw
openclaw --version
openclaw gateway status --deep
openclaw doctor

Углубление: эксплуатация, комплаенс, наблюдаемость

Журнал PATH после brew

Каждый апгрейд Homebrew может сдвинуть Cellar, пока launchd экспортирует старый PATH. Фиксируйте строку из plist после каждого касания OpenClaw и сравнивайте с which openclaw из неинтерактивной оболочки. Без журнала split-brain возвращается при успешных логах пакетного менеджера.

Логи без токенов в открытом виде

В тикетах только префиксы или хэши токенов, не полные значения в мессенджерах. Для GDPR фиксируйте, какие пайплайны могут нести персональные данные. В архивах deep маскируйте домашние пути.

Дубли launchd

Два лейбла с одним бинарём создают гонку портов. Deep должен перечислить оба; выберите канонический лейбл и отключите второй с меткой времени. Откат должен восстановить один источник правды.

systemd user vs system

Пользовательский юнит умирает без linger. Split-brain возникает, если ждут системные пути. Проверьте loginctl и согласуйте unit с реальным аккаунтом установки.

doctor --fix на старом бинаре

Хардненинг задаёт порядок трансформаций. Старый бинарь может частично записать то, что новый отвергнет. Сначала PATH на свежий build и релиз-ноты аудита.

Хаос-учение PATH

Временно подставьте wrapper с высоким приоритетом и измерьте время до алерта. Документируйте тексты алертов, чтобы on-call не гадал.

Постмортем с путём

Явно указывайте разрешённый путь бинаря, не только семвер. Добавляйте diff plist. Это снижает племенные знания.

Ночной сравнение PATH

Сравнивайте путь из неинтерактивной оболочки с PATH супервизора. Малые расхождения — ранний сигнал. Добавьте лёгкую RPC-пробу из того же класса shell.

npm vs brew порядок

Если npm раньше brew, глобальный openclaw часто побеждает. Задайте канонический порядок в IaC для продакшена.

Digest образа

Пиньте digest контейнера и храните рядом версию openclaw и meta-штамп. Базовые образы не должны крутиться незаметно.

WSL и натив

Не два супервизора для одного шлюза. Документируйте владельца апгрейдов. На Windows экспортируйте планировщик.

Шторм reconnect

Клиенты открывают WebSocket одновременно; без backoff растёт CPU при верном PATH. Симулируйте отдельно от split-brain.

RACI

Владелец PATH и владелец unit-файлов. Параллельные reload без ролей оставляют противоречия.

Экономика Mac

Ночные смены только за PATH окупают аренду управляемого Mac быстрее героизма. Токены остаются у вас.

Чеклист апгрейда

Строка: подтверждён путь бинаря до объявления успеха. Предотвращает сюрпризы.

Аудит 4.14

Читайте аудит до агрессивных флагов doctor. Ведите таблицу совместимости минорных линий.

Тишина Telegram

Зелёный RPC и молчание каналов — runbook Telegram, не PATH.

Pairing после L1

Pairing не чинит бинарный дрейф. Сначала официальная лестница статуса.

Ретеншн снимков

Первые строки gateway status после апгрейда с хэшем для дифф между релизами.

IO vs RPC

rsync может насытить диск и замедлить RPC без meta. Коррелируйте iowait.

Blue-green путей

Атомарно переключайте symlink и plist в одной транзакции для /opt версий.

Обучение

Тренируйте чтение which -a в каждом тикете.

Tarball отката

Заранее определите последнюю хорошую версию и время отката.

Кардинальность

Не раздувайте лейблы метрик per-user.

SLA вендора

Вендор не заменяет внутренние проверки PATH.

Тикет-коммуникация

Скриншоты deep и plist PATH в одном комментарии.

LaunchAgent vs Daemon

Разные контексты root и user дают классический split-brain при апгрейдах в терминале.

CI runner

PATH раннера должен соответствовать launchd на цели при restart из пайплайна.

Wiki без пустых слов

Каждая рекомендация — тикет с owner и сроком.

Часовые пояса

Сериализуйте reload между командами.

Canary dist

Сначала малый хост, 24 часа deep, затем широкий rollout.

Видео и Git

Видео дополняет, команды живут в репозитории.

Ротация токенов

Не накладывайте на бинарный апгрейд в один уикенд без нужды.

mtime vs лог

Сравните время файла конфигурации с отказами сервиса.

Гейт закрытия

Три зелёные пробы из двух сетей и успешный UI-клик.

Ansible guard

Идемпотентная проверка ожидаемого абсолютного пути openclaw.

Алерты

Имена алертов должны отличать skew PATH от реальной RPC-аварии.

Point release smoke

После macOS patch перезапустите unit и сравните пути до DNS.

Хэш JSON

После ротации токенов сохраняйте хэш JSON для споров > фактов.

On-call роли

Наблюдатель, мутатор, approver разделены.

Чеклисты

Короткие списки в инфра-репо лучше длинных статей без шагов.

Финансы

Свяжите минуты простоя с on-call стоимостью для обоснования аренды.

Security сроки логов

Согласуйте хранение deep-логов без персональных данных.

Квартальный откат

Репетируйте откат на предыдущий dist с таймером.

Канонический префикс

Одна строка в репо: истинный dist для прода.

Корпоративный прокси

Проверяйте checksum скачанного бинаря после прокси.

Hostname

Согласуйте hostname в plist с мониторингом.

Keychain

Документируйте очистку старых секретов UI после ротации.

Staging prod

Не смешивайте plist staging на прод.

Длинные пути

Проверяйте лимиты длины путей Cellar.

Rosetta

Не путайте arm64 и x86_64 в PATH на Apple Silicon.

Node версия

Согласуйте Node в plist с CLI если openclaw зависит от Node.

Ручные symlink

Каждый symlink в /usr/local/bin требует тикета.

Plist diff CI

Пайплайн падает при скрытом изменении PATH.

Бэкап перед force

Всегда бэкап openclaw.json и credentials перед install --force.

Металл и пропускная способность

На Apple Silicon важно понимать, что два разных бинаря arm64 и x86_64 под Rosetta могут сосуществовать в разных префиксах; если plist указывает на x86_64, а оператор запускает arm64 в терминале, вы увидите расхождение версий без явной ошибки сети. Документируйте архитектуру в каждом хост-профиле и добавьте в ночной чек контрольную сумму бинаря, а не только строку версии.

Лимиты длины пути

Очень глубокие пути в Cellar иногда ломают старые скрипты деплоя, которые обрезают строки; визуально кажется, что openclaw «пропал», хотя на самом деле symlink повреждён. Проверяйте длину пути и корректность symlink после каждого крупного обновления macOS.

Корпоративный прокси и артефакты

Если бинарь скачивается через кэширующий прокси, убедитесь, что контрольная сумма совпадает с ожидаемой; иначе вы можете получить частично загруженный файл, который ведёт себя как старая версия, хотя метаданные пакета уже новые.

Разделение staging и production

Копирование plist из staging на прод без пересмотра PATH — частый источник split-brain. Запретите такие шаблоны в ревью инфраструктуры и требуйте отдельные канонические пути для каждой среды.

Keychain и UI-секреты

macOS может хранить старые токены в связке ключей для GUI, пока launchd читает новые из файла; это не всегда split-brain по бинарю, но симптомы схожи. Документируйте шаг очистки или перевыпуска секретов для UI после сервисных изменений.

Согласованность hostname

Если мониторинг стучится на одно имя, а plist ссылается на другое локальное имя, RPC-пробы могут быть зелёными в одном контексте и красными в другом. Выровняйте имена до разбора meta.lastTouchedVersion.

Финансовая модель on-call

Переведите минуты простоя и количество ночных перезапусков в деньги; аренда удалённого Mac с готовой observability часто дешевле, чем постоянные авралы без автоматизации PATH.

Короткие чеклисты в Git

Длинные вики-статьи без исполняемых шагов не спасают при инциденте. Держите один экран чеклиста рядом с репозиторием инфраструктуры и обновляйте его после каждого постмортема.

Роли в эскалации

Разделите наблюдателя, мутатора и approver для продакшн-reload; это снижает риск одновременных правок plist и JSON, которые потом невозможно воспроизвести.

Хэш JSON после ротации

После смены токенов сразу сохраните хэш релевантного JSON и строку версии openclaw; споры о том, «что именно читал демон», станут короче и фактологичнее.

Дымовой тест после point release

После патча macOS перезапустите ту же unit, снимите свежий gateway status и сравните пути до любых изменений DNS или сертификатов; так вы отделяете платформенный дрейф от split-brain.

Именование алертов

Называйте алерты так, чтобы дежурный сразу видел: это skew PATH, это провал install --force или это реальная недоступность RPC; иначе каждый инцидент начинается с нулевой гипотезы.

Идемпотентные проверки в Ansible

Закодируйте ожидаемый абсолютный путь openclaw как обязательное условие успеха плейбука; любой дрейф должен валить прогон до продакшена, а не маскироваться зелёными задачами.

Гейт закрытия тикета

Требуйте три зелёные RPC-пробы из двух независимых сетей и один успешный UI-жест перед закрытием; субъективное «кажется работает» после правки PATH недопустимо.

Форензика mtime и логов

Сравните время модификации openclaw.json с временными метками отказов сервиса; расхождения намекают на ручные копии или восстановление из бэкапа без согласованного бинаря.

Декуплинг ротации токенов

Не совмещайте массовую ротацию секретов и бинарный апгрейд в один уикенд без крайней необходимости; иначе журналы перестают однозначно указывать первопричину.

Видео и машиночитаемый runbook

Короткие видео полезны для онбординга, но исполняемые команды должны жить в Git рядом с версией; иначе знание уезжает в личные заметки.

Canary для новых dist

Сначала выкатывайте новый префикс dist на малой группе хостов, собирайте deep сутки, затем расширяйте; это ловит редкие конфликты plist, которые не видны на одной машине.

Передача между часовыми поясами

Сериализуйте reload между командами в разных регионах или используйте явную блокировку изменений, чтобы не получить два несовместимых plist в одну минуту.

Wiki без пустых лозунгов

Каждая рекомендация должна иметь тикет, владельца и срок; иначе страница «важно следить за PATH» не меняет поведение команд.

CI runner и целевой launchd

PATH self-hosted runner должен соответствовать тому, что реально видит launchd на удалённом Mac при удалённом restart; сравнивайте после каждого обновления секретов или образа runner.

LaunchAgent против LaunchDaemon

Пользовательские агенты и системные демоны имеют разные контексты HOME и PATH; классический split-brain возникает, когда апгрейд делают в пользовательской сессии, а сервис крутится как root с другим префиксом.

Коммуникация в тикете

Требуйте в одном комментарии скриншот deep и фрагмент plist с PATH; без этого инженеры спорят разными фактами.

SLA вендора

Аппаратный SLA не заменяет внутренние проверки разрешённого пути бинаря; документируйте, какие метрики остаются вашей ответственностью даже при аренде железа.

Кардинальность метрик

Не раздувайте кардинальность метрик per-user на каждой временной серии; держите среду и мажорную версию, иначе стоимость хранения съест бюджет без диагностической отдачи.

Tarball отката

Заранее определите последнюю известную хорошую версию пакета и измерьте время отката; при стрессе split-brain это сокращает среднее время восстановления.

Обучение чтению which -a

Регулярно тренируйте команду различать семантическую версию и фактический путь на диске; это дешёвый навык, который предотвращает дорогие ночные расследования.

Blue-green для путей

При версионированных каталогах в /opt переключайте symlink и обновляйте plist в одной транзакции, чтобы не оставить окно, где сервис указывает на смесь старого и нового.

IO против RPC

Тяжёлый rsync артефактов может поднять iowait и задержать RPC без изменения meta.lastTouchedVersion; коррелируйте дисковые метрики, прежде чем крутить PATH.

Ретеншн снимков

Храните первые строки gateway status после апгрейда с хэшем для сравнения релизов без дублирования секретов в долгоживущих логах.

Pairing только после зелёного L1

Pairing решает идентичность устройства, а не рассинхрон бинарников; не тратьте шаги onboarding, пока PATH и версии не согласованы.

Тишина Telegram

Если RPC зелёный, а каналы молчат, следуйте runbook Telegram и каналов, а не возвращайтесь к переустановке PATH — иначе вы создадите новый дрейф.

Аудит 4.14 перед doctor --fix

Агрессивные флаги doctor на несовместимой минорной линии могут оставить JSON в частично записанном состоянии; читайте материалы аудита и внутреннюю таблицу совместимости.

Чеклист апгрейда

Добавьте строку «разрешённый путь бинаря подтверждён» перед объявлением успеха; это простой ритуал, который отсекает большинство сюрпризов split-brain.

Экономика ночных смен

Если инженеры ночами только выравнивают PATH и plist, сравните стоимость часов с арендой управляемого удалённого Mac, где observability и единый супервизор уже базовые.

RACI для PATH и unit-файлов

Назначьте владельцев строк PATH и файлов launchd/systemd; параллельные правки без ролей почти гарантируют противоречивые reload.

Шторм переподключений

Симулируйте массовое переподключение WebSocket после короткого падения; без backoff CPU может всплеснуть даже при корректном PATH, и это не следует путать с бинарным конфликтом.

WSL и Windows

Не позволяйте двум сторонам Windows одновременно владеть одним шлюзом; экспортируйте задания планировщика и сравните с официальным runbook.

Digest образа контейнера

Фиксируйте digest вместе с версией openclaw и meta-штампом, чтобы базовые обновления образа не меняли бинарь незаметно для команды.

Порядок npm и brew

Если npm стоит раньше brew в PATH, глобальный openclaw может побеждать brew-ссылку; закрепите порядок в конфигурации для продакшн-хостов.

Ночной контроль PATH

Сравнивайте nightly путь из неинтерактивной оболочки с PATH из супервизора и добавьте лёгкую RPC-пробу из того же класса автоматизации.

Постмортем с путём

Каждый постмортем обязан содержать полный путь бинаря и, по возможности, diff plist; это снижает повторяемость инцидентов на пустых обсуждениях версий.

Хаос-учение PATH

Периодически подсовывайте wrapper с высоким приоритетом и проверяйте, срабатывает ли мониторинг; без учений команды переоценивают зрелость наблюдаемости.

doctor --fix на старом бинаре

Старый бинарь может применить частичные трансформации, которые новый отклонит; сначала выровняйте PATH, затем читайте релиз-ноты безопасности.

systemd user и linger

Пользовательский юнит без linger исчезает с сессией; не интерпретируйте это как порчу JSON, пока не проверите контекст учётной записи.

Дубли launchd

Два лейбла на один бинарь создают гонку; выберите канонический, отключите второй документированно и обеспечьте откат одной кнопкой.

Логи без секретов

Маскируйте домашние каталоги и токены в архивах deep; это снижает риск GDPR и утечек при шаринге тикетов.

Связанные материалы

Remote: матрица. Pairing: runbook. Install: гайд.

Ноутбук, сон и несколько менеджеров пакетов раздувают дисперсию; аренда всегда включённого удалённого Mac с управляемым шлюзом часто снижает совокупную стоимость для 7x24 и файловых пайплайнов, сохраняя ваши токены и runbook у себя и упрощая наблюдаемость.

FAQ

Хватит ли переустановки?

Только после очистки PATH и дубликатов; иначе переустановка снова привяжет неверный бинарник и цикл повторится.

Docker и bare metal?

Один паттерн супервизии; deep должен показать канонический путь до возврата продуктивного трафика.

Зачем SFTPMAC?

Единая бинарная правда, стабильный вход и колокализованные артефактные пайплайны снижают дрейф PATH/plist, а токены и политики остаются у вас, с более простым сбором доказательств для аудита.