Группа — единица изоляции

Автор: Алексей Пасечник (Arhellist). Канонический адрес: https://arhellist.ru/blog/gruppa-edinitsa-izolyatsii/.

Опубликовано: 2026-10-16.

Единица изоляции в Элис — не пользователь, а группа. Отдельные бот-контуры со своим каталогом на диске. Группы не делят ни браузер, ни файлы, ни память, ни бюджет. И правило: в группе одновременно идёт только один активный разговор, остальное — в очередь.

Каталог группы — data/groups/<имя/. Внутри: - workspace — песочница, «тюрьма путей»; - events — журнал, каждый факт — отдельный файл; - state.db — очередь, гранты, outbox, todos; это не источник правды, она пересобирается из журнала; - chrome-profile — свой профиль браузера; - memory.db — память группы; - audit.log — цепочка решений человека; - skills/ и agents/ — навыки и субагенты; - roles.yaml — какая модель на какую роль: зрение, OCR, генерация; - alloweddomains — куда браузеру можно.

Замок «один активный разговор». Новая задача, пока идёт текущая, встаёт в очередь или получает честный отказ «занято». Параллель — только если явно включён такой режим. Так в каждый момент один «мозг» владеет файлами и браузером группы.

Зачем так. Каталог можно скопировать, перенести на другую машину или удалить целиком. Нет общей базы, где данные групп перемешаны.

Ключевая трудность (инженерная): замок, который переживает падение. Процесс умер, держа замок, — группа «зависла». Снимать замок по таймауту агрессивно — два разговора пишут в одну папку. Нужно отличать «владелец долго думает» от «владельца больше нет» и не потерять очередь. Помогает то, что state.db — производная от журнала: очередь и outbox можно восстановить, а не угадывать.

Дальше — журнал событий и правило «сначала сохрани, потом сообщи».

Мой Телеграм

О чём пишем

  • Архитектура и эксплуатация веб-продуктов
  • AI-агенты, RAG и практические контуры
  • Кейсы LMS, маркетплейсов и защищённых коммуникаций
  • Заметки по Next.js, Node.js, PostgreSQL и realtime