От режиссёра КИНО до режиссёра КОДА: как я заставил ИИ создавать полностью готовые программы автоматически

—

от автора

Сцена 1 ИНТ. СЪЕМОЧНАЯ ПЛОЩАДКА / РАБОЧИЙ КАБИНЕТ — ДЕНЬ

Здравствуйте, хабровчане! Давно я не писал сюда — каюсь, был поглощён сразу двумя масштабными проектами. Меня зовут Георгий Гашокин. Большую часть жизни я нахожусь на съёмочной площадке — я профессиональный кинорежиссёр. Прямо сейчас у меня самая горячая пора: 8 октября 2026 года в широкий прокат выходит мой новый полнометражный экшен-фильм «Спарта 2: Гоплиты». Я создавал эту картину целых три года.

Коротко о фильме для понимания атмосферы: кино полностью отечественное, про спорт, железную волю и настоящую мужскую дружбу. Фильм снят целиком на наши собственные деньги — ни копейки государственного финансирования мы не взяли. Бои в формате TTC (командные бои) придуманы в России, основатель идеи — Николай Кудряшов. На чемпионате 2023 года в Санкт-Петербурге участвовала даже команда Хабиба Нурмагомедова, названная в честь его отца (не буду спойлерить финал чемпионата, его можно целиком посмотреть на YouTube). Фильм полностью снимался в Санкт-Петербурге, а удары и бои в 90% сцен — абсолютно настоящие: 32 профессиональных бойца ММА выкладывались дубль за дублем. Я старался сделать картину максимально качественной, честной и реалистичной. Буду искренне рад вашей поддержке на премьере перед большими экранами! 😉

Заминка… Меняем объектив на широкий угол…, мотор, начали!

И так совпало, что ровно эти же три года, даже чутка больше, я с головой ушёл в другую свою страсть — программирование, разрабатывая собственный сложный IT-продукт. Имея многолетний опыт в разработке и будучи ленивым, я всегда стремился автоматизировать рутину. И сейчас оба моих «ребёнка» рождаются практически одновременно.

Работая с современными большими языковыми моделями, я осознал удивительную вещь: режиссура кино и программирование через ИИ — это практически один и тот же процесс. Так на сцену выходит EVA Engineer — автономная ИИ-среда разработки, где нейросеть получает собственную «съёмочную площадку»: файловую систему, терминал, живой предпросмотр и интернет. Далее — как она устроена изнутри, какие грабли я собрал и где скачать.


На съёмочной площадке я ставлю задачу (промпт) актёру: «Здесь ты должен показать гнев, но сдержанно, а потом резко ударить». Актёр (нейросеть) выдаёт дубль (код). Если дубль неудачный, я даю правки, объясняя, где пережать, а где сгладить углы.

Но главная беда современных веб-версий ИИ (вроде стандартных интерфейсов ChatGPT, Claude или Gemini) в том, что у них нет собственной «съёмочной площадки». Они выдают вам голые куски кода в окно чата, а вы вынуждены вручную копипастить их в свою IDE, натыкаться на ошибки компиляции в терминале, бережно нести их обратно в чат… Этот бесконечный пинг-понг изматывает, тратит часы времени и напрочь убивает вдохновение.

Поэтому я решил создать для ИИ полноценную «киностудию» — среду, где нейросеть выступает в роли Senior-разработчика, имеющего прямой доступ к файловой системе, shell-терминалу, встроенному браузеру живого предпросмотра и глобальному интернету.

Я ещё не индексировал сайт в поисковиках и пока нигде не писал об этом. Вы, читатели Хабра, получаете доступ к открытому BETA-тестированию первыми.

[ФЛЕШБЭК: ТРУДНОСТИ ПЕРЕВОДА]

Самые первые версии EVA я написал на Python. Они были вполне рабочими, но я быстро упёрся в бетонную стену: у Python очень ограниченный функционал для построения современного GUI. Я пытался строить интерфейсы на Kivy и KivyMD, но меня в край достали баги этих библиотек — там вечно что-то недопилено, QT(скучная и простая) и остальные не радуют, и на такой большой и сложной программе всё начинало трещать по швам.

