2026 OpenClaw sessions_spawn и сессии песочницы: диагностика на Mac cloud
Шлюз слушает, но падают дочерние процессы или шаги в песочнице — чаще из‑за рабочего каталога, пользователя, прав или политики. См. первый деплой, типичные ошибки, укрепление продакшена.
Содержание
1. Три паттерна: шлюз работает — не значит, что spawn здоров
После первого деплоя и типичных ошибок главная путаница — процесс жив, а сессии или команды в песочнице падают. Строки с sessions_spawn относятся к другому слою, чем прослушивание порта 18789. Вместе с укреплением продакшена проще держать политику и пути в одной таблице.
- Сдвиг cwd: интерактивный SSH в
~/project, а launchd стартует из/или чужого home. Дочерние процессы наследуют пустой или нес writable cwd. APFS по умолчанию без учёта регистра — пути с Linux дают скрытые коллизии. - UID и владелец: кэш или репозиторий с чужим владельцем даёт
EACCESв песочнице. Ручной запуск и launchd идут под разными пользователями. - Политика песочницы: жёсткие egress/подпроцессы блокируют легитимную автоматизацию, хотя dashboard отвечает.
Метрика: после холодного старта только через launchd измерьте время до первого успешного spawn. Если SSH всё чинит — проблема в наследовании среды или WorkingDirectory.
2. Таблица: сессия / шлюз / порт
Колонка «Обычно нет» снижает ложные треки: chmod редко лечит Unauthorized; песочница не поможет, если процесс падает до слоя сессий.
| Симптом | Сначала | Проверка | Обычно нет |
|---|---|---|---|
| doctor ок, spawn на задачах | Сессия/песочница/путь | минимальное репро, проверить cwd | только порт 18789 |
| Unauthorized в клиенте | Аутентификация шлюза | openclaw config get для gateway.auth | chmod (кроме чтения token-файла) |
| шлюз сразу падает | Порт/зависимости | lsof -i :18789, память, Node | логика песочницы до listen |
| падают только типы задач | Политика/allowlist | временно ослабить и сравнить | сначала плагин канала |
| после обновления | Миграция ключей | структурный diff openclaw.json | «случайная» нестабильность |
3. Пять шагов плюс регрессия
Тот же Unix-пользователь, что и в продакшене.
- Вход: задокументировать launchd или ручной старт; перед переключением
openclaw gateway stopиlsof -i :18789. - Минимальное репро: крошечный пример сессии в prod-
cwd. Расхождение SSH vs launchd указывает на env. - Владение:
ls -leи ACL; при необходимости пересоздать state-каталог с одним владельцем. - Логи: отдельно логи шлюза и unified log (пример ниже).
- Diff: после апгрейда сравнить sandbox/env блоки.
- Регрессия: doctor → минимальная сессия → реальная нагрузка → суточный soak.
WorkingDirectory — иначе cwd детей пустой.На Mac cloud фиксируйте вход+cwd+владельца в том же runbook, что и CI.
4. Измеримые сигналы
① PATH и HOME у launchd и login shell различаются. ② APFS и смешанные пути Linux/macOS. ③ Память: кратковременный RSS >2 ГиБ может дать OOM (код 137), похожий на spawn-ошибку. ④ Два шлюза на одном state — гонки. ⑤ Аудит: каждая новая строгая политика песочницы — строка в журнале изменений.
5. К нативной базе сессий macOS
Контейнеры добавляют тома и сигналы — два слоя отладки. Ноутбуки спят и меняют пути. Универсальные Linux VPS редко описывают launchd и владение файлами.
Для стабильного UID, записываемых каталогов состояния и 24/7 выделенный Mac cloud проще, чем стек абстракций.
Аренда VPSMAC M4 с версионируемыми plist, фиксированным пользователем и SLO на p95 первого успешного spawn после перезагрузки — не только HTTP на 18789.
6. FAQ
Падает только spawn, шлюз жив
Сначала cwd, пользователь, владелец; сравнить pwd с WorkingDirectory в plist; diff env SSH и launchd.
Только после обновления
Переименованные ключи, более строгие умолчания — diff openclaw.json и таблица OPENCLAW_* из релиз-нот.
Несколько инстансов
Не делить один каталог состояния; разделять корни конфигов, порты или хосты.