AI и автоматизация 22 апреля 2026

Дрейф npm peer-зависимостей OpenClaw и чистая пересборка на облачном Mac 2026: остановить ERESOLVE на шлюзах Apple Silicon MacLogin

MacLogin команда AI и автоматизации 22 апреля 2026 около 15 мин

Если npm install на мини MacLogin краснеет после мелкого бампа плагина, npm редко сломана. Почти всегда это дрейф peer: опциональные peer, дубли мажоров, hoist, расходящийся с документированной базой Node 22. Этот гайд апреля 2026 ведёт через снимок, удаление, npm ci, doctor, launchd в HK/JP/KR/SG/US без снежинок на хосте. Матрица симптомов, дисковая математика, FAQ для читателей рунбука doctor.

install.sh против npm -g, безголовый онбординг, цены, справка, VNC, хаб OpenClaw, бэкап состояния, катовер.

Почему peer болит на общих мини

Арендованные мини копят 3–7 параллельных экспериментов в ~/.npm. Незавершённый npm link ломает hoisting.

  • Чужой --legacy-peer-deps отравляет следующий install.
  • Офлайн-зеркало отстаёт на 24–72 часа.
  • LaunchAgents перезапускаются до сброса логов.
Диск: минимум 18 ГБ свободно под node_modules перед npm ci.

Матрица симптомов

СимптомКореньМитигацияПроверка
ERESOLVE при стартеКонфликт мажоров плагиновЗакрепить родителяnpm explain
Тихий exit 1Нет опционального peernpm ci с devopenclaw doctor
Петли hot reloadЧастичная установкаrm -rf node_modulesdiskutil + df

7 шагов чистой пересборки

  1. Снимок ~/.openclaw.
  2. Остановить LaunchAgent 15 с.
  3. Удалить деревья по политике.
  4. npm cache verify.
  5. npm ci с нужным optional.
  6. openclaw doctor --json.
  7. Перезапуск launchd и 5 curl health.
Внимание: не смешивать pnpm и npm в одном префиксе.

Политика lockfile и паритет CI

Коммитьте package-lock.json в ту же ветку, что и шлюз. CI по возможности запускает npm ci на macOS runner; только Linux пропускает optional, которые macOS разрешает иначе — около 12% апрельских тикетов MacLogin 2026.

Добавьте барьер слияния: для профиля шлюза npm ls --all --omit=dev с ненулевым кодом выхода — провал, даже если dev-установки выглядели зелёными. Плюс еженедельная задача на самом арендованном мини с тем же командным рядом, чтобы поймать дрейф между образом CI и разметкой APFS до того, как launchd перезапустит сервис.

overrides, bundledDependencies и дисциплина engines

Когда peer-конфликт, тянутся к флагам. На хостах MacLogin предпочитайте декларативные правки, переживающие передачу: overrides в package.json (владелец и срок в тикете), bundledDependencies для крошечных вендорских шимов, которые нужно отгрузить дословно, и диапазоны engines.npm / engines.node под базовую линию Node 22 из ваших runbook.

  • Аудит overrides: каждый override называет CVE, регресс или upstream-задачу; пустые overrides ради зелёного убираются на следующей зачистке.
  • Bundled-зависимости: только пакеты, которые можно легально редистрибутить и чью целостность вы зафиксировали в тикете.
  • Приватные registry: если зеркала Verdaccio или Artifactory перестраивают метаданные, зафиксируйте версию зеркала и приложите вывод npm view к bump lockfile.
  • Монорепо и workspace: у шлюзов объявите границы npx --no-install, чтобы случайный npm link из соседних пакетов не переписал peer-граф в рантайме.
Ограждение engines: включите engine-strict=true в проектном .npmrc префикса шлюза, когда все подтвердили одинаковый минор Node; расхождение миноров — скрытая причина peer ок в CI и не ок на мини.

Поля шаблона передачи

В заявке на изменение укажите: хеш lockfile до/после, выдержки npm explain по каждому конфликтующему пакету, diff JSON doctor и путь plist LaunchAgent, который перезапускали. Security по этим полям отделяет временный долг от сдвига политики.

Дисковый бюджет node_modules

Еженедельно du -sh ~/.openclaw/**/node_modules. Сумма свыше 9 ГБ — плановая пересборка; чистка _cacache с TTL 7 дней.

Ворота doctor до launchd

JSON doctor — артефакт релиза. Более 2 новых предупреждений без владельца — отклонять. См. катовер.

FAQ

--force? Только одноразовые клоны.

HK и US Node? Одинаковый LTS-минор из справки.

MacLogin удалит node_modules? Аварийный сброс да; рутина в вашем runbook.

Когда npm overrides безопаснее, чем --legacy-peer-deps? overrides проходят ревью, версионируются и видны в git blame. legacy-флаги прячутся в истории shell и пропадают, когда следующий инженер запускает простой npm install — на общих арендованных мини их запрещают, кроме одноразовых каталогов.

Mac mini M4

Быстрый npm, unified memory для TS при переустановке. Мультирегион снижает искажение tarball. Диск — цены.

Пересборка OpenClaw на узле под npm-граф

Установки с воротами doctor на MacLogin Apple Silicon HK/JP/KR/SG/US.