Пользователи OpenClaw оценивают продукт по задержке чата, а дорожная карта — по пропускной способности длительных автоматизаций рабочей области. Когда оба делят один шлюз на одном Mac mini M4, сбой предсказуем: перестроение индекса монорепозитория или многоминутная цепочка инструментов забирает все ядра, а ответы Slack прыгают с сотен миллисекунд до десятков секунд. В 2026 году опубликуйте матрицу параллелизма с именованными слотами мьютекса, семантикой отмены и отдельными классами SLO — и применяйте их метриками, а не настроением.
Связанные меры: аутентификация шлюза и лимиты инструментов, выравнивание запланированных задач launchd, пробы готовности и SLO. Если на том же хосте крутится CI, читайте справедливость параллелизма CI. Цены; помощь; аварийно VNC.
Два класса трафика, два бюджета
Интерактивный чат чувствителен к задержке и обычно небольшой по полезной нагрузке. Длительные задачи ориентированы на пропускную способность и могут порождать деревья подпроцессов, большой дисковый IO и повторные вызовы LLM. Считайте их конкурирующими арендаторами в одной ОС — даже если «одна команда» владеет обоими: ядро не знает вашу оргструктуру.
- Интерактив: приоритет справедливости планирования и ограничение видимой глубины очереди.
- Долгий запуск: приоритет обратного давления и отмены; никаких бесконечных циклов повторов.
- Гибридные команды: явные метки, чтобы маршрутизатор выбирал правильный бюджет.
Матрица параллелизма
| Нагрузка | Политика слотов по умолчанию | Видимый пользователю риск |
|---|---|---|
| Ответы DM с лёгкими вызовами инструментов | Всегда включённые зарезервированные слоты | Ощущение «бот упал», если p95 > ~3 с |
| Ночная пересборка документации монорепо | Ограниченные параллельные воркеры + мьютекс на git | Голод чата без мьютекса |
| Человеческий «исправить весь lint» цунами | Очередь с видимой позицией + отмена | Дубли правок при не кооперативной отмене |
Отмена и кооперативные тайм-ауты
Кнопка отмены, которая останавливает только родительскую корутину, пока дочерние xcodebuild продолжают работу, хуже отсутствия отмены — она создаёт частичные записи. Стандартизируйте: токены отмены, группы процессов где возможно, и жёсткие настенные лимиты на класс инструмента с аудит-логами при убийстве.
| Семейство инструментов | Мягкий тайм-аут | Жёсткое убийство |
|---|---|---|
| HTTP JSON API | Чтение клиента 30 с | Абсолют 90 с |
| Локальная компиляция / тесты | События прогресса каждые 60 с | Потолок 45 мин без тикетного исключения |
| Дисконасыщенная синхронизация | Аларм нижнего порога пропускной способности IO | Отмена оператором + проверка контрольных сумм |
Заметка оператора: планируйте тяжёлые задачи с джиттером календаря, чтобы они не совпадали со всплесками ежедневных стендап-сообщений — просто и эффективно.
Восемь шагов внедрения
- Инструментировать p95 чата отдельно от времени завершения задач.
- Определить мьютексы вокруг git, менеджеров пакетов и загрузки симулятора.
- Резервировать слоты для интерактивного трафика на каждом хосте шлюза.
- Подключить дашборды глубины очереди и успешности отмены.
- Документировать «тяжёлые» команды в runbook/README оператора.
- Нагрузочные тесты, смешивающие всплески чата и запланированные задачи.
- Разделять хосты, когда метрики показывают устойчивую конкуренцию — добавить второй NodeMac Mac mini M4.
- Постмортем должен ссылаться на превышенный бюджет.
FAQ
Почему чат медленный только ночью?
Общие CPU, IO и лимиты параллельности инструментов. Резервируйте интерактивные слоты и ограничивайте параллельные длительные задачи.
Один процесс шлюза или два?
Продакшен должен изолировать или использовать строгие уровни мьютекса; совместное использование без лимитов даёт всплески хвостовой задержки.
Как помогает NodeMac?
Выделенные M4 по роли/региону, автоматизация SSH, опциональный VNC — разделите чат и пакет на хостах.