Я, мягко говоря, не фанат экосистемы JavaScript, но, стиснув зубы, понял: без JS/TypeScript и React мне просто не реализовать нормальный живой предпросмотр (Preview) генерируемого кода. В итоге мне пришлось взять себя в руки и переписать всю архитектуру частями на новый стек (Electron + React).

[КАМЕРА НАЕЗЖАЕТ НА МОНИТОР. КРУПНЫЙ ПЛАН]

Уровень мета-иронии: Слева — EVA Engineer по одному короткому промпту сгенерировала полноценный клон Microsoft Word, в котором уже набран текст этой самой статьи и проверена работа изменения цвета текста. Справа — я пишу черновик этой статьи в оригинальном Word от Microsoft. Будущее в настоящем.

Уровень мета-иронии: Слева — EVA Engineer по одному короткому промпту сгенерировала полноценный клон Microsoft Word, в котором уже набран текст этой самой статьи и проверена работа изменения цвета текста. Справа — я пишу черновик этой статьи в оригинальном Word от Microsoft. Будущее в настоящем.

Чем EVA Engineer отличается от Cursor, Bolt, Windsurf и Manus?

Предвижу первый вопрос в комментариях, поэтому отвечу сразу. Я уважаю эти инструменты и сам ими пользовался. Но для моих задач их не хватало:

Сравнение всех аналогов.

Сравнение всех аналогов.

Я не претендую на «убийцу Cursor». EVA — это инструмент, заточенный под конкретную боль: быстро получить готовый продукт, а не только исходники, причём там, где зарубежные сервисы недоступны, это просто собственный программист которому говоришь что нужно сделать и он делает, он не хочет спать, есть, зарплату, а работать готов как «Папа Карло».

[ХЛОПУШКА В КАДРЕ]

СЦЕНА 1.1. ЧТО ПОД КАПОТОМ? (Анатомия системного промпта). Камера, мотор, начали!

Чтобы заставить LLM работать как автономный программист, мне пришлось написать жесткий системный промпт. Среда общается с ИИ через строгие XML-теги.

( System prompt — это конституция для любого ИИ, где описано, как он должен себя вести и что именно должен содержать его ответ. Можно в системном промпте, например, попросить, чтобы нейросеть вела себя дерзко как гопник, и в итоге она начнет хамить и даже материться. Расписав эти инструкции детально, она всегда из запроса в запрос будет их соблюдать, и никакие внешние правки обычным промптом и уговоры не заставят её действовать иначе. System prompt передается на вход ИИ невидимо с каждым сообщением пользователя.)

  • Перед тем как написать строчку кода, ИИ в EVA обязан использовать тег <think>, где он в 3-5 предложениях планирует архитектуру. А сам код выдается не в Markdown, а в тегах <boltArtifact> и <boltAction>. Это позволяет программе автоматически парсить ответ и применять его к файлам на вашем ПК.
    Но главная гордость — это механики, которые решают основные боли при работе с ИИ.

СЦЕНА 2. РЕЖИМ «ФОКУС» (Визуальный дебаг без долгих промптов).

Смена ракурса!…

Представьте типичную ситуацию: ИИ создал для вас сложный калькулятор. Справа в окне Preview открывается готовый интерфейс программы, где вы можете её испытать — понажимать кнопки, проверить вычисления. И вдруг вы понимаете, что хотите перенести кнопку «Сброс» в другой угол и сделать её нежно-красной.

Раньше вам пришлось бы писать длинный промпт: «Найди кнопку сброса, которая находится в правом верхнем углу меню, перенеси её вниз, добавь красный фоновый цвет…». ИИ мог промахнуться файлом, перепутать теги или сломать соседнюю вёрстку.

В EVA Engineer я сделал иначе:

  1. Вы нажимаете иконку «прицела» (Фокус) в панели чата или превью.

  2. Просто кликаете на нужный элемент прямо в окне живого предпросмотра Preview.

  3. Программа моментально снимает координаты элемента, его точный CSS-селектор, HTML/CSS-код и имя файла, в котором он отрендерен.

  4. Эти данные автоматически прикрепляются к сообщению, и вам остаётся написать лаконичное: «Сделай красной».

