2026 Обновления OpenClaw, фиксация версий и откат launchctl на арендованной Mac mini ProxyMac
Шлюзы автоматизации стареют «собачьими годами»: минорный semver может перевернуть значения TLS по умолчанию, переименовать флаги CLI или сузить песочницы, которые LaunchAgents считали неизменными. На Mac mini ProxyMac в Гонконге, Японии, Корее, Сингапуре или США операционный контракт прост: предсказуемые перезапуски, аудируемые откаты и health-пробы до того, как клиенты заметят дрейф. Руководство показывает, кто должен держать ворота обновлений (владельцы платформы, а не каждая feature-команда), даёт матрицу до обновления с порогами (свободно на системном томе APFS ≥20 %, доля 5xx webhook за 24 ч <0,5 %), ритуалы снимков + контрольных сумм, упорядоченный танец launchctl bootout / kickstart -k в духе восстановления шлюза, таблицу четырёх стратегий отката, пост-обновленческие хуки к health-пробам и JSONL-логированию, а также FAQ про безнадзорные обновления. GitOps конфигурации и устранение сбоев развёртывания — обязательное чтение в том же окне изменений.
Фиксировать версии, сужать зону поражения, запрещать «latest» в продакшене
Помечайте каждый продакшен-plist точным путём к бинарнику или digest контейнера, на который может сослаться комплаенс. «Всегда тянуть main» годится на дев-ноутбуке; на арендованном железе с выплатами, маршрутизацией моделей или ночным ETL это генератор инцидентов. Держите staging-mini в том же регионе, что и прод, чтобы совпала задержка TLS — в ценах перечислены пять регионов с mini класса M4.
- Семантические lockfile рядом с YAML OpenClaw, чтобы diff показывал намерение.
- Уважать ThrottleInterval: не цеплять обновления быстрее, чем launchd даёт воркерам освободиться.
- Ротация секретов отдельно от бинарных обновлений — свой календарь.
Матрица до обновления
| Сигнал | Зелёный порог | Если красный |
|---|---|---|
| Свободно APFS | ≥20 % на системном томе | Архивировать JSONL, чистить кэш, затем трогать бинарники |
| Доля 5xx webhook (скользящие 24 ч) | <0,5 % | Сначала чинить upstream — обновления маскируют корень |
| Последний код выхода LaunchAgent | 0 на трёх последних рестартах | Читать циклы падений в Unified Logging |
| Смещение часов | <2 с к NTP | После обновления валидаторы JWT/HMAC падают загадочно |
Снимок конфигурации, очередей и кэша моделей с контрольными суммами
Сначала весь каталог ~/Library/Application Support/OpenClaw (имена зависят от установки) в датированный tar на том же томе — копии через SMB в инциденте дают частичные записи. shasum -a 256 для tar и хэш в тикет. Срок хранения согласовать с руководством по логам, чтобы юристы ответили «что сохранили» без форензик-спринта.
git push. Версии вести метаданными рядом с Git-тегом.
Последовательность launchctl: bootout, ожидание, bootstrap, kickstart
Современный macOS награждает терпением. После выгрузки агента ждать, пока launchctl print user/$(id -u)/com.openclaw.gateway не покажет PID, затем ставить новую сборку в версионированный каталог и symlink current. Только потом launchctl bootstrap и launchctl kickstart -k gui/$(id -u)/com.openclaw.gateway. Пропуск ожидания оставляет воркеры на старых областях разделяемой памяти — тот класс багов, что troubleshooting описывает как «работает до вторника».
# пример — замените label
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.openclaw.gateway.plist
sleep 2
# здесь сменить версионированную папку и symlink
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.openclaw.gateway.plist
launchctl kickstart -k gui/$(id -u)/com.openclaw.gateway
Матрица отката: symlink, tar, переобразование
| Стратегия | Время отката | Риск | Когда |
|---|---|---|---|
| Symlink на предыдущий semver-каталог | 30–90 с | Пропущенные миграции БД | Чистые бинарные/API-регрессии |
| Полный tar-восстановление | 3–10 мин | Перезапись летающих файлов очереди | Подозрение на порчу конфигурации |
| Переобразование mini (крайний случай) | 15–45 мин | Человеческая ошибка при restore | Запутывание kext или TCC |
| Региональный failover на вторую mini | ограничено TTL DNS | Split-brain при общей БД | Критический CVE без хотфикса |
Health-хуки и наблюдаемость после обновления
Первые 15 минут после kickstart — синтетические пробы к админ-портам localhost, выборка глубины очереди, исходящие вызовы модели с дешёвым canary-промптом. Алерты вешать на сдвиг p95 >15 % относительно базовой линии до изменения, а не только на жёсткие сбои. Экспортировать структурированные строки с upgrade_from, upgrade_to, change_ticket, чтобы пайплайн логов резал инциденты по релизу.
Вопросы и ответы
Можно ли brew upgrade в окне обслуживания? Только если комплаенс разрешает пути Homebrew в проде; многие клиенты ProxyMac кладут tarball в /opt/openclaw/releases/<semver>.
Миграции до или после нового бинарника? Обратно совместимые — до трафика; разрушительные — двухфазный флаг на несколько дней.
А XPC-хелперы? Запускать в порядке зависимостей у основного plist — граф родитель/ребёнок в восстановлении рестарта.
Почему Mac mini ProxyMac — правильное место для дисциплины обновлений
Apple Silicon M4 mini дают долгоживущие имена хостов, детерминированную производительность и запас, чтобы гонять canary-воркеры рядом с продом при blue/green — без борьбы с шумом гипервизора каждый вторник. Закрепите автоматизацию в HK / JP / KR / SG / US, оставляйте человека в контуре для мажоров, а рутину отдавайте железу, которое сами не стоите в стойку. Для GUI — VNC; если SSH режут прокси, читайте корпоративный CONNECT-гайд той же недели.
Автоматизация на железе, которое можно безопасно обновлять
HK / JP / KR / SG / US · готово к OpenClaw