2026-05-13 мультиагентный OpenClaw agents.json: разделение ролей на безголовом арендованном Apple Silicon облачном Mac (HK / JP / KR / SG / US)
Один шлюз, один характер ответов, одна история случайного удаления — пока вы не разделите OpenClaw на явные мультиагентные профили. На арендованных Mac mini M4 в Гонконге, Токио, Сеуле, Сингапуре и США один и тот же UID часто совмещает полосы xcodebuild, деревья подписи и ассистента в корпоративном мессенджере. Этот материал от 2026-05-13 трактует agents.json как эксплуатационный контракт: какие корни разрешены, какой OPENCLAW_STATE_DIR владеет чекпоинтами, как входящие события сопоставляются ровно с одной идентичностью агента. Он опирается на белые списки рабочей области, чекпоинты сессии и перезапуск шлюза и onboard с triage doctor, чтобы получить воспроизводимое разделение разработка против эксплуатации, устойчивое к перезапускам launchd.
Зачем мультиагентная схема на общих арендованных билдерах
Ассистент, который может читать репозитории, не равнозначен автоматизации, перезапускающей демоны или ротирующей токены. Общий каталог состояния смешивает дедуп-кэши, манифесты плагинов и частично записанный JSON при всплесках webhook — особенно после обновлений npm или серий launchctl kickstart. В центре проектирования — радиус поражения: сужать набор инструментов по роли, разделять префиксы логов, требовать человеческое ревью перед расширением области. agents.json ведите как инфраструктурный код: ревью коллег, контрольная сумма в пакете выката, канареечные регионы.
Слои: agents.json и модель процесса шлюза
Три уровня: транспорт (HTTP, Slack, Telegram), шлюз (маршрутизация, аутентификация, ограничения скорости), рантайм агента (инструменты, вызовы моделей, политика ФС). agents.json относится к рантайму: именованные агенты, модели по умолчанию, наборы навыков, поля политики. Шлюз читает при старте; горячие правки без контролируемого перезапуска оставляют в памяти полустарую политику. Зафиксируйте для вашей сборки OpenClaw, какие поля допускают горячую перезагрузку, а какие требуют порядка остановки из руководства по чекпоинтам.
- Идентичность — стабильные
idдля маршрутизаторов и метрик. - Область — корни, согласованные с ограждениями монорепо.
- Инструменты — явные списки разрешения и запрета; персона эксплуатации может включать управление сервисами, персона разработки — нет.
Разработка и эксплуатация: что не должно наследоваться
Ассистент разработки ориентирован на навигацию с упором на чтение, мелкие правки, удобные для diff, и тестовые команды внутри CI checkout. Автоматизация эксплуатации может расширять интроспекцию хоста, но избегает интерактивных запросов и неограниченной оболочки. Секреты не вшивайте во встроенные подсказки — загрузка из связки ключей macOS или запечатанных env-файлов, на которые ссылается plist. «Временное» размытие границ приводит к тому, что поток чата наследует инструменты эксплуатации и трогает plists launchd, пока человек всё ещё думает, что это только чтение.
Раздельные OPENCLAW_STATE_DIR для нескольких агентов на одном Mac
Используйте предсказуемые префиксы вроде ~/Library/Application Support/OpenClaw/state-dev и .../state-ops; при нескольких продуктовых линиях добавьте подкаталоги арендатора. Не связывайте одно дерево состояния симлинком с другим: firmlink APFS и резервное копирование могут стереть границу. Экспортируйте отдельный TMPDIR на агента, чтобы параллельные задания не удаляли чужие частичные загрузки. После переноса выполните проверки из раздела doctor для неинтерактивной оболочки.
# пример обёртки launchd
#!/bin/bash
set -euo pipefail
export OPENCLAW_STATE_DIR="$HOME/.openclaw-state/ops"
exec /usr/local/bin/openclaw gateway --config "$HOME/.openclaw/ops-gateway.json"
Маршрутизация: ключи корреляции, каналы, избежание коллизий
В webhook передавайте стабильные идентификаторы — полное имя репозитория плюс id доставки, команда Slack плюс канал плюс ts ветки, или подписанный внутренний токен задания. Каждый шаблон сопоставляется ровно с одним id; не используйте regex-запасной вариант, который отправит эксплуатационный трафик к ассистенту по умолчанию. При двух шлюзах можно повторно использовать идею upstream-меток, но маршрутизацию персон держите ортогональной к A/B разделению трафика. На этапе выката логируйте решения на уровне info, затем понижайте уровень после стабилизации бюджета ошибок.
Матрица: один агент, раздельный agents.json или раздельные процессы шлюза
| Сигнал | Склонность к одному агенту | Склонность к раздельному agents.json | Склонность к раздельным шлюзам |
|---|---|---|---|
| Пересечение инструментов | Высокое, тот же класс риска | Низкое, та же аутентификация шлюза | Разные домены аутентификации или TLS-сертификаты |
| Ритм релизов | Только еженедельная подстройка промптов | Разные команды владеют JSON | Независимые SLO или окна обслуживания |
| Конкуренция за каталог состояния | Мало записей, малые кэши | Тяжёлые чекпоинты или IO плагинов | Аудит соответствия требует жёсткой изоляции |
| Операционные затраты | Минимум движущихся частей | Средне: больше каталогов и тестов маршрутов | Высоко: двойной launchd и health-пробы |
Восемь шагов развёртывания мультиагентного OpenClaw на арендованном Apple Silicon
- За 30 дней перечислите все человеческие и автоматические входы в шлюз.
- Составьте
agents.jsonс профилями разработки и эксплуатации; корни по руководству по белым спискам. - Создайте соседние
OPENCLAW_STATE_DIRс владельцем и квотами. - Реализуйте детерминированные правила маршрутизации и unit-тесты на примерных полезных нагрузках.
- Разверните plists или обёртки по персонам; проверьте
launchctl kickstartв препродакшене. - Запустите синтетические задания, которые обязаны падать при неверной маршрутизации.
- Снимите метрики до и после: отказы инструментов и p95 шлюза.
- Опишите откат: tarball состояния и прежний JSON с git-тегом.
Сигналы SLO для мультиагентных шлюзов
| Сигнал | Порог | Действие |
|---|---|---|
| Доля неоднозначной маршрутизации | > 0,1 % запросов | Заморозить изменения маршрутов; добавить явные сопоставители |
| Перекрёстные записи вне объявленных корней | Любая фиксация | Остановить шлюз; восстановиться из снимка чекпоинта |
| Расхождение JSON в Git и файлов на хосте | Любое необнаруженное ручное изменение | Откат хоста; только поток через pull request |
Вопросы и ответы
| Вопрос | Практический ответ (2026-05-13) |
|---|---|
| Должны ли разработка и эксплуатация делить один список разрешённых моделей? | Список провайдеров можно общий при централизованном учёте стоимости; раздельные списки запрета, если эксплуатации нужны более дешёвые или офлайн-конечные точки. |
Можно ли по SSH горячо править agents.json во время инцидента? |
Только с парным планом перезапуска и git-тегом; иначе предпочтительны флаги на стороне маршрутизатора с меньшим радиусом. |
Почему аренда Mac mini M4 упрощает мультиагентный OpenClaw
Быстрый NVMe и предсказуемая unified memory позволяют держать несколько деревьев состояния, параллельные кэши моделей и одновременные проверки здоровья без давления на swap — это важно, когда вы репетируете смену маршрутов, а CI всё ещё выполняет полную сборку. Сравните регионы на странице цены; перед расширением инструментов направьте коллег к руководствам SSH и VNC.
Арендуйте билдеры, где мультиагентную политику можно реально закрепить на диске
HK / JP / KR / SG / US · SSH / опционально VNC