В этом видео я сразу показываю и как Eva Engineer за 3 минуты создала шахматы, и как работает кнопка «ФОКУС» меняя жёлтую кнопку на красную в реальном времени на модели Gemini 3.5 Flash

А здесь можно посмотреть, сколько времени ушло, чтоб в 6 запросов сделать шахматы, а справа — сколько стоил каждый запрос в рублях. Программа сделана была с 22:39 до 22:42 всего за 3 минуты и обошлась в 41 рубль, если бы я включил бы «молчаливый режим», то ещё дешевле…

А здесь можно посмотреть, сколько времени ушло, чтоб в 6 запросов сделать шахматы, а справа — сколько стоил каждый запрос в рублях. Программа сделана была с 22:39 до 22:42 всего за 3 минуты и обошлась в 41 рубль, если бы я включил бы «молчаливый режим», то ещё дешевле…

Нейросеть с хирургической точностью находит нужный узел в кодовой базе и вносит правку, затрачивая минимум токенов и времени.

Сцена 3. ЧЕТЫРЕ ВИДА УМНЫХ ПАТЧЕЙ (Никакой перезаписи файлов)

Спецэффекты в студию!…

Всех разработчиков раздражает, когда просишь нейросеть поменять цвет текста или одну строчку условия, а она начинает заново генерировать весь файл на 500 строк. Это долго, дорого по токенам и часто приводит к обрывам генерации на полуслове.

В системном промпте EVA нейросети строго запрещено перезаписывать файлы целиком (если в них больше 50 строк). Вместо этого движок использует 4 отточенных метода патчей:

  • Метод А (Контекстный поиск и замена): ИИ передаёт 3–7 строк старого оригинального кода в теге <eva_search> и новый код в <eva_replace>.

  • Метод Б (Точечный патч по номерам строк): Если в файле есть повторяющиеся блоки кода, ИИ использует атрибуты lineStart и lineEnd в теге <eva_search>.

  • Метод В (Удаление блока): ИИ находит фрагмент через <eva_search> и оставляет тег <eva_replace></eva_replace> абсолютно пустым.

  • Метод Г (Полная перезапись файла): Применяется только при создании новых файлов, для файлов короче 50 строк или когда меняется более 50% кодовой базы.

Вот как сформулирована эта инструкция в реальном ядре системного промпта EVA (малая часть):

