Сегодня я и моя командой заняли первое место на хакатоне гражданских проектов. Сделали бота, ищущего контракты на капремонт по адресу, и выкачивалку-парсилку Госзакупок для него. Можно использовать как референс или брать готовый код в свои проекты, он в Public Domain: https://github.com/unxed/crwatch

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

Сперва о сложностях

Главная проблема программирования нейронками уже не галлюцинации, а уметь прерваться, когда нейронка начинает ходить по кругу, и подсказать ей принципиально другой поход. Пока в 4 случаях из 5 это может только человек.

Какие ещё есть сложности? Необходимость всё время гонять код между своим компом и нейронкой. Возможно, это решается использованием редактора со встроенным AI-помощником, но я довольно консервативен и не хочу менять редактор. Кроме того, мне нравится возможность самому решать, какие части кода держать в контекстном окне.

В процессе перегонки кода туда-сюда у вас скорее всего поедет синхронизация версий (потому что вы будете вносить свои изменения поверх нейроношных или тем или иным способом компилировать разные ответы нейронки и свой код, а она не будет в курсе всех этих изменений). Чтоб справиться с этой проблемой, я иногда скидываю сетке архив с текущей версией, чтоб она не путалась. И ещё — они не умеют писать патч-файлы. Бесит.

Выбор инструмента

Он довольно прост: есть Gemini 2.5 Pro (доступна бесплатно на aistudio.google.com) и есть всё остальное. Потому что всё остальное не даёт ничего даже близко похожего на окно контекста в 1 миллион токенов. Иными словами, всё остальное может работать только помощниками в программировании, но никак не программировать под вашим руководством.

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

Повышаем эффективность

Если задача сложная, просите сначала написать план решения. Потом попросите покритиковать его, поискать слабые места и альтернативы. И только потом код.

Формулировка «напиши систему X» часто приводит к нерабочему коду. Гораздо лучше просить кусками: «сделай функцию Y», «напиши модуль Z с интерфейсом таким-то». Иными словами, делите сложные задачи на простые части, результат которых легко проверить. У меня нет скрипта «скачать всё нужные данные с Госзакупок, распарсить и залить в базу». Есть скрипты: «скачать все закупки в JSON», «обогатить JSON, загрузив и распарсив подробные свойства каждой закупки (адрес объекта и т. п.)», «сделать из JSONа SQL дамп», «провести постобработку в БД».

Пусть нейросеть сначала выдаёт черновой вариант, а вы уточняете. В режиме «быстрого прототипа» модель работает эффективнее, чем если сразу требовать идеально чистый код. Даже если нужна сложная логика, сначала просите минимальный рабочий пример (MWE). Так проще понять, где модель ошибается — в логике или в деталях её реализации.

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

Сложные функции, такие как «распарсить строку со 100500 адресами с произвольными разделителями и форматами», отлаживайте не на живой БД, а тестовым скриптом, куда легко добавлять новые данные из багрепортов. Там и правьте. А потом копируйте готовую и отлаженную функцию в рабочий код.

Специально просите вставлять всюду много отладочного вывода. Потом уберёте, а процесс ускорит в разы. И не забывайте о контроле версий: git diff и git show полезны при разработке нейронкой не меньше, чем при обычной.

Задавайте формат ответа. Сразу уточняйте: «код без пояснений», «код с комментариями», «только отличия от предыдущей версии, и как их внести, языком, понятным джуну». Это экономит токены и снижает хаос в диалоге.

LLM может придумать API, которое «выглядит правдоподобно», но не существует (или не существует в вашей версии софта), к этому надо быть готовым. Сетка обычно сама осознает это, если показать ей логи приложения и/или ошибки компилятора. Если это не помогает, можно скормить сетке доки на фреймворк или его релевантную часть.

Комбинируйте несколько моделей. Одна может хорошо писать код, другая — находить баги, третья — объяснять. Разнести роли эффективнее, чем нагружать одну модель всеми задачами сразу. У меня обычно открыта Gemini 2.5 Pro для разработки и ChatGPT для запросов справочной инфы в процессе, а ещё она иногда, пусть и не часто, подсказывает решения, которые не приходят Gemini в голову.

Просите писать либо на языке, который знаете лучше всего (для коммерции и случаев, где важна скорость), либо на языке, который хотите изучить (для проектов для души). Ей пофиг, а вам — повышение эффективности. Но учитывайте: на непопулярных языках она пишет хуже.

Если боитесь за надёжность и предпочитаете код, написанный человеками, или если требования к ИБ повышены, пишите нейронкой прототипы, PoC, MVP. Потом по той же архитектуре сделаете руками. Ускорит в разы: fail fast. Ещё ими можно: писать тесты, искать по коду, документировать его автоматически, находить узкие места и возможности для оптимизации, писать сборочные скрипты и другую вспомогательную инфраструктуру. Да, и просите писать комментарии таким языком чтобы понял джун — всегда может так оказаться, что с кодом будете работать не только вы.

