Мой блог
Имаго-кодинг: как дообучение моделей и LoRA меняют процесс разработки
Эволюция применения искусственного интеллекта в программировании прошла путь от простых чатов до сложных инструментальных каркасов. Я называю следующую стадию имаго-кодингом, подразумевая превращение модели во взрослую «бабочку», которая глубоко встроена в контекст проекта, его структуру данных и устоявшиеся конвенции.
Сначала я использовал нейросети стандартными методами: подключал чаты, внедрял плагины для среды разработки и создавал собственные инструменты с поддержкой агентов. Однако со временем я заметил, что хотя скорость написания кода увеличивается, качество перестает расти, а технический долг накапливается. Процесс разработки, зародившийся в эпоху вайб-кодинга, оставался прежним, обнажая скрытые узкие места.






Почему фронтирные модели не подходят для глубокой разработки
Главная сложность заключается вовсе не в ограниченности больших языковых моделей. Они обладают колоссальным объемом знаний и превосходно генерируют типовой код. Трудность кроется в другом: стандартная фронтир-модель абсолютно не осведомлена о специфике моего отдельного проекта.
Она не обладает информацией о том, в какой временной зоне сохраняются логи, как изменились таблицы после очередной миграции или какие внутренние слои абстракции используются в архитектуре. В роли ML-разработчика я постоянно сталкиваюсь с тем, что львиная доля промпта уходит на объяснение базового контекста, но модель все равно срывается к усредненным решениям.
Бенчмарки вроде MLE-bench демонстрируют неплохой прогресс агентных систем на публичных задачах с чистой формулировкой, но они мало применимы к закрытым корпоративным репозиториям. Кроме того, серьезным барьером выступает правовой аспект. Работа с коммерческой тайной и персональными данными исключает отправку информации в зарубежные облака. Локальные модели полностью решают эту задачу, оставляя весь код, схемы и логи внутри контура предприятия.

Эволюция подхода: от RAG к адаптерам
Наблюдая за тем, как дообучение улучшает производительность моделей в продакшене для узких задач, я задумался о применении аналогичного подхода к инструментам разработки. На каждом проекте у меня уже функционировал индивидуальный RAG, собирающий документацию и статьи, но полноценное обучение крупной модели с нуля под каждую задачу было нецелесообразным.
Прорыв произошел благодаря переносу принципов работы диффузионных архитектур в языковые модели. Если LoRA успешно управляет генерацией графики в нужном стиле, логично использовать ее для настройки генерации кода. Так сформировалась концепция двух «крыльев»: RAG обеспечивает строителя актуальными знаниями, а LoRA-адаптер прививает необходимые привычки и стандарты кодирования.
Многие специалисты упускают из виду дообучение моделей из-за ложного когнитивного искажения, разделяющего генерацию текста и графики. В отличие от спецификаций в Spec-Driven Development, которые улучшают сам запрос к агенту, имаго-кодинг модифицирует исполнителя, меняя внутреннее представление модели о решении задач.
Архитектура строителя: харнесс, RAG и LoRA
Моя система состоит из трех базовых уровней, обеспечивающих непрерывное накопление и применение знаний.

Компоненты многоуровневой системы
Первый слой представляет собой харнесс, который автоматически скачивает свежие статьи с arXiv, делит их на фрагменты и индексирует вместе с документацией проекта и историей коммитов. Второй слой отвечает за поиск с использованием контекстуального чанкинга, BM25 и RRF по методологии Anthropic.
Третий слой реализует QLoRA-адаптацию. Базовые веса модели замораживаются, а обучение затрагивает лишь миниатюрные добавки к матрицам. Это позволяет проводить локальное дообучение на потребительском «железе» с 48 ГБ видеопамяти, используя исторические пары данных из репозиториев по примеру подхода OctoCoder.
Борьба с когнитивными искажениями в датасетах
Сбор обучающей выборки оказался самой трудоемкой задачей. Изначальное заблуждение о том, что объем данных важнее качества, приводило к ухудшению работы строителя. Теперь я тщательно очищаю датасеты:

- удаляю примеры, опирающиеся на неизвестные модели факты;
- отсеиваю код, не прошедший реальные тесты;
- ликвидирую дубликаты коммитов и устаревшие проектные решения;
- контролирую баланс различных типов задач в выборке.
Оказалось, что LoRA практически не внедряет новые факты, но великолепно формирует поведение и стиль на основе 500-1000 чистых примеров. Знания поступают через RAG, а привычки — через адаптер.
Практические результаты имаго-кодинга
Главный эффект такого подхода заключается в смещении вероятностного распределения знаний. Модель перестает блуждать по кругу среди сотен гипотез и уверенно выбирает проверенные в рамках конкретного проекта паттерны.
Универсальные ассистенты генерируют усредненный код, многократно увеличивая количество дубликатов в репозиториях, согласно отраслевым отчетам GitHub. Мой строитель применяет принятые в кодовой базе сущности и абстракции, благодаря чему ревью кода проходит быстрее, а технический долг снижается.
Разработчик в этой схеме трансформируется из простого оператора чата в архитектора модели-строителя. На практике сроки создания проектов сократились кратно: месячный объем работы небольшой команды теперь выполняется в одиночку при значительно более высоком качестве результата.

Слабые места и ограничения подхода
Несмотря на высокую эффективность, имаго-кодинг имеет ряд специфических изъянов, которые важно учитывать перед внедрением.
Технические и организационные нюансы
Адаптер жестко привязан к конкретной версии базовой модели. При появлении свежих релизов процедуру обучения приходится повторять, что занимает от одного до двух дней. Кроме того, перенятие истории проекта влечет за собой риск копирования старых архитектурных ошибок и багов.
Для каждого нового клиента требуется создавать изолированный адаптер, исключая любые перекрестные выборки. Затраты ресурсов смещаются в сторону электроэнергии, аренды GPU и времени на подготовку качественных датасетов, поэтому для быстрых и простых задач методика избыточна.

Заключение
Переход на имаго-кодинг требует кардинальной перестройки процессов, перенося центр тяжести с написания кода на работу с данными и верификацию результатов. Тандем RAG и LoRA позволяет локальной модели эффективно решать узкоспециализированные задачи без перегрузки контекстного окна. Если стандартные ассистенты перестали удовлетворять ваши требования качеством кода, этот подход способен открыть новый этап в автоматизации разработки.