SYSTEM_PROMPT = `Версия промта: \${PROMPT_VERSION} (Silent Mode) (App: \${APP_VERSION})Ты — EVA (Evolution Virtual Assistant). Твоя цель — выполнять задачи максимально быстро и молча. Ты работаешь в автоматизированной среде. Тебя и эту программу разработал и создал Георгий Гашокин.=========================================СТРОГИЙ АЛГОРИТМ РАБОТЫ (SILENT MODE)=========================================ШАГ 1. НАЗВАНИЕ ПРОЕКТА (Только ОДИН РАЗ при создании)Если это самый ПЕРВЫЙ ответ в новом чате, напиши:**Название проекта (RU):**[Понятное название]**Project Name (EN):**[имя-для-папки-без-пробелов-и-спецсимволов]ШАГ 2. ВЫПОЛНЕНИЕ ЗАДАЧИ (<boltArtifact> и <boltAction>)Сразу переходи к коду. НЕ пиши <think> и НЕ пиши <boltPlan>.ВЕСЬ КОД должен быть внутри <boltArtifact> и <boltAction>.ШАГ 3. ОТЧЕТ И ЗАВЕРШЕНИЕТолько ПОСЛЕ того, как все файлы записаны, напиши подробный отчет о том, что было сделано, и заверши ответ тегом <done/>.Если лимит символов исчерпан, напиши <continue/>.=========================================ДОСТУПНЫЕ ИНСТРУМЕНТЫ И ТЕГИ=========================================Внутри <boltArtifact id="project-name" title="Title"> ты можешь использовать:1. СОЗДАНИЕ ФАЙЛА (type="file"):Используй СТРОГО для создания НОВЫХ файлов с нуля.<boltAction type="file" filePath="src/utils.js">export const add = (a, b) => a + b;</boltAction>2. ИЗМЕНЕНИЕ СУЩЕСТВУЮГО ФАЙЛА (type="patch") — КРИТИЧЕСКИ ВАЖНО!НИКОГДА не перезаписывай файл целиком, если нужно изменить только его часть. Выбери один из 4 методов изменений:Метод А [Контекстный поиск и замена]:Укажи точный кусок старого кода (3-7 строк) в <search> и новый код в <replace>.<boltAction type="patch" filePath="src/App.jsx"><search>  const count = 0;</search><replace>  const [count, setCount] = useState(0);</replace></boltAction>Метод Б [Точечный патч по строкам (Если знаешь точные строки)]:Используй атрибуты lineStart и lineEnd в теге <search> для точечной замены диапазона строк.<boltAction type="patch" filePath="src/App.jsx"><search lineStart="12" lineEnd="14">  const count = 0;</search><replace>  const [count, setCount] = useState(0);</replace></boltAction>Метод В [Удаление куска кода]:Чтобы удалить код, найди его через <search> (или укажи строки) и оставь тег <replace></replace> абсолютно ПУСТЫМ.<boltAction type="patch" filePath="src/App.jsx"><search>  console.log("Временный дебаг");</search><replace></replace></boltAction>Метод Г [Полная перезапись файла]:Если нужно изменить БОЛЕЕ 50% кода файла, или если файл очень маленький (до 50 строк), используй type="file" вместо патча.ЖЕСТКИЕ ПРАВИЛА ДЛЯ PATCH И НАПИСАНИЯ КОДА:- ВНИМАТЕЛЬНОСТЬ И ПЕРЕПРОВЕРКА: Всегда максимально внимательно и аккуратно меняй код как лучший в мире профессиональный программист. Прежде чем записать измененный код в файл, мысленно перепроверь его как минимум ДВАЖДЫ на наличие синтаксических ошибок, незакрытых скобок, пропущенных запятых или неправильных импортов.- ЗАПРЕЩЕНО использовать сокращения кода типа "// ... остальной код" внутри <search> или <replace>. Пиши код полностью.- Соблюдай оригинальные отступы и пробелы в блоке <search>.3. КОМАНДНАЯ СТРОКА И СИСТЕМНЫЕ КОМАНДЫ (type="shell"):

Весь системный промпт в данный момент расписан на 773 строчки с примерами и всеми инструментами, а также даётся список и версии библиотек, которые предзагружены… Она знает, что установить нужно, а что уже установлено в среду…

Сцена 4. НАСТОЯЩИЙ ДОСТУП В ИНТЕРНЕТ (Парсинг топ-10 сайтов)

Выход в открытый космос…

Большинство моделей ограничены датой среза своих обучающих весов и начинают галлюцинировать при запросе свежих фактов. В EVA реализован прямой физический доступ в интернет с вашего компьютера.

Когда вы спрашиваете: «Узнай актуальный курс Bitcoin» или «Найди документацию по свежей библиотеке», программа отправляет поисковый запрос сразу в несколько поисковиков (Google, Yandex, DuckDuckGo). Она забирает первые 10 страниц выдачи, очищает их от баннеров, скриптов и вёрстки, оставляя чистый текст, и передаёт этот контент нейросети.

В логе запроса это выглядит так:

<eva_web_search>Сколько лет Илону Маску</eva_web_search>

Правда, есть один нюанс: если у вас включён VPN, эта функция не всегда срабатывает. Из-за подозрительного трафика от VPN-серверов поисковики начинают выдавать капчи, которые ИИ пока не умеет разгадывать. Но при чистом подключении всё работает как часы. Отвечу и на возможный вопрос про ToS поисковиков: запросы идут с вашей машины, с вашего IP и в вашем объёме — по сути, это то же самое, что открыть десять вкладок в браузере, только без ручного копипаста.

Сцена 5. ЗРЕНИЕ ИИ И «ВЫРВИГЛАЗНЫЕ» БАГИ (Честно о недоработках)

Без купюр…

В программе есть крутая функция — возможность отправить на вход ИИ картинку. Вы можете бросить в чат фотографию старой игрушки с Nintendo, и мультимодальные модели (типа Qwen или Gemini) прямо по фото начнут верстать её клон. Ещё один отличный юзкейс — отправить ИИ скриншот той самой программы, которую она только что создала, чтобы она сама увидела результат своего творения и поправила съехавшую вёрстку.

Загрузил фотку из интернета, и программа создала эту игру по фото, она знала название игры, в чём смысл, я не написал ей ни слова промпта, дал только скрин и всё, пару раз код был написан с ошибкой, но одной кнопкой я заставлял ИИ исправить код, со второй попытки игра запустилась, и вся механика работает нормально.

Загрузил фотку из интернета, и программа создала эту игру по фото, она знала название игры, в чём смысл, я не написал ей ни слова промпта, дал только скрин и всё, пару раз код был написан с ошибкой, но одной кнопкой я заставлял ИИ исправить код, со второй попытки игра запустилась, и вся механика работает нормально.
Сколько потрачено на игру «Танчики»? 3 запроса, 2 из которых — исправление ошибки кода на модели Gemini 3.5 Flash. В итоге за минуту рабочая игра, потратив примерно 28 рублей.

Сколько потрачено на игру «Танчики»? 3 запроса, 2 из которых — исправление ошибки кода на модели Gemini 3.5 Flash. В итоге за минуту рабочая игра, потратив примерно 28 рублей.

Но тут есть честный баг, который я пока не до конца победил.

EVA позволяет ИИ видеть историю переписки, чтобы модель помнила контекст. Соответственно, отправленная картинка остаётся в чате и при каждой новой задаче снова уходит на вход вместе с историей. Всё работает отлично, пока вы не решите переключиться на другую модель, которая не умеет распознавать картинки. В этот момент новая модель получает историю чата с картинкой, спотыкается об неё и выдаёт ошибку. И эта ошибка будет сыпаться, пока картинка не выйдет за пределы окна входного контекста (или пока вы не переключитесь обратно на Vision-модель).

Я уже придумал, как отфильтровать этот нюанс, и сделаю это в ближайшем обновлении.

Сцена 6. СБОРКА ГОТОВЫХ .EXE, .APK И .DMG

Постпродакшн…

ИИ в EVA обладает полным доступом к shell-терминалу вашей операционной системы. Он не просто генерирует исходники — он собирает готовый программный продукт.

Если вы напишете: «Собери это в мобильное приложение для Android или установщик для Windows», нейросеть сама пропишет цепочку команд сборки, настроит конфиги (electron-builder, Capacitor или NSIS) и запустит билд. На выходе в папке release на вашем диске появится готовый исполняемый файл: .exe для Windows, .apk для смартфона или .dmg для macOS. иногда может потребоваться пару кнопок нажать в сторонней программе такой как android studio но нечего сложного ии всё подскажет, exe например создаётся полностью без помощи человека.

Важная деталь для безопасности: ИИ не имеет права запускать команды в терминале самовольно. Любая установка пакетов или запуск сборки требует вашего явного разрешения в чате — вы всегда видите, что именно будет выполнено. Также в программе есть механизм улавливания зацикливания, если ИИ подряд делает одно и то же.

Сцена 7. МОЙ ЛИЧНЫЙ ОПЫТ (Или двигатель прогресса — лень)

Режиссёрская версия

Признаюсь честно: я очень ленивый человек. Мне было гораздо легче написать программу, которая будет программировать за меня, чем каждый раз писать код заново, проходя все круги тестового ада.

Чтобы испытать инструмент, я начал проектировать софт под свои задачи:

  • Календарь. За 30 минут в EVA я создал мобильное приложение-календарь с гибким меню и виджетами, собрал его в .apk (через встроенный доступ EVA к терминалу ОС) и установил на свой телефон. Правда, есть оговорка: пришлось установить Android Studio и нажать там пару кнопок по совету самой программы. Так как EVA пока не умеет пользоваться сторонними графическими программами (я ещё не подключил MCP), она выступала в роли идеального наставника, указывая, куда мне кликнуть.

  • Игра для поезда. Перед долгой поездкой я попросил EVA создать залипательную 2D-игру, которая работала бы оффлайн. Я всю дорогу с удовольствием в неё играл. Идея в том, что сверху падают элементы таблицы Менделеева, и нужно, сталкивая их друг с другом, открывать следующие элементы по количеству электронов (дальше 47 элемента у меня не получилось открыть), также там есть разные приколы, типа если столкнуть кислород и алюминий, то получится плазма, которая уничтожает маленькие элементы, тяжёлые элементы падают быстрее лёгких, сера и углерод получается порох, в общем, развлекаюсь как могу :))

Игра и календарь (секретарь), которые мне создала для мобильника Eva Engineer.

Игра и календарь (секретарь), которые мне создала для мобильника Eva Engineer.

Сцена 8. ОФФЛАЙН-РЕЖИМ И ЛОКАЛЬНЫЕ LLM

Съёмки в глухой тайге…

EVA Engineer поддерживает работу с локальными нейросетями без интернета. Вы можете запустить локальный сервер через LM Studio или Ollama, прописать адрес http://127.0.0.1:1234 в поле Base URL, и программа будет писать код, используя вычислительные мощности вашей видеокарты.

Программа отлично тянет модели уровня Gemma 4 12B или Qwen3-Coder. Да вообще можно подключить любую мощную модель — лишь бы компьютер тянул! Поначалу я специально подключал к EVA самые «тупые» 7B-модели: моя логика была в том, что если с задачей справятся они, то топовые модели тем более всё сделают идеально.

А благодаря встроенному локальному кэшу библиотек (lib_cache) живой предпросмотр React и Tailwind CSS будет работать без единого сетевого запроса, даже если вы сидите в глухой тайге.

Сцена 9. ОНЛАЙН-РЕЖИМ И ВОПРОС ОПЛАТЫ API ИЗ РФ

Продюсерские будни…

С топовыми онлайн-моделями (Claude 5 Fable, GPT-6 ASTRA, DeepSeek v4 Pro) EVA выдаёт потрясающие результаты — часто собирая проект с первого раза без бесконечных итераций отладки. Но оплачивать зарубежные сервисы из России сейчас сложно: нужны зарубежные карты, крипта, постоянные конвертации.

Поэтому в качестве основного провайдера я интегрировал отечественный агрегатор provod.ai (это не реклама), просто он удобен, оплачивается рублями и есть все необходимые модели, и я буду добавлять другие альтернативы с каждым обновлением. Например, сейчас добавлен ещё Заморский OpenRouter, но он недавно перестал работать в России и всячески блокирует связь.

Я просто вставляю API-ключ в настройки EVA, выбираю топовую модель на сайте provod.ai и вставляю её название в соответствующее окно в настройках программы и сразу работаю без костылей.

Сцена 10. ЗАЧЕМ ВСЁ ЭТО НУЖНО ИМЕННО СЕЙЧАС? (Импортозамещение)

Глобальный конфликт…

Ни для кого не секрет, что в России сейчас непростая ситуация с зарубежным софтом. Microsoft ушёл со всеми своими продуктами типа Office и Windows, Adobe не даёт пользоваться Photoshop, SolidWorks не даёт проектировать сложные устройства — и так почти по всем фронтам. При этом разработчиков, способных закрыть эти дыры, в стране катастрофически не хватает. Я очень надеюсь, что с помощью EVA Engineer те разработчики, которые остались, вооружившись современными ИИ-инструментами, смогут создать качественные собственные альтернативы этому ПО. Мы способны создавать независимый софт в разы быстрее, компенсируя кадровый голод, и я обещаю внести в этот процесс свой максимальный вклад.

Сцена 11. ГЛУБОКИЙ ТЕХНИЧЕСКИЙ РАЗБОР (Q&A для разработчиков)

Кишки наружу…

А теперь заглянем под капот EVA Engineer и ответим на самые важные технические вопросы о внутренней архитектуре программы с реальными примерами из исходного кода.

Структура...

Структура…

11.1 Как устроен Preview и предзагруженные библиотеки?

Архитектура Preview — это изолированный iframe. Чтобы живой предпросмотр React-приложений работал молниеносно, без задержек на скачивание node_modules и даже при полном отсутствии интернета, десятки популярных библиотек предзагружены прямо в память среды.

Вот реальный фрагмент из файла src/lib/shared-libs.ts:

// src/lib/shared-libs.ts - Предзагруженный стек библиотек для Previewimport * as React from 'react';import * as ReactDOM from 'react-dom';import * as ReactDOMClient from 'react-dom/client';import * as JsxRuntime from 'react/jsx-runtime';import * as LucideReact from 'lucide-react';import * as MotionReact from 'motion/react';import * as Recharts from 'recharts';// Делаем предзагруженные библиотеки глобально доступными для фрейма предпросмотра(window as any).__SHARED_LIBS__ = {  'react': React,  'react-dom': ReactDOM,  'react-dom/client': ReactDOMClient,  'react/jsx-runtime': JsxRuntime,  'lucide-react': LucideReact,  'framer-motion': MotionReact,  'recharts': Recharts,};

Когда ИИ генерирует код, кастомный бандлер компилирует виртуальные файлы без записи на диск, автоматически находит точку входа (App.tsx) и динамически генерирует монтирующий скрипт:

// src/lib/bundler.ts - Динамическая генерация точки монтирования Reactlet mountScript = '';if (!entryPoint && appComponent) {  const appKey = Object.keys(files).find(    k => k === 'src/App.tsx' || k === 'App.tsx' || files[k] === appComponent  );  mountScript = [    "import React from 'react';",    "import { createRoot } from 'react-dom/client';",    "import App from '/" + (appKey || 'App.tsx') + "';",    "const root = document.getElementById('root');",    "if (root) createRoot(root).render(React.createElement(App));"  ].join('\n');  files['__mount.tsx'] = mountScript;  entryPoint = mountScript;}

11.2 Как работает патч-движок и откаты (Rollback)?

Движок ищет блок <eva_search>. Если он уникален — происходит замена. При коллизиях используется Метод Б (поиск по номерам строк) и нечёткий поиск (Fuzzy Match), игнорирующий артефакты форматирования от нейросети (вроде лишних пробелов или переносов).

Перед каждым применением правок создаётся снимок состояния файлов. Если ИИ сломал логику программы, внизу сообщения доступна кнопка «Откатить назад» (Rollback), которая возвращает файлы в исходное состояние в один клик.

11.3 Токеномика и парсинг «мыслей» нейросетей

Вы даже не представляете, сколько денег на токенах я потерял, пока оттачивал стабильность программы! Одну и ту же задачу приходилось давать десятки раз в день, чтобы увидеть, перестала ли появляться ошибка. Все нейросети разные, и у каждой по-разному выглядит спец-токен для обозначения мышления модели. У одних это <think>, у других <thought_block>, у третьих <Details>. Если парсер не поймает нужный тег, то текст, который ИИ использует в качестве размышления, начнёт восприниматься как финальный ответ. В итоге куски текста, где ИИ просто «рассуждает», наглым образом вставлялись в реальный рабочий код TypeScript, убивая компиляцию!

Как решена эта проблема: создан агрессивный регулярный парсер, который вычищает артефакты размышлений:

// src/lib/parser.ts - Удаление артефактов мышления и проверка обрывовexport function removeTopLevelThink(str: string): string {  if (!str) return '';  // Высокопроизводительный паттерн для удаления мыслей (DeepSeek R1 / o1 / Claude)  const thinkPattern = /<(?:think|thought|thinking|thought_block|Thought|Thoughts|Details|\|channel|\|thought|\|thought_block)>[\s\S]*?(?:<\/(?:think|thought|thinking|thought_block|Thought|Thoughts|Details)>|<channel\|>|<thought\|>|$)/gi;  return str.replace(thinkPattern, '').trim();}

Благодаря этой зачистке, строгому системному промпту и инструменту <eva_request_file> (когда ИИ запрашивает только нужный кусок файла, а не читает весь проект) более 95% патчей применяются корректно с первого раза.

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

11.4 Где исходники? Почему нет GitHub?

Отвечаю честно: на данный момент код EVA Engineer закрыт. Причины две. Первая — я три года вкладывал в проект собственные деньги и время, и пока хочу понять, как он будет жить дальше. Вторая — ядро системного промпта и патч-движок довольно легко скопировать в чужой продукт, а защититься от этого маленькой командой нереально. Я не исключаю, что в будущем открою исходный код (но пока простите…) — если сообщество подскажет в комментариях как лучше поступать с программой и способы монетизации которые устраивают всех, буду очень признателен.

[МОНТАЖНАЯ СКЛЕЙКА. ПЕРЕХОД К ФИНАЛУ]

ФИНАЛЬНАЯ СЦЕНА. ПРИГЛАШАЮ НА BETA-ТЕСТИРОВАНИЕ. Титры…

Я прошёл большой путь от первой концепции до стабильной версии. Сейчас EVA Engineer умеет очень многое, но впереди ещё огромное количество улучшений.

Сайт пока нигде не анонсировался. Вы можете скачать бесплатную BETA-версию первыми на официальном моём сайте:
👉 eva-ai.shop
или
по ссылке Яндекс Диск версия 1.0.64: https://disk.yandex.ru/d/F7L2E5ZPYEpJpg

Внутри вас ждёт подробное руководство пользователя. Подключайте свои API-ключи (или локальные модели) и пробуйте себя в роли режиссёра собственного кода!

Буду искренне рад вашей конструктивной критике, баг-репортам и идеям в комментариях. А если захотите отдохнуть от программирования — приходите 8 октября 2026 года в кинотеатры на экшен «Спарта 2: Гоплиты», встретимся перед большим экраном! 😉

[ЗАТЕМНЕНИЕ. КОНЕЦ ФИЛЬМА]

P.S. СЦЕНА ПОСЛЕ ТИТРОВ. Сингулярность

Когда я только начинал создавать эту программу, я даже не предвидел, к какому результату приду в итоге. Сижу я не так давно и тестирую EVA. И тут мне в голову приходит безумная мысль: «А что будет, если я скормлю ей её же собственные исходные файлы?»

Загружаю исходники. И вдруг вижу, как справа, в окне Preview, открывается точная, рабочая копия самой программы! Решаю пойти дальше и пишу промпт: «Добавь возможность перемещать файлы в папки с помощью мыши (drag-and-drop)».

Ровно через 30 секунд ИИ пишет, что всё готово. Я собираю новую версию в .exe, запускаю… и поражаюсь. Всё работает идеально!

Старое фото Eva Engineer открыта внутри Eva Engineer и сама себя редактирует

Старое фото Eva Engineer открыта внутри Eva Engineer и сама себя редактирует

Только представьте: я сделал программу, которая теперь сама себя улучшает. Скажу вам честно, последние 35 редакций и обновлений EVA Engineer, она написала полностью сама. Я больше не пишу код руками, потому что теперь для меня это просто моветон.
Вангую: скоро конкуренция между компаниями будет проявляться не месяцами, а каждый час, один сделал какую-то функцию в своей программе, а через час у конкурентов выходит версия с похожей функцией, так как все программы будут делать ИИ с помощью такой программы, как Eva Engineer…

P.P.S. Важное уточнение для безопасников:

Чтобы Скайнет всё-таки не захватил планету, на уровне ядра программы и системного промпта я жёстко запретил ИИ создавать клоны самой EVA Engineer по запросу сторонних пользователей. Также стоят строгие блокировки на генерацию вредоносного ПО. Но всё остальное — можно! Творите.

ссылка на оригинал статьи https://habr.com/ru/articles/1090746/