Навигация

Архитектура: ядро, модули, MCP-шлюз и контуры

Разделение ответственности

Платформа сложена из трёх слоёв, и граница между ними жёсткая.

Ядро — сервис на Go. В нём живёт всё, что нельзя дублировать в каждом модуле: пользователи и организации, аутентификация, RBAC, лицензии, биллинг, реестр модулей и MCP-шлюз. Хранилище — PostgreSQL.

Модули — независимые сервисы. У каждого своя схема базы и свои миграции, своя бизнес-логика и свой набор MCP-инструментов. Модуль не ходит в чужие таблицы напрямую: если ему нужны данные соседа, он вызывает инструмент соседа через шлюз. Благодаря этому модуль можно выпускать, обновлять и лицензировать отдельно от остальных.

Фронтенд — веб-интерфейс на Next.js и мобильный клиент. Он не знает бизнес-логики модулей: страницы строятся из того, что модули сами о себе объявляют.

MCP-шлюз

MCP (Model Context Protocol) — общий язык, на котором разговаривают ядро, модули и ИИ-агенты. Инструмент модуля вызывается по имени вида <модуль>__<инструмент>, а весь трафик идёт через шлюз ядра.

Шлюз — не просто маршрутизатор, а место, где стоят проверки:

  1. Кто вызывает — пользователь, агент или другой модуль; личность подтверждена ядром, а не заявлена вызывающим.
  2. Есть ли право — RBAC-проверка по ролям и скоупам; по умолчанию запрет.
  3. Есть ли лицензия — двойной гейт: лицензия на ядро проверяется в шлюзе, лицензия на модуль — ещё раз самим модулем.
  4. Что произошло — вызов попадает в аудит-лог.

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

Самоописание модулей

Модуль обязан рассказать о себе платформе, и делает это через MCP-инструменты. Он объявляет свои блоки для холстов, свои сущности и поля, свою схему настроек и классы персональных данных, которые обрабатывает. Ядро и фронтенд строят по этим описаниям библиотеку блоков, страницы настроек и правила маскирования — руками ничего дописывать не нужно.

Контуры

Контур — это отдельная установка платформы со своей базой, своими лицензиями и своими данными. Облачный контур обслуживается вендором; коробочный ставится на инфраструктуре клиента и может работать в закрытой сети без выхода наружу. Лицензирование учитывает разницу: в коробке лицензия привязывается к аппаратному отпечатку контура.

Контуры можно связать между собой — см. «Федерацию» и «Развёртывание».

Стек

СлойТехнологии
Ядро и модулиGo, PostgreSQL, Redis
ВзаимодействиеMCP поверх HTTP, REST API ядра
ФронтендNext.js, React, Tailwind CSS
ИИШлюз к LLM-провайдерам, векторный поиск в MOD-RAG
ИнфраструктураDocker, CI/CD, развёртывание в облаке или в контуре клиента
Открыть чат-бот