В последние годы приложения с искусственным интеллектом стремительно трансформируют рынок программного обеспечения, особенно в области автоматизированного создания кода. Среди них Lovable и Bolt выделяются как яркие представители нового поколения инструментов, способных создавать полноценные веб-приложения на основе текстовых запросов пользователя. Их стремительный рост популярности объясняется не только улучшением моделей ИИ, но и грамотным системным подходом к архитектуре подобных решений. Для тех, кто интересуется внутренним устройством AI-кодировщиков и желает понять, как построить подобный продукт, важно изучить ключевые компоненты и процессы, лежащие в основе этих приложений. В данной статье раскрывается архитектура Lovable и Bolt, демонстрируя, что успех таких систем — это не столько магия искусственного интеллекта, сколько продуманная инженерия и инновационный системный дизайн.
Основу AI-приложений для кодирования составляют четыре основных компонента. Первый из них — клиент модели, представляющий собой интерфейс общения с языковой моделью через продуманные запросы, сравнимые с удалёнными вызовами функций (RPC). Такие вызовы формируют основу взаимодействия, передавая запросы с учётом контекста и истории диалогов. Второй компонент — это среда, где пользователь и модель взаимодействуют с кодом. Обычно для этого используются специально изолированные песочницы — лёгковесные виртуальные машины или контейнеры, обеспечивающие безопасное выполнение и тестирование сгенерированного кода, а также MCP (Model Control Protocol) сервер, выполняющий задачи передачи метаданных и координации действий между клиентом и средой выполнения кода.
Третья составляющая — агент, который управляет состоянием сессии, маршрутизирует пользовательский ввод к модели и координирует все взаимодействия между фронтендом, запросами и средой исполнения. Агент реализует основной цикл работы приложения и обеспечивает непрерывное улучшение и обновление генерируемого кода на основе обратной связи. Четвёртым элементом является фронтенд, обычно построенный с использованием технологий реального времени, например websocket, что даёт возможность оперативно отображать результаты работы модели и принимать команды пользователя. Такой подход обеспечивает высокую интерактивность и отзывчивость интерфейса. Архитектура Lovable и Bolt основывается на идее, что запросы к языковой модели — это не просто случайный ввод текста, а тщательно спроектированные программные функции с логикой и состоянием.
Для повышения качества коммуникации с моделью используется специализированный DSL — BAML, независимый от конкретной модели язык, позволяющий структурировать запросы как программные функции с определёнными параметрами и результатами. Это упрощает итерации и отладку промтов (prompt engineering), которые превращаются из творческой задачи в инженерный процесс с использованием тестов и контроля качества. В основе механизма редактирования кода лежит концепция передачи модели подробного описания текущего состояния файлов проекта, истории диалога и обратной связи от пользователя. Модель, используя эти данные, возвращает план изменений и обновлённые файлы. Такие шаги ограничиваются зависимостями, представленными в package.
json, что гарантирует совместимость и стабильность создаваемого кода. Следующим важным этапом является развёртывание собственного MCP сервера с помощью FastMCP — лёгкой инфраструктуры для построения серверов, реализующих Model Control Protocol. Использование серверless платформы Beam позволяет динамически создавать песочницы с необходимым окружением: контейнер с Node.js, установленными библиотеками и клонированной шаблонной базой кода. За счёт песочниц достигается безопасность и изоляция, а также возможность запуска превью создаваемого приложения через публичный URL.
В процессе работы MCP сервер предоставляет инструменты для загрузки, изменения и сохранения файлов, а также для запуска сервера фронтенда с приложением по определённому порту. Эта сложная, но гибкая инфраструктура обеспечивает взаимодействие модели с кодом в режиме реального времени и поддерживает непрерывную интеграцию изменений пользователя. Ключевой частью архитектуры выступает агент, реализованный как websocket сервер. Он принимает события от пользователей, запускает новые песочницы для предпросмотра и вызывает процедуру EditCode для генерации и внесения изменений в проект. Такой подход позволяет, благодаря асинхронной и реактивной архитектуре, быстро обновлять результаты и получать обратную связь, что создаёт ощущение живого диалога с системой.
Итоговое приложение представляет собой высокоинтерактивный конструктор, способный по запросу пользователя создать рабочий веб-сайт с визуальным предпросмотром. Возможность введения пошаговых изменений и оперативного их отображения позволяет добиваться высокого качества и гибкости результата. Опыт создания клонов Lovable показал, что успех подобных AI-приложений заключается не столько в совершенстве модели, сколько в грамотном инженерном подходе к управлению контекстом, структурированию промтов, обёртыванию модели в надёжные и предсказуемые механизмы. Важное значение имеет контекстная инженерия — обеспечение модели увязкой с большим количеством релевантной информации и механизмов руления. Кроме того, тестирование промтов, напоминающее разработку программного обеспечения, позволяет предотвращать ошибки и оптимизировать взаимодействие с языковой моделью.