ИИ и автоматизация 29 апреля 2026 г.

Workspace OpenClaw, openclaw.json и изоляция состояния ~/.openclaw на общем арендованном Mac mini (2026)

VmMac Engineering Team 29 апреля 2026 г. ~21 мин чтения

Платформенные инженеры, которые запускают OpenClaw на одном арендованном Mac mini с Apple Silicon у VmMac, быстро понимают: «работает в моей shell» — это не то же самое, что «работает под launchd для двух сквадов». Хрупкий шов почти никогда не в карте модели — он в корне workspace, закоммиченном контракте openclaw.json и дереве состояния пользователя под ~/.openclaw. Когда staging пишет кеши рядом с прод-токенами или после деплоя дрейфует WorkingDirectory, шлюз читает неверный файл и инцидент выглядит как «регрессия LLM». Матрица 2026 задаёт границы и сочетается с изоляцией launchd staging vs prod, гигиеной секретов и plist и мультиаккаунт-изоляцией, чтобы хосты VmMac в Гонконге, Японии, Корее, Сингапуре и США оставались скучно выровненными.

Начните с установки и деплоя, семантику доступа — в справке, а цены откройте, когда руководство согласно, что дешевле второй mini, чем ещё неделя археологии общего состояния.

Граница workspace: корень репозитория vs runtime checkout

OpenClaw workspace — каталог, который вы checkout для автоматизации: openclaw.json, манифесты skills и локальные обёртки под code review. Всё генерируемое в рантайме — большие кеши, зеркала весов, черновики — вне git, если нет явной политики артефактов.

На VmMac часто без симлинков: ясность важнее хитрости. Если инженеры клонируют в ~/src/openclaw-tenant-a, а launchd всё ещё смотрит на прошломесячный ~/build/openclaw, вы гоняетесь за призраками. Зафиксируйте канонический абсолютный путь для каждого арендатора на той же странице, что и SSH-bastion.

  • Git хранит намерение—дефолты, флаги, аудированные списки инструментов.
  • Диск хранит энтропию—кеши, транскрипты для последующей маскировки, временные экспорты.
  • Plist — клей—окружение, cwd, сессия пользователя, пути логов.

openclaw.json как контракт: версии, ревью, формы секретов

openclaw.json должен читаться как схема API: стабильные ключи, явные дефолты, комментарии только где позволяет диалект JSON. Отклоняйте диффы с встроенными долгоживущими API-ключами — они относятся к хранилищу из гигиены секретов, а не к файлу, который может cherry-pick каждый стажёр.

Тегируйте релизы, чтобы отвечать «какой конфиг крутился в Токио в 03:14» без SSH. Региональный хотфикс: ветка, деплой, мёрж — временные снежинки на shared-хостах переживают авторов.

Ограждение: если двум арендаторам нужны разные allowlist tools, нужны разные файлы или разные пользователи — никогда не переключайте один путь вручную дважды в день.

~/.openclaw и рядом: что нельзя смешивать

Решайте матрицей, что в префиксе home-состояния, а что в workspace.

Артефакт Workspace Home-состояние
Таблицы маршрутов шлюза / зафиксированные манифесты инструментов Да—ревью JSON Нет—избегать split-brain
Сессионные cookie, blob сопряжения устройств Нет—никогда не коммитить Да—жёсткий chmod
Структурированные логи Шаблоны опционально Да—объёмно, с ротацией
Переопределения разработчика Никогда на общих CI-хостах Только личный ноутбук

Вопрос «можно ли удалить ~/.openclaw для сброса?» — ответ из раздела runbook, не импровизация: удаление лечит отравленный кеш и ломает законное сопряжение без шагов экспорта.

Мультиарендаторская матрица на одном Mac mini

VmMac силён в выделенном железе, но финансы иногда требуют шэринга. Ранжируйте честно:

Схема Сила изоляции Операционная нагрузка
Разные физические хосты на арендатора Максимум Минимум драмы
Разные пользователи macOS на одном хосте Высокая Средняя—квоты и дисциплина VNC
Тот же пользователь, другие каталоги Низкая—магнит ошибок Высокая—постоянные аудиты

