Аудитория: разработчики и DevOps, которые гоняют OpenClaw и тяжёлые загрузки моделей на удалённом Mac (общий CI-раннер или выделенный шлюз). Ключевые слова: OpenClaw, удалённый Mac, кеш моделей, стратегия очистки, автоматизация. Этот HowTo логично читать вместе с обзором автоматизации и ускорения pull, health check шлюза и LaunchAgent и стратегией кешей для CI. Полный список материалов — в разделе блога; базовые ответы и сценарии — в центре помощи (просмотр без входа).

На общих Apple Silicon-узлах типичная авария выглядит одинаково: ночью кто-то стянул новый чекпоинт, диск заполнился до предела, утром пайплайны сыпятся в ENOSPC, а symlink на внешний том «сломался» после перезагрузки из‑за другого имени в /Volumes. Ниже — воспроизводимая схема: один канонический путь для job’ов, физическое многоуровневое хранение, окно очистки через LaunchAgent и явные пороги диска, чтобы автоматизация оставалась предсказуемой неделю за неделей.

Предусловия и разделение среды

Начните с сервисной учётной записи macOS (не общего «админского» логина), под которой крутятся LaunchAgent и SSH-сессии CI: так проще согласовать umask, владельцев каталогов и переменные launchd. Даже на одном физическом SSD заранее опишите два логических уровня: горячий — низкая задержка чтения мелких шардов, тёплый — дешёвый объём для архивов и редких весов.

Зафиксируйте все переменные, которые ваша сборка OpenClaw и рантайм моделей читают из окружения: часто это домашний конфиг плюс каталоги вроде HF_HOME, OLLAMA_MODELS или аналоги для llama.cpp — сверяйте имена с гайдом по установке и типичным сбоям, чтобы у коллег дерево каталогов совпадало побайтно.

  1. Закрепите Node 22+ и semver OpenClaw; выпишите их во внутренний runbook.
  2. Создайте ~/Library/Logs/OpenClawCache/ с правами 755 для сервисного пользователя.
  3. Вынесите переменные кеша в EnvironmentVariables plist — без секретов в Git.
  4. Проверьте diskutil apfs list и стабильность точек монтирования после reboot (избегайте «плавающих» имён вроде Untitled).

Пути кеша и схема многоуровневого хранения

Выберите один канонический путь, который всегда используют скрипты CI (например ~/.openclaw/cache/models). Реальные блобы держите в корнях уровней, например /Volumes/FastSSD/oc-models и /Volumes/BulkDisk/oc-models-archive. Каталог по каноническому пути замените symlink на горячий том — тогда в pipeline не нужно хардкодить буквы дисков.

# Пример: канонический путь → быстрый том (сначала остановите задачи OpenClaw)
mkdir -p "/Volumes/FastSSD/oc-models"
rm -rf "$HOME/.openclaw/cache/models"   # сделайте бэкап, если это был каталог
ln -s "/Volumes/FastSSD/oc-models" "$HOME/.openclaw/cache/models"
readlink -f "$HOME/.openclaw/cache/models"

Перенос с тёплого на горячий уровень выполняйте rsync -a --partial --inplace или атомарным mv в пределах одного тома. Обратная демоция — только после фиксации контрольных сумм или манифеста версии.

Решение Горячий уровень (внутренний) Тёплый уровень (внешний / архив)
Цель по задержке Низкая p95 на мелких чтениях Допустимы редкие pull
Symlink с канонического пути По умолчанию для активных моделей Только если горячий том заполнен
Риск мультитенантного раннера Отдельный symlink на пользователя Орг. зеркало только для чтения

Чеклист структуры кеша

  • Symlink существует после холодной перезагрузки (проверка readlink в префлайте CI).
  • Временные и финальные файлы на одном томе, чтобы не ловить ошибки cross-device rename.
  • Имена lockfile/манифеста привязаны к пинам версий — скрипты очистки знают эти файлы.
  • Деревья с тысячами мелких файлов учтены отдельно от пары мульти-ГБ весов (inode vs объём).

Расписание очистки и ротация логов

Не удаляйте каталоги вслепую, пока процесс держит mmap или открытые дескрипторы. Задайте окно обслуживания, когда CI обычно простаивает: на пулах удалённых Mac часто берут локальные 02:00–04:00. На macOS удобнее пользовательский LaunchAgent с StartCalendarInterval (час и минута), чем crontab: наследуется сессия пользователя, проще аудит по арендаторам. Если политика команды уже строится на cron — явно пропишите PATH и пользователя, иначе скрипт «тихо» не найдёт бинарники.

