2026 OpenClaw v2026.4.26: CPU шлюза 100 %, перезапуск 3–4 мин, chat.history блокирует старт — матрица отката
После OpenClaw v2026.4.26: CPU 100 %, restart 3–4 мин, RPC недоступен до cold start. chat.history блокирует готовность. Матрица L0–L4. Ссылки: официальная лестница, перезапуск macOS, логи, split brain, откат.
Почему CPU 100 % — не всегда поломка launchd
Боль 1: процесс жив ≠ шлюз готов. Пока chat.history сканирует или сжимает, probe может мигать зелёным, хотя RPC ещё нестабилен. Сверяйте gateway status, логи и каналы.
Боль 2: 3–4 минуты ≠ сломанный launchd. Чаще однопоточный индекс и диск. Сначала; сначала перезапуск.
Боль 3: архив, не rm -rf.
Боль 4: split brain до L3.
Боль 5: retry при 429 — снизить нагрузку.
Боль 6: history и rsync на одном томе.
Полный скан history после апгрейда на одном ядре 100 %.
launchd ждёт exit — не kill без bootout.
L2 для малых, L4 для больших JSONL.
Один командир, протокол L0–L4.
Staging с большим history.
ExitTimeOut из P95.
Post-mortem: du, doctor, слой L.
Pin OpenClaw с plist в одном тикете.
history как рост БД.
Дашборд history + probe.
NAS: апгрейды по очереди.
Вендору — редактированные логи.
После L4 — тест на канал.
Документируйте переход L в change-тикете.
Alert: CPU процесса + disk read.
Ссылка на лестницу 429 после L2.
Два зелёных probe подряд обязательны.
Legal hold может запретить L4.
Квартальный drill L2 быстрее L4.
Принцип матрицы: сначала наблюдать, смягчить конфиг, закрепить пакет, затем трогать данные. Записывайте время старта, хеш вывода команд и вернулись ли probe к приемлемой задержке (цель cold start менее 60 секунд после мер). Не переходите на следующий слой без результата по времени на предыдущем.
L0 только чтение: sample PID, экспорт doctor, корреляция IOPS и строк chat.history. L1 отключает некритичные плагины и снижает параллелизм. L2 задаёт lazyLoad и паузу compaction в согласованное окно. L3 pin 2026.4.25 при документированной регрессии 4.26. L4 — архив поддерева с меткой времени, никогда rm -rf без бэкапа и списка checksum.
Перед L3/L4 сделайте снимки по runbook отката и пакет логов с редактированием — иначе в тикете нельзя сравнить поведение до и после апгрейда и доказать, регрессировал ли 4.26 или вскрыл старую нагрузку history.
Семь шагов: заморозить изменения; воспроизвести зависание с секундомером до двух зелёных probe; L0 закрепить причину в history/index; L1–L2 снизить CPU ниже 40%; L3 pin при конфликте версий; L4 архив с проверкой cold start <60 с; приёмка channels probe и E2E.
Таблица данных — медианы полей; калибруйте алерты у себя. Cold start без L4 регулярно >120 с — change на L2. Поддерево history >5 ГБ — плановый L4 в окне обслуживания.
Матрица L0–L4
Наблюдать → конфиг → пакет → данные. Cold start <60 с.
| Уровень | Сигнал | Действие | Риск |
|---|---|---|---|
| L0 | CPU+history | sample, doctor | Низкий |
| L1 | 180–240с | минимум плагинов | Средний |
| L2 | повтор индекса | lazyLoad | Средний |
| L3 | L2 нет | pin 4.25 | Высокий |
| L4 | >5ГБ | архив | Высокий |
Семь шагов
# v2026.4.26 — gateway CPU / chat.history stall
openclaw --version
openclaw gateway --version
which -a openclaw
openclaw status
openclaw gateway status
openclaw doctor
openclaw logs --since 20m | rg -i 'chat\.history|index|migrate|compact|startup'
# archive history dir, then gateway restart ; pin 2026.4.25 after snapshot- Заморозка
- Воспроизведение
- L0
- L1–L2
- L3
- L4
- Приёмка
Два probe подряд.
Цифры
Медианы — свои замеры.
| Метрика | Набл. | Порог | Дальше |
|---|---|---|---|
| Cold start | 185–240s | >120с | L2 |
| После архива | 35–55s | <60с | compaction |
| history | 2–8 GB | >5ГБ | L4 |
| CPU | 1 ядро 100% | 90с | L0 |
| CLI | 180–240s | launchd | no double kick |
В окне зависания снимите sample на PID шлюза на тридцать секунд и сопоставьте чтение диска со строками chat.history, compact и migrate. Если стек указывает на MCP или handshake канала, идите по официальной лестнице, а не форсируйте L4.
Управление изменениями: pin пакета L3 и архив L4 — разные согласования. Pin без снимка обратим; архив без манифеста — нет. Вставляйте вывод openclaw doctor после каждого слоя в тикет.
Staging с размером history как в проде ловит регрессии 4.26 раньше пользователей. Мини-каталог на ноутбуке не заменяет объёмный тест.
ExitTimeOut в launchd берите из измеренного P95, а не из старых статей.
В post-mortem приложите du history, выжимку doctor и слой L, который снял блокировку.
При IaC для plist шлюза pin OpenClaw в том же тикете, что правки plist — иначе split brain вернётся при автодеплое.
Относитесь к chat.history как к росту БД: квартальный обзор ёмкости, а не только аварийный L4.
Размер history и latency gateway probe — на одном дашборде, чтобы видеть корреляцию до тикетов.
Несколько шлюзов на NAS: сериализуйте крупные апгрейды — параллельные cold start похожи на отказ хранилища.
Вендору — редактированные логи со строками chat.history, не полные каталоги.
После частичного L4 — контролируемый диалог на канал перед трафиком.
Пока gateway probe не стабилен два интервала, держите консервативные rate limits провайдера.
Батарейный Mac mini при долгом индексе — thermal throttle; смотрите powermetrics при разбросе cold start.
Пустой Web UI при зелёном probe: кэш браузера и готовность шлюза — разные вещи.
Держите матрицу в wiki рядом с официальной лестницей — не ищите путь mv L4 в Slack ночью.
Удалённый Mac
history вне сборки.
ionice для rsync.
Не запускайте ad hoc CLI под личным user, пока launchd держит daemon. В post-mortem укажите слой L, du -sh history и была ли пауза compaction — иначе следующий апгрейд повторит тот же трёхминутный restart. Staging с копией prod history ловит регрессии 4.26 раньше пользователей; мини-каталог на ноутбуке не заменяет объёмный тест.
FAQ
L4 без L2? Только авария.
Probe зелёный? лестница.
4.5 JSONL? runbook.
4.25 или 4.23? Сначала 4.25.
В окне зависания снимите sample на PID шлюза и сопоставьте disk read с строками chat.history — если стек указывает на MCP, идите по официальной лестнице, а не сразу на L4.
Управление изменениями: pin OpenClaw и правка plist launchd в одном тикете, иначе split brain вернётся при следующем автодеплое.
L0 только чтение: doctor и логи. L1 убирает лишние плагины и снижает параллелизм. L2 задаёт lazyLoad и паузу compaction в согласованное окно.
L3 pin 2026.4.25 только при регрессии 4.26 в doctor или release notes. L4 — архив с меткой времени и sha256, не rm -rf без манифеста.
Шаг 2: секундомер до двух зелёных probe подряд. После L4 решите re-import или пустой старт до плановой compaction.
Пороги: cold start без L4 >120 с → change L2; поддерево history >5 ГБ → L4 в maintenance.
Удалённый Mac: history вне тома сборки; ExitTimeOut ≥ P95. ionice для rsync на общем NVMe.
Не запускайте ad hoc CLI под личным user, пока launchd держит daemon — двойной индекс частая самоинфликция.
Staging с размером history как в проде ловит 4.26 раньше пользователей.
Тикеты вендору: редактированные логи, не полные каталоги. Legal hold может запретить L4.
После L4: тест-диалог на канал. До двух стабильных probe — консервативные rate limits провайдера.
Mac mini на батарее: длинный индекс и thermal throttle — смотрите powermetrics.
Пустой Web UI при зелёном probe: кэш браузера ≠ готовность шлюза.
Успех: закрыть инцидент 4.26 с документированным слоем L менее чем за два часа.
Аренда SFTPMAC Remote Mac разделяет history и IO сборки и выносит окна апгрейда.
В зависании сопоставьте CPU процесса шлюза и чтение диска со строками chat.history в логах.
Не переустанавливайте launchd до bootout/bootstrap из руководства по перезапуску macOS.
Каждый переход L0-L4 фиксируйте в тикете с временем и хешем вывода команд.
После L4 проверьте cold start менее 60 секунд, затем channels probe и E2E на канал.
Матрица L0–L4 превращает хаос ночного дежурства в измеримые сигналы и осознанный выбор слоя вместо бессмысленного повторного restart.
Self-host: рост history и диск остаются вашей нагрузкой; шлюз и CI на одной машине — риск SLA.
Аренда SFTPMAC Remote Mac разделяет history и IO артефактов заранее.
Два зелёных probe подряд обязательны; один зелёный при индексации обманчив.
Legal hold может запретить L4 — согласуйте с юристами до архива.
Квартальный drill восстановления через L2 дешевле аварийного L4.
Alert на CPU процесса шлюза 90 секунд плюс disk read снижает ложные тревоги.
Web UI пуст при зелёном probe — проверьте кэш браузера отдельно.
Pin OpenClaw и plist в одном change-тикете против split brain.
Staging с большим history ловит регрессии 4.26 раньше продакшена.
Тикеты вендору — редактированные логи, не каталоги history целиком.
Русскоязычным командам полезно держать матрицу в wiki рядом с лестницей диагностики — не искать путь mv L4 в чате во время аварии.
Cold start 185-240 секунд без L4 — повод на L2 по change, а не на бесконечный restart.
Для Docker/VM шлюза смотрите квоту CPU и latency тома — два vCPU объясняют 100% одного ядра.
Статус-страница: различайте «шлюз стартует» и «шлюз готов» — три минуты индекса переносимее для пользователей.
Хранение архива L4: сроки 90/180/365 дней, доступ по ролям, GDPR/152-ФЗ если в history есть ПДн.
Сравните cold start на staging с копией prod history до обвинения 4.26 в регрессии.
MCP-плагины, читающие history при старте, продлевают индекс — отключите их на L1.
Успех: закрыть 4.26 за два часа с задокументированным слоем L.
Аренда SFTPMAC Remote Mac на Apple Silicon разделяет history и IO заранее.
Два зелёных probe подряд — обязательная приёмка; один зелёный при индексации обманчив.
После стабилизации probe держите rate limit провайдера консервативным 48 часов.
Не смешивайте смену модели и L4 в одном тикете — иначе post-mortem неразличим.
Зафиксируйте du history, doctor и версию npm в начале инцидента.
При split brain сначала выровняйте which openclaw и plist, потом kickstart.
Квартальный drill L2 укрепляет on-call дешевле ночного L4.
Шаг два чаще всего проваливается на одном зелёном probe: секундомер до двух зелёных подряд, не до первого.
После L4 зафиксируйте, будет ли re-import тредов или пустой старт до плановой compaction.
Медианы в таблице — для планирования алертов; переснимите на своём железе перед продакшеном.
На удалённом Mac держите history и workspace вне тома CI; ExitTimeOut не ниже P95 cold start.
ionice для rsync/SFTP на общем NVMe — иначе ночной рестарт зелёный, утром каналы красные.
Не запускайте openclaw CLI под личным пользователем, пока launchd ведёт daemon — двойной индекс типичен.
Вопрос: пропустить L2 и сразу L4? Только авария со снимком; в штате — L1/L2.
Probe зелёный, чат медленный? Cold start >120 с — лестница для модели и канала.
Связь с JSONL 4.5: runbook сессий + эта статья про блокировку индекса при старте.
Pin 4.25 или 4.23? Сначала 4.25, tarball на откат.
Суть не в «ещё одном restart», а в замерах и выборе L0–L4.
Self-host: растущий history и диск — ваша постоянная нагрузка.
Аренда SFTPMAC Remote Mac разделяет history и IO артефактов. Тарифы на главной.
Политика on-call для команды: один командир инцидента, один протоколист переходов L0–L4; заморозить посторонние изменения конфигурации, пока gateway probe и channels probe не стабилизируются два интервала подряд.
Квартальные учения, восстанавливающие сервис только через L2 менее чем за шестьдесят секунд, обходятся заметно дешевле, чем ночной аварийный L4 в продакшене без снимков и без манифеста архива.
Если вы долго держите OpenClaw на Apple Silicon и раздаёте артефакты сборки с той же машины, аренда SFTPMAC Remote Mac заранее разделяет тома и выносит окна апгрейда — history и rsync перестают делить один NVMe.
Держите tarball последней рабочей версии OpenClaw и снимок config рядом с архивом history: откат тогда осознанный pin плюс при необходимости выборочный re-import, а не хаотичная переустановка под давлением ночного дежурства.
Итог и SFTPMAC Remote Mac
Замеры CPU, мёртвого времени перезапуска и блокировки chat.history, затем осознанный выбор L0–L4 — не бесконечный «ещё один restart».
Self-host: рост history, планирование диска и окна изменений остаются на вашей стороне; шлюз на одной машине с CI превращает зависание cold start в риск для SLA поставки.
Аренда SFTPMAC Remote Mac заранее разделяет history и IO артефактов и выносит окна апгрейда OpenClaw. Смотрите тарифы и продолжайте серию материалов в блоге.