Руководство по развёртыванию 2026-04-27 10 мин

2026: OpenClaw Active Memory и подагенты на удалённом физическом Mac — воспроизводимый runbook: миграция MEMORY.md, write-heat и JSONL-аудит в песочнице шлюза для сессий 7×24 (фрагменты конфигурации + FAQ)

Платформенные команды, которые крутят OpenClaw долгие сессии 7×24 на арендованных удалённых физических Mac, стабильно упираются в три сбоя: MEMORY.md расходится с рабочими каталогами подагентов, write-heat забивает SSD, а JSONL-аудит песочницы шлюза не сшивается с хостовыми логами. Здесь — две матрицы решений, семь шагов воспроизводимого runbook, готовые к вставке фрагменты конфигурации, три порога для подписания отчёта и FAQ; плюс перекрёстные ссылки на дисциплину бэкапа JSONL и каналы выпуска на том же классе железа.

2026: OpenClaw Active Memory, подагенты и JSONL-аудит на удалённом Mac

1. Область и аудитория

Предполагается, что OpenClaw уже установлен на macOS со шлюзом, и вы используете или планируете Active Memory (долговременная рабочая память между ходами) и подагентов (отдельные процессы и часто другой cwd для инструментов). Вне рамок: квоты облачных API и маршрутизация моделей — только контракты путей, каденция сброса на диск, поля аудита и allowlist песочницы.

Вывод: держите MEMORY.md (или эквивалент) по абсолютному пути из конфигурации; подагенты пишут только через него или через контролируемый RPC; снижайте write-heat через half-life и пакетный flush; выпускайте requestId на границе шлюза, чтобы JSONL внутри и снаружи песочницы использовали одно имя поля. Для безлюдной стабильности и ротации JSONL дополните этот runbook материалом о резервном копировании по расписанию и JSONL-наблюдаемости шлюза OpenClaw 7×24 и сценариями обновления в каналах выпуска OpenClaw, откатах и приёмке doctor на удалённом Mac.

2. Три типовых боли

  1. Ограничение: относительные пути × несколько cwd. Подагенты, стартующие из подпапки репозитория, пишут MEMORY.md глубоко в поддереве, пока родитель читает старое расположение — это раскол путей, а не загадочная амнезия.
  2. Скрытая стоимость: write-heat = write amplification. Полные перезаписи с частым fsync каждый ход плюс аудит JSONL могут забить iowait на хостах 7×24 раньше, чем вырастет бизнес-трафик.
  3. Стабильность и аудит: два писателя, два дерева. Когда песочница блокирует хостовые пути, подагенты оставляют аудит в приватных каталогах и jq-соединения на хосте ломаются — обычно не унифицированы requestId и политика writable.

3. Матрицы решений

Согласуйте до выката, где живёт память и насколько агрессивно сбрасывать на диск.

Носитель памяти Когда уместно Главный риск
Один MEMORY.md Небольшие команды, ручной diff, до нескольких тысяч записей Конкурентные записи; хвост размера одного файла
Шардированные файлы (тема или сессия) Длинные сессии с LRU и архивами Индекс и сквозные ссылки между файлами
Только внешний векторный индекс Recall через поиск, шлюз вне хоста Сетевой разрыв — заранее определите путь деградации
Стратегия write-heat Дружелюбность к диску Риск консистентности
Полная перезапись каждый ход Низкая Низкий
Порог + пакетный flush в окне времени Высокая Окно после сбоя может потерять последний пакет (добавьте WAL или dual-write)
Только высокоценные события Максимальная Плохие промпты недодокументируют контекст

4. Фрагменты конфигурации (согласованы с песочницей)

Иллюстративный JSON — имена полей должны совпадать с закреплённой версией OpenClaw. Необсуждаемые требования: абсолютные пути, allowlist и проброс requestId.

{
  "memory": {
    "path": "/Users/ocagent/workspace/MEMORY.md",
    "encoding": "utf-8",
    "flush": { "maxEvents": 32, "intervalMs": 5000, "halfLifeRounds": 12 }
  },
  "subagents": {
    "defaultCwd": "/Users/ocagent/workspace",
    "inheritEnv": ["OPENCLAW_REQUEST_ID", "MEMORY_PATH"]
  },
  "gateway": {
    "auditJsonl": "/Users/ocagent/logs/gateway-audit.jsonl",
    "sandbox": {
      "writable": [
        "/Users/ocagent/workspace/.sandbox/scratch",
        "/Users/ocagent/logs/sandbox-audit.jsonl"
      ]
    }
  }
}