Планировщик Когда уместен Риск
LaunchAgent + StartCalendarInterval Per-user раннеры, доступ к связке ключей GUI Дубли plist при правках нескольких админов
crontab Наследие Linux-документации Другой PATH, нет GUI-сессии, дрейф прав
SSH-скрипт из CI Политика хранится в Git Нужен backoff при пересечении часовых поясов

Для ротации логов пишите stdout/stderr агента в файлы с датой под ~/Library/Logs/OpenClawCache/ и добавьте строфу newsyslog или еженедельный gzip в том же окне. Храните хотя бы неделю stdout очистки — иначе «пропажи» в кеше не объяснить постфактум.

#!/bin/bash
set -euo pipefail
# Пример: вызывается из plist после проверки простоя (опционально pgrep)
find "$HOME/.openclaw/cache/tmp" -type f -mtime +3 -delete
find "$HOME/.openclaw/cache/tmp" -type d -empty -delete

Квоты и пороги заполнения диска

Соедините идею квоты с простым разбором df в том же патруле, что следит за шлюзом. Практичная матрица для общих раннеров 2026 года:

Заполнение Действие Канал алерта
≥ 80% Уведомление + плановая очистка в следующем окне Slack / webhook, уровень INFO
≥ 85% Запрет новых «экспериментальных» загрузок моделей Pager, WARNING
≥ 90% LRU на tmp + демоция на тёплый уровень по политике Pager, CRITICAL

Если на томе доступны мягкие квоты, закладывайте запас ниже «маркетинговой» ёмкости: снимки APFS и служебные метаданные незаметно съедают гигабайты. Всегда смотрите df -h и df -i: исчерпание inode выглядит как «диск полон», хотя одного большого файла для удаления нет.

Повторы при сбоях и устранение неполадок

Оборачивайте загрузки в ограниченный экспоненциальный backoff (например 5 с, 15 с, 45 с) с джиттером, чтобы стая Mac не долбила одно зеркало синхронно. При ошибке пройдитесь по короткому списку:

  • ENOSPC / «No space left» — смотрите том цели symlink, а не только $HOME.
  • Stale file handle — перемонтируйте внешний диск; проверьте порядок разблокировки APFS при старте.
  • HTTP 429 / 5xx — политика регистра: снизьте параллелизм, уважайте Retry-After.
  • Permission denied — сверьте владельца после копирования машины, затем openclaw doctor после обновления macOS.

Стабильность шлюза сверяйте с паттернами восстановления и повторов, чтобы скрипты кеша не воевали с «мигающим» демоном.

Чеклист приёмки перед продом

  • После холодной загрузки symlink разрешается до запуска любых job’ов.
  • Скрипт патруля диска печатает понятный процент использования и падает с ненулём при >90% на быстром томе.
  • Два успешных dry-run очистки заархивированы с номером тикета; деструктивный режим включён только после них.
  • CI ссылается только на канонический путь — нет дубликатов с «голыми» путями монтирования.
  • В runbook описан откат: смена symlink на тёплый уровень за ≤5 минут.

Итоги и куда двигаться дальше

Кратко: предсказуемые загрузки моделей для OpenClaw на удалённом Mac строятся на одном каноническом пути, symlink на горячий том, документированном тёплом архиве, ночном окне очистки через LaunchAgent, ротации логов и явных порогах заполнения диска. Автоматизацию оформляйте как часть CI: версионируйте plist, гоняйте dry-run и разводите сетевые повторы от аварий «диск забит».

Дополнительно (без входа): центр помощи MacPull, тарифы, оформление аренды, оглавление блога; из серии OpenClaw — автоматизация предзагрузки ClawHub и усиление безопасности шлюза.

Выделенный узел Apple Silicon с запасом по NVMe и понятными окнами обслуживания — та база, на которой многоуровневый кеш остаётся воспроизводимым из спринта в спринт.

Удалённый Mac под кеш и CI

Нужен запас диска под модели?

Арендуйте Mac mini с быстрым NVMe и стабильным SSH: страницы блога, помощи и оформления аренды открываются без логина.

Оформить аренду Тарифы Центр помощи
Выдача до 24 ч
Apple Silicon
Поддержка 7×24