Даже контекстное окно Gemini в миллион токенов когда-нибудь закончится, а ещё после 300к она знатно тупит. Экономьте токены. Неудачные ходы нейронки трите вместе с запросом, и потом пишите новый с учётом её ошибок.

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

Каждый диалог должен кончатся чем-то логически завершенным, работающим и т.д. — или комментарием, на чём остановились.

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

И помните: это инструмент со своими ограничениями. Люди, впрочем, тоже ?‍♂️ ?

А ещё это делает программирование весёлым снова!

P.S.: Статья писалась на основе твиттерского треда, но для Хабра я добавил ещё несколько полезных рекомендаций и скомпоновал всё логичнее.

Комментарии (26)


  1. JohnShip
    25.08.2025 01:54

    Интересует ваше мнение: Что скажете за Cursor?


    1. unxed Автор
      25.08.2025 01:54

      Как одному из основных разработчиков far2l мне привычнее всего встроенный редактор Фара, и менять его на что-то другое не очень хочется. Но если там есть возможность подключать бесплатную Gemini 2.5 Pro с http://aistudio.google.com или хотя бы платную, и если там можно вручную задавать, какие файлы должны постоянно висеть в контекстном окне — можно попробовать


      1. JohnShip
        25.08.2025 01:54

        Сам использую фар много лет (те кто используют фар не бывают "не много лет", они либо используют фар "много лет", либо даже не знают что это такое :) ). Но новые времена требуют новых подходов. Невозможно в фаре (хотя он безусловно хорош) взять каталог файлов с кодами и сказать "найди все классы работы с кроном, найди метод запуска крона и добавь параметр в метод с новым параметром ХХХ и обнови все классы чтобы они использовали уже новый метод с новыми параметрами". И речь даже не об умной "замене с поиском", которую нуууу... наверное можно замутить и на фаре (ну если задаться целью и гвоздь можно клавиатурой забить), но вайбкодинг - это всетаки уже другой стиль редактирования (и я сейчас именно (!) о редактировании даже, а не о программировании, которое тоже собственно сильно отличается сегодня от времен когда мы на ДВК в кодах на перфокартах кодили). Почему я спросил за Cursor. Да, он платный (и это минус /сарказм/). Но у него Visual Studio Code и это замечательный инструмент, который так и не побил мою любовь к фару и я продолжал кодить в фаре, уже даже понимая что местами VCode лучше. Но с ИИ-помощником - тут уже и речи быть не может. Как только я сел за Cursor, я понял что-то изменилось за последние 20-30 лет в кодинге :))
        Я продолжаю редактировать какие-то файлы в фаре, но вайбкодинг - это не просто редактирование скриптов. #этадругое.
        Вот почему я и спрашиваю за сравнение с aistudio. Там как в Cursor? Лучше или хуже? Gemini есть и там и там. Но в Cursor оно "под капотом" и "просто работает". Я не думаю какая там модель (а там их несколько), я просто пишу код... нет, я даже не пишу ход. Я именно чувствую себя архитектором кода. Я говорю (!) как писать код, а ИИ-ассистент - это некий аналог джуна или подмастерья у художника - берет и делает. Да, надо проверять (и тут кстати можно и фаром посмотреть), но проверить и написать с нуля - это две большие разницы, как говорят в Одессе.

        UPD: Глянул ваш гит с вашим проектом. Посыпая голову пеплом, скажу с сожалением что не знал о вашем проекте ну вот вообще никак и ничто. Так что от меня вам мой респект и уважуха. Годная тема.


        1. unxed Автор
          25.08.2025 01:54

          Спасибо! ❤️

          Про Cursor. Поискал в инете. Gemini 2.5 Pro c 1 млн. токенов можно прицепить, но это должна быть либо платная Gemini, либо платный Cursor. Окно контекста собственного ИИ 128 тыс. токенов в бесплатном режиме, в платные пока не вчитывался, сначала посмотрим, насколько сообразительный ИИ там.

          В текущей реализации закреплённые вручную файлы (pin) навсегда не сохраняются, после закрытия/перезапуска редактора или чата список «прикреплённых» сбрасывается. Фича сделать постоянное закрепление на стадии обсуждения, как я понял.

          Скачал, запустил, попросил его решить одну из рутинных задач по far2l, он решил. Нра! Пока не могу сказать, насколько сложные задачи он решать в состоянии в бесплатной версии (128 тыс. токенов это не 1 млн., но для многих задач хватит), но выглядит так будто для сравнительно несложных задач можно сэкономить между тасканием кода туда сюда. Свое место в инструментарии займёт наверняка, понравится — возьму платный, напишу ещё статью.


  1. pol_pot
    25.08.2025 01:54

    Это вообще работает? Парсер же заблочат автоматом.


    1. unxed Автор
      25.08.2025 01:54

      Будем решать проблемы по мере их появления. Ментор на хакатоне на аналогичных задачах и с капчами справлялся.


  1. snakes_are_long
    25.08.2025 01:54

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

    просто выгрузите диалог в текстовый файл и передайте его ИИ вместе с первым сообщением в новом диалоге

    фактически он сделает тоже самое - создаст саммари этого текстового файла внутри себя НО при этом у него будет как бы "шпаргалка" с которой он сможет сверяться (да это ограничит в итоге ваше контекстное окно, т.е. переезжать из диалога в диалог придется чаще. но качество "непрерывности" будет больше)

    p.s. ещё один "лайфхак", может кому-то будет интересным, Gemini 2.5 Pro умеет в видеофайлы формата mp4. создавая с ним фронтенд-приложение (что-то вроде кастомного календаря-трекера событий) я обнаружила что передать ему видеофайл с поведением и пояснениями что не так и как надо более эффективно чем делать скрины или просто описывать словами


    1. positroid
      25.08.2025 01:54

      Кстати, cursor с недавних пор сам считает и показывает процент использования контекста и при близости к границе суммаризует текущий чат и начинает новый. Эмпирически - не теряя супер важных деталей, если в прошлом чате шёл рефакторинг - то и в новом продолжится. Удобно


  1. MAXH0
    25.08.2025 01:54

    Gemini 2.5 Pro

    Без танцев показала свою недоступность в нашем регионе. Как я понимаю нужно послать через три буквы?


    1. unxed Автор
      25.08.2025 01:54

      Вот как раз вам вероятно больше подошла бы доступная в РФ ChatGPT в виде плагина к IDE (выше хвалят Cursor), там окно контекста не так критично. И ещё я бы предложил изучить, что есть у Сбера и Яндекса. У них точно были свои модели, насколько мощные затрудняюсь ответить


      1. positroid
        25.08.2025 01:54

        Не все модели в cursor, да и сам cursor, доступны из РФ. Без трех букв в современных условиях не обойтись.

        Кстати про gemini - Вы очень категоричны на его счёт в статте, сравнивали ли с gpt-5-high или opus-4? На моих задачах уже не всегда длина контекста имеет решающее значение, gpt-5 себя лучше показывает.

        Сбер и яндекс отстают от фронтир моделей по меньшей мере на год.


        1. pol_pot
          25.08.2025 01:54

          gemini 2.5 pro не просто дает 1млн контекст, он это делает абсолютно бесплатно.

          Гпт с опусом очень дорогие. Джемини на самом деле тоже, если за него платить.


          1. positroid
            25.08.2025 01:54

            20$ в Cursor за фактический безлимит в auto режиме (там вроде только gpt-5 и sonnet-4 сейчас) - не так чтобы супер дорого. Платить за api напрямую - да, согласен.

            По метрикам cursor я 300$+ в прошлом месяце на апи бы потратил, но их покрыла подписка.

            Стоит ли 20$ изворотов с бесплатным gemini через ai студию (иначе как его подцепить)?


        1. MaksimMukharev
          25.08.2025 01:54

          Да, ChatGPT 5 просто чудеса творит с кодом невероятные. Даже модель Middle работает сильно лучше по ощущениям, чем Gemini.


    1. rsashka
      25.08.2025 01:54

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


      1. Hopenolis
        25.08.2025 01:54

        Платить за API без подписки слишком дорого. Даже если это дешевый джемини с наполовину заполненным контекстом, каждый запрос будет обходиться больше чем в целый доллар, и это без учета наценок от людей, которые "помогают" пройти на три буквы.


        1. rsashka
          25.08.2025 01:54

          Даже если это дешевый джемини с наполовину заполненным контекстом, каждый запрос будет обходиться больше чем в целый доллар

          Вы на самом деле считаете, что джемини дешевый?
          Промпт (за 1M токенов):

          • 1,25 долл. США, подсказки <= 200 тыс. токенов (101 руб. по курсу 83)

          • 2,50 долл. США, подсказки > 200 тыс. токенов (202 руб. по курсу 83)

          Ответ (за 1М токен):

          • 10,00 $, подсказки <= 200 тыс. токенов (807,5 руб. по курсу 83)

          • 15,00 долл. США, количество подсказок > 200 тыс. (1211,25 руб. по курсу 83)

          Эта же самая модель у агрегатора:

          • Размер контекста (в токенах): 1 048 576

          • Размер вывода (в токенах): 65 536

          • Промпт (за 1M токенов): 147,32 руб.

          • Картинка-промпт (за 1к токенов): 0,608 руб.

          • Ответ (за 1М токен): 1 178,57 руб.

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

          Модель: qwen3-coder

          • Размер контекста (в токенах): 1 000 000

          • Размер вывода (в токенах): 65 536

          • Промпт (за 1M токенов): 23,57 руб.

          • Ответ (за 1М токен): 94,29 руб.


          1. pol_pot
            25.08.2025 01:54

            На 45% дороже и доступны только промпты до 128к?

            Джемини дешевая относительно других топов, о3, опус итп.


  1. krdstas
    25.08.2025 01:54

    А как вам Qwen3 с моделью Coder?


  1. ExternalWayfarer
    25.08.2025 01:54

    Уже 10000-ая статья про вайбкодинг, но опять про то же самое.

    "Делайте так, как надо, а как не надо - не делайте"

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