За 4 дня — от идеи до рабочего приложения на незнакомом языке программирования. Именно такой результат получил разработчик, описавший свой опыт на Habr: он намеренно выбрал тему, в которой не разбирался, отказался от RAG и поставил условие, что приложение нельзя сделать единым блоком. Цель — проверить, можно ли строить большие проекты с ИИ, если правильно выстроить архитектуру.

Проблема, с которой сталкивается большинство разработчиков при работе с языковыми моделями, хорошо известна: даже сильные модели начинают деградировать, когда кодовая база превышает 40–100 КБ, а число итераций в одном проекте переваливает за 10–60. Галлюцинации нарастают постепенно — сначала модель путает формат лога, потом перестаёт понимать задачу и начинает формулировать её по-своему. Природа этого явления — самоусиление ошибки: чем длиннее контекст, тем больше «шума» попадает в следующий запрос.

МодельРоль в связкеПримерная стоимость
Qwen 3.5 Max90% задач по PythonНизкая (агрегаторы)
Gemma 4 ITРезервная при галлюцинациях QwenНизкая (агрегаторы)

Автор нашёл обходной путь через максимальную гранулярность. Каждый модуль приложения разрабатывается отдельно, содержит встроенные тесты и является самодокументирующимся — то есть понятен модели без истории предыдущих диалогов. Первым был выделен модуль работы с паролями, использующий системные защищённые хранилища ОС вместо хранения в файле. Следующим — модуль выполнения скриптов, который умеет работать как локально, так и на сервере через две разные библиотеки. Отдельно вынесен модуль автоопределения типа скрипта: sh/bash, PowerShell, Ansible/YAML, Python, JavaScript.

Решение — делить код на автономные самотестируемые модули и начинать каждый диалог с моделью заново.

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

Для предотвращения галлюцинаций автор использует пары моделей с разной базой. Для Python — 90% задач на Qwen 3.5 Max, остаток на Gemma 4 IT. Смена модели прерывает цикл самоусиления ошибки: новая модель не «знает» предыдущих ошибок и начинает с чистого листа. Стоимость при коротких диалогах — 20–150 рублей в день через агрегаторы, в том числе российские. Cursor, Copilot и Qwen Studio в этом подходе не показали нужной скорости и точности — автор допускает, что их дизайн ограничен ожиданиями широкой аудитории.

При масштабировании на большой проект возникает интерфейсный дрейф: выходные форматы модулей могут случайно измениться, а входные — обрасти лишними проверками, которые ломают тесты. Решение — всё более строгие описания интерфейсов и передача модели 2–30 файлов за раз в формате JSON с немедленным запуском тестов. Подход опирается на идею, которую автор возводит к Илье Пригожину: сложные системы эволюционируют от множества мелких элементов к небольшому числу средних с чёткими протоколами взаимодействия.