В plist launchd экспортируйте MEMORY_PATH и OPENCLAW_REQUEST_ID (или пусть обёртка шлюза выставляет их на запрос), чтобы интерактивный SSH не расходился с безлюдным демоном.

5. Семь шагов runbook (удалённый физический Mac)

  1. Заморозить авторитетные пути. Зафиксируйте файл памяти, audit JSONL и scratch песочницы как абсолюты на обложке runbook — без расхождения между вики и комментариями в коде.
  2. Мигрировать MEMORY.md. Копируйте в режиме обслуживания или только для чтения, проверьте diff, проставьте migratedAt в шапке.
  3. Нормализовать cwd подагентов. Принудительно задайте defaultCwd на основной workspace или эквивалентный флаг памяти.
  4. Включить схему JSONL. Договоритесь о ts, level, requestId, actor, memoryOp, durationMs для шлюза и дочерних процессов.
  5. Приёмка песочницы. Пробы: запись вне allowlist падает и даёт строки deny; успехи остаются внутри writable.
  6. Настроить write-heat. Переходя с полного flush каждый ход на оконные пакеты, прогоните 24-часовой сценарий диалога и смотрите iostat и рост JSONL.
  7. Replay-сшивка. Внешнее соединение JSONL хоста и песочницы по requestId через jq; любая пропущенная пара блокирует вывод в прод.

6. Цифры для отчёта

  • Стартовое окно пакетного сброса: порядка 3–8 с или 16–32 событий — что наступит раньше; удлиняйте окно с half-life для очень длинных сессий.
  • Ротация audit JSONL: делите файлы около 128–256 МБ, чтобы синхронизация в объектное хранилище не таскала многогигабайтные хвосты.
  • SLA на join: в предпрод soak — 0% пропущенных пар requestId за час; в проде алерт при устойчивом уровне выше 0,1% за исключением корзин clock-skew, которые вы документируете.

7. FAQ

В: EACCES при записи MEMORY.md?

О: Проверьте владельца и UserName в plist; на сетевых томах — что монтирование не root-only.

В: Лог подагента резолвит путь памяти иначе, чем основной конфиг?

О: Порядок переменных окружения — уберите устаревший MEMORY_PATH из профилей и задайте явные EnvironmentVariables в launchd.

В: Строки JSONL огромные и диск заканчивается?

О: Не кладите полные промпты по умолчанию — хэши, длины, алиасы моделей; большие полезные нагрузки — в объектное хранилище.

В: Аудит песочницы пишется, но не собирается пайплайном?

О: Добавьте путь в allowlist сборщика или read-only монтирование с формальным security review.

8. Итог: почему Mac mini подходит под память и аудитный IO длинных сессий

Active Memory с JSONL-аудитом — это по сути частый мелкий IO плюс долгоживущие процессы: качество диска, справедливость планировщика и энергоповедение решают, сработает ли ваша стратегия write-heat. Mac mini на Apple Silicon (например M4) даёт пропускную способность unified memory и порядка ~4 Вт в простое — удобно для бесшумных шлюзов 7×24 с локально быстрой памятью и логами.

В macOS есть launchd, Unified Logging и снимки APFS, поэтому triage короче при строке deny песочницы или регрессии burst-flush; Gatekeeper и SIP дополняют картину по сравнению с типичной экспозицией вредоносного ПО на постоянно включённых Windows-узлах.

Если вы переносите длинные сессии с ноутбука на удалённый физический Mac, чтобы подагенты, песочница шлюза и ротация JSONL делили один предсказуемый baseline, Mac mini M4 сегодня один из самых экономичных якорей — зафиксируйте пути один раз и проведите тот же runbook через staging и production.

Узлы 7×24

Выделенный Mac mini под OpenClaw с Active Memory

Физические узлы macOS на ZoneMac: те же абсолютные пути, launchd и стек JSONL, что вы проверили в staging, без сюрпризов виртуализации.

По мере использования Быстрый старт Предсказуемый baseline
Облако macOS Спецпредложение
Получить сейчас