Если навязана третья строка: хотя бы непересекающиеся метки LaunchAgent, разные localhost-порты и ночная автоматизация с diff активных plist против git. Лучше держаться изоляции staging, пока не одобрят второй mini.

launchd WorkingDirectory, EnvironmentVariables и приоритет путей

WorkingDirectory не декоративен — он задаёт разрешение относительных путей в openclaw.json и загрузку дерева node_modules. Явные EnvironmentVariables для всего, что вы бы экспортировали в ~/.zshrc на ноутбуке. После правок проверяйте launchctl print gui/$UID/com.example.openclaw (подставьте домен).

Тест на запах: если README велит сделать cd перед OpenClaw, plist неполон.

В Гонконге, Японии, Корее, Сингапуре и США держите шаблоны plist идентичными; региональные endpoint вынесите в небольшие env-файлы с абсолютными путями, чтобы диффы в аудите оставались читаемыми.

Runbook инцидента: отравление состояния vs настоящая регрессия модели

  1. Снять pwd работающего шлюза из вывода launchctl print.
  2. Хешировать openclaw.json в этом cwd и сравнить с git-тегом деплоя.
  3. Просмотреть размер и mtime поддерева состояния; искать раздувающиеся SQLite или JSONL.
  4. Остановить новый трафик, дренировать очереди, снять снимок логов.
  5. Смести отравленное состояние в сторону — не удаляя — для постмортема.
  6. Повторить упавший запрос на чистом канареечном VmMac.
  7. Задокументировать, был ли фикс конфигом, диском или моделью, перед закрытием тикета.

Много ложных «просадок качества модели» в 2026 — это на самом деле устаревшие allowlist инструментов или просроченные OAuth refresh-токены в одном дереве состояния — LLM в порядке; проблема в файловой системе.

FAQ: workspace и состояние OpenClaw на арендованном Mac mini

Должен ли openclaw.json жить в git на общем арендованном Mac mini? Да для схемы и несекретных дефолтов, но никогда как единственное место для секретов — сопоставляйте файлы репозитория с одной документированной плоскостью секретов и префиксами состояния по арендаторам, чтобы staging не читал прод-токены с диска.

Что класть в ~/.openclaw и что в checkout workspace? Долговечные локальные кеши машины, сопряжение устройств и чувствительный runtime-материал — под дерево home-состояния; конфигурацию с командным ревью — в workspace; launchd задаёт WorkingDirectory явно.

Как изолировать две команды на одном VmMac без смешивания состояния OpenClaw? Предпочитайте разных пользователей macOS или разные хосты; при необходимости шэринга — непересекающиеся префиксы в стиле OPENCLAW_HOME, непересекающиеся метки LaunchAgent и разные localhost-порты по нашему runbook изоляции staging.

Меняет ли launchd WorkingDirectory, какой openclaw.json читается? Относительные пути разрешаются из WorkingDirectory и окружения пользователя; двусмысленный cwd — главная причина, почему staging читает копии прод workspace — закрепите абсолютные пути в plist после валидации.

Как выровнять хосты в Гонконге, Японии, Корее, Сингапуре и США? Храните одну и ту же git-ревизию openclaw.json, разрешая только намеренные региональные переопределения env; ежемесячно diff plist; отклоняйте ад-хок правки на хостах без тикетов.

Почему второй VmMac Mac mini дешевле, чем операции над общим состоянием

Разнесение арендаторов на другой mini превращает chmod-головоломки в сетевые границы, понятные security. Маржинальная аренда попадает в COGS; маржинальная инженерная неделя форензик-слияний — часто нет.

Если руководство сомневается, покажите число инцидентов за квартал, где корень был «неправильный cwd» или «общий кеш». Если не ноль — физика согласна: нужен был отдельный хост.

Клонируйте состояние, не тайну

Арендуйте второй VmMac Mac mini для staging workspace OpenClaw, чтобы prod ~/.openclaw не видел экспериментальные кеши.