Комментарии 32
Задолбали уже со своим вайб-говнокодом. Что, писать на хабре больше неочем?
Ну а как же, написал скилл - напиши статью, ведь это секретные умения и никто так не делает и не умеет делать, хотя об этом каждая вторая статья.

К каждой статье есть вот такой блок с контролами. Нажми на "шестерёнку", а потом скрой публикации автора. Прекрати ныть и сделай себя счастливым сам! Ты - сильный, ты - сможешь!!
если бы это еще работало. Скрывает публикации только из главной ленты, но не из блока новостей и блока "читают сейчас"
Так претензия не к автору, а к теме. От новых авторов это не поможет.
Статья получила +10 на данный момент и 35 читателей добавили в закладки. Она кому-то оказалась полезной. Просто подумайте об этом.
А если у вас есть способ, чтобы читатели получали доступ только к полезным для них публикациям - поделитесь с редакцией Хабра. Ныть про то, что "этот мир под вас плохо подстроили" - инфантильно.
По-моему, вы с ответом промахнулись.
Я лишь только отметил, что ваш совет не поможет в решении проблемы изначального комментатора. Где вы нытьё углядели?
Я правильно понимаю картину? Сначала ты бьешься с ллм, чтобы она не накосячила с требованиями и реализацией, потом с тестами. После тебе надо всё нагенерированное просмотреть и скорее всего снова переписать. Все это в несколько итераций. Плюс, тебе надо таскать за собой целую вселенную промтов, чтобы ллм-ка тебе дала нужный результат, который все равно не очень надежный. При этом, она успешно работает с маленьким контекстом, там, где и ты вполне себе можешь без проблем справиться. А вот когда контекст становится большим, когда помощь ИИ действительно нужна, она тоже не справляется.
Nice...
Мне кажется люди ещё не осознают границы ai кодинга. Всегда их переступают и страдают.
Реально работает цена/качество небольшие изменения и конечно с тестами в идеале с доп ллм ревью. Быстро и 99% стабильно может сделать codex gpt5.4 сегодня.
Проблема что так же он может сделать намного больше, и это будет чуть хуже/ошибочней. Но вот это "чуть хуже" на самом деле уже того не стоит, из-за перечисленных вами проблем.
Поэтому пока что люди ругаются, потому что llm обманчиво показывает что все может (+маркетинг провайдеров) и потому что оценить четкие границы людям сложно.
Но Ai быстро развивают и в какой-то момент, бям сможет делать стабильно больше чем человек. (для этого правда надо не только мозг ллм прокачать, но и интерфейс взаимодействия с человеком, что бы было точно ясно, что он хочет).
Но Ai быстро развивают и в какой-то момент, бям сможет делать стабильно больше чем человек
Думаю, это разве что с AGI будет возможно, если таковой когда-нибудь увидим. На сегодняшний момент - сомневаюсь, за постоянным его обучением (в силу даже банально появления каких-нибудь новых библиотек, новых версий, выявления новых уязвимостей и т.д.) все еще стоят кожаные мешки (пусть и с ЗП из 6 цифр), а значит, человеческий фактор. Пока косячит человек - примерно так же, а скорее и хуже, будет косячить ЛЛМка, имхо)
Как мне кажется, использование LLM поставило разработчиков в очень интересное положение, когда в погоне за «производительностью», (которая принимает какие‑то пугающие масштабы: «о нет, нужно быстрей, быстрей, иначе меня заменят, что сейчас в тренде, закрыть таску, зелёные тесты, о нет, вышла новая LLM, я устарел!» — с таким состоянием психики и жить не хочется, имхо), разработчику приходится выполнять не только свою работу, напоминаю, писать код, но ещё брать на себя обязанность постоянно проводить код‑ревью кода, статистически подобранного LLM, независимо от своего уровня знаний и умений. Работы больше, когнитивной нагрузки больше, денег столько же. А чтоб выровнять "дебет" и "кредит", то нужно подключать ещё одну, (или даже не одну), LLM для ТЗ/проверки ТЗ/написания тестов/проверки написанных тестов/etc, goto 10.
Я уж молчу, что за это всё удовольствие платить надо, (только за этот праздник «нейросетебесия» платят почему‑то все). Nvidia в плюсе, она продаёт железо, OpenAI/Anthropic в плюсе, они продают свои «нейролопаты» и обещания инвесторам, бизнес в плюсе — пиар на «хайпе» Ai, который суют куда только можно и нельзя, (скоро, думаю, можно будет увидеть рекламу «наш новый творожный сырок теперь по рецепту ChatGPT!»); сокращение расходов на разработчиков, (прямые сокращения/оптимизации зарплат, или увеличение плана — «ну, нейросети вас же ускорили, так впрерёд, 100 тасков до конца недели»); инфоцыгане в огромном плюсе - новая модная темка, "вы опоздали! Вайбкодинг уже стандарт, успей запрыгнуть в последний вагон! Только я могу вам помочь, подписывайтесь на мой приватный ТГ". Вот только где в этом прекрасном новом мире место для разработчика Васи? Мне кажется, что в местах довольно неприглядных.
LLM может написать код как уровня «джуна», так и уверенного «сеньора‑помидора». Тратить время на «настройку», (точнее, это не настройка, ибо настройка подразумевает детерминированность — «включение этой опции приведёт к понятному результату», это процесс написания специальных «заклинаний» в CLAUDE.md, чтоб «ну на этот раз точно заработало»). Зачем? Проще взять и просто написать, чёрт возьми, код. Нейросеть уже есть, она всегда рядом и доступна 24/7, прекрасно справляется с написанием кода, ОГРОМНОЕ контекстное окно, минимум необходимых зависимостей для работы. Да, с обучением сложно, но что поделать.
Простите, накипело.
А как это модерацию прошло?! Реклама на автохимию и телеграм канал.
на контексте <40% для 200к и <10% для 1М модель ведёт себя оптимально.
Т.е. оптимально не превышать 80-100к контекста.
Поэтому я глубоко убежден, что каждая строчка, написанная нейросетью, должна быть отсмотрена. Не понимаю, почему мы считаем, что обязательное ревью для кода, написанного человеком - это дефолт и мастхев, а для нейросети, которая ошибается явно чаще человека, это дело можно пропустить.
Потому как ревью после нейронки - задача повышенной сложности. Код выглядит красиво, ключевые моменты в порядке (в большинстве своем). Ну а баги в самых неожиданных местах прячутся.
Т.е. оптимально не превышать 80-100к контекста
Да, где-то к таким цифрам я и пришёл. Но это мои личные наблюдения, не рекомендую их за догму принимать.
Ну а баги в самых неожиданных местах прячутся.
Мне кажется, баги чаще всего прячутся в неожиданных местах независимо от того, кто автор. Все, что прячутся в ожидаемых местах, обычно правят до ревью 😉
Мне кажется, баги чаще всего прячутся в неожиданных местах независимо от того, кто автор.
Да, но с опытом примерно понимаешь, что можно глянуть “краем глаза”, а что надо “копнуть” глубже. С LLM же под внимательное изучение попадает весь код - и все равно упускаются проблемы.
Не говоря уже о том, что после LLM кода просто больше. И LLM в целом имеет привычку усложнять.
IMHO, нет смысла человеку ревьюить нейрокод. На край, можно поручить это другой нейронке, но тоже такое - могут вступить в сговор. А вот делать приёмочные тесты (интеграционные) - смысл, наоборот, есть. Но это и с людьми так.
Человек может изучать сгенерённый код, чтобы понимать, как "думает" нейронка, но ревьюить "каждую строчку"... перебор, на мой взгляд.
IMHO, нет смысла человеку ревьюить нейрокод.
Вы осторожней с такими выражениями. Молодые умы начитаются и не будут набивать скилл ревьюинга. Я полгода назад пробовал собез в европейских финтех, основное тех задание было ревьюить большую простыню кода и найти ошибки и архитектурные промахи (где кривое ООП, где лучше заменить на композицию, где изменить дизайн интерфейса для улучшения масштабируемости в будущем и прочие недочеты).
Лично я сравниваю навык ревьюинга нейрокода с навыком ревьюинга машкодов после компиляции исходников. Неплохо, конечно, разбираться в таком коде, но корректность его работы нужно обеспечивать на другом уровне (компилятор, тесты). У европейского финтеха может быть другое мнение на этот счёт.
Интеграционные тесты в лучшем случае проверят, что продукт ведет себя так, как задумывалось. Но оставят за бортом большой пласт проблем из серии “такое не задумывалось”. В частности дыры в безопасности, плавающие баги и прочие моменты. Да, ревью кода не даст гарантий на отсутствие этих проблем. Но хоть что-то - лучше, чем ничего.
P.S. Исследования показывают, что от 70% до 90% современных приложений содержат критические уязвимости из-за недостаточного тестирования кода, созданного ИИ.
IMHO, нет смысла человеку ревьюить нейрокод. На край, можно поручить это другой нейронке, но тоже такое - могут вступить в сговор. А вот делать приёмочные тесты (интеграционные) - смысл, наоборот, есть. Но это и с людьми так.
Это понятное замечание, но давайте я конкретнее объясню: неужели хорошая идея на 1000 приёмочных тестов писать ещё 1000 таких же, но перезагружающих приложение, чтобы проверить, что ллм все, что должна была, сохранила в базе, а не в стейте приложения? Я видел, как она делает нечто подобное. И ещё десятки других глупых ошибок, которые тестами вылавливать - натуральное безумие.
Я видел, как она делает нечто подобное.
У меня так Codex 5.3 xhigh размотала пет проект, в тесте не смогла создать базу данных (я не понял почему, до нее в тестах база мокалась мной лично отлично и я сказал смотри эти примеры как референс), она же из-за какой-то ошибки перелинковала в проект базу так что ее стало два инстанса в райнтайме, из-за чего опять тест ИИ не смогла написать, потом она просто пошла по хардкору и тупо захардкодила жостко базу в самом проекте минуя DI (в тесте как раз мок делался через DI) и тесты ИИшные стали проходить, при этом расхерачив мне архитектуру проекта, но да тесты стали работать.
Жиза, сейчас, пока пилю пример Фреймворка, понимаю, насколько ллмкам нелегко на новых кодовых базах, когда ещё нет накатанных рельс.
Я как раз только что выложил свою публикацию на похожую тему (Spec-Driven Dev). У меня в коде тоже используется мой "самописный фреймворк" без "накатанных рельсов". Проблему решал "самописным скиллом" (teq-esm-validator). Если у агентов есть спецификация по условиям применения фреймворка и скилл-валидатор, который загоняет агента в рамки - вполне себе приемлемо (для человека). Но расход токенов, думаю, должен быть побольше. Особенно на старте, пока шаблонного кода мало.
IMHO, ревьюить каждую строчку нейрокода человеками - безумие не меньшее.
Я это к тому, что смотреть сгенерённый код людям нужно. Но это не ревью - это анализ. Поиск типовых "ляпов", что делает агент, и исключение их как класса через документы контекста, промпты, скиллы, тесты и перекрёстные проверки другими агентами. Человек не вывезет эту гонку, на мой взгляд.
ревьюить каждую строчку нейрокода человеками - безумие не меньшее.
Ну почему же) вот я 3 месяца так и делаю, вполне рабочий вариант.
У меня процесс сейчас: отпустил поработать, поревьюил, поправил косяки, отправил дальше. Если б косяков не было, я бы спокойно отпускал гулять на подольше, но косяки есть, поэтому пока только так.
Есть ли возможность сделать процесс сильно более автономным? Наверное. Но
Потребление токенов там совсем другое. Мне 200 баксов в месяц хватает впритык на текущий процесс.
Это требует усилий по разработке такого процесса. Сейчас пытаются сделать что-то подобное, см Gas Town и Weaving Look. Но это не готово.
Я когда вижу, что агенты генерят, у меня глаз дёргается. Ну а когда не вижу - норм. Что-то делают, как-то работает - уже ОК. Но я под Magento больше 5 лет интегратором различных расширений был. До сих пор удивляюсь, как тот зоопарк работал. Всё-таки у сложных программных систем в определённой конфигурации есть достаточный уровень самостоятельной живучести.
Александр, большое спасибо за статью.
Готов подписаться практически под каждым словом, вот ровно этот же путь и те же выводы. И теже базисные точки - подходы, фреймворк, пайплайн...
Единственное чем хотел бы дополнительно поделиться, если хотите - чуть развить тему.
Помоим правилам подход с "контекст < 40k токенов - хорошо" а "контекст > 150k токенов - плохо" верхнеуровнево правильный, но может быть чуть уточнен.
О чем веду речь. Я в общем-то всегда следовал ровно такому правилу, но как-то случайно запустил довольно серьезный кодинг на окне сильно за 200к (на 1М режиме модели). И с удивлением обнаружил что она отлично справилась.
Я стал гадать, как так, как оно рушит мою теорию. Стал исследовать, рисерчить. И пришел к выводу что помимо самого объема контекста очень сильно решает его ОДНОРОДНОСТЬ,
Если контекст сильно семантически неоднороден то уже 20-30к токенов могут свести любую модель сума и кодинг-сессию лучше не начинать, а переехать с планчиком в новое окно.
И наоборот, если вы в течение 2х чаосв на 200-300к токенов проектировали одну какую-то вещь, прыгали вокруг одной семантики, понимали друг друга, усиляли позицию и углубляли понимание (вот именно в том режиме в котором вы говорите - "напарник") то закодить прямо здесь и тут вполне возможно, а порой даже и лучше, ну потому что вы как бы в этот момент на одной волне.
Я не призываю обязательно делать так, это тонкая история и для меня это стало вопросом "чувствовать контекст", как помните в фильме 21 - колода горячая. На языке LLM - это насколько распределен attention по текущему контексту, нужно ли нейронной сети тратить и переключать большой кол-во голов на большое кол-во ортогональных семантик, или все когерентно и она максимально сфокусирована на главном.
Я пока так вкинул просто, но если интересно будет подискутировать то я открыт. Проводил рисерч по современным исследованием на эту тему, нашел для себя подтверждения. И даже скилл себе запилил на оценке распределения семантического ядра текущего контекста. Ну разумеется запускать его надо в форке чтоб не портить тот самый контекст = )
ИМХО для меня лучше всего работает агент как есть и каждый раз писать промпты.
Во первых, таким образом контекст получается максимально точным и сфокусированным, а результат в высокой степени предсказуемым.
Во вторых это дисциплинирует, вместо того чтобы пытаться переложить разработку на агента, тип вот тебе знания, сделай красиво некрасиво не делай, ты сохраняешь code ownership но и используешь ИИ между строк, там где задача достаточно прямолинейная, где промпт очевидным путем мапится на ожидаемый код.
В третьих, чтобы разрабатывать последующий код, нужно знать текущий код. Когда ты делегируешь агенту целые фичи, он генерит сразу много кода, качество ревью падает, ты постепенно теряешь контекст кода, и соответственно не можешь давать точные инструкции агенту. В коде начинает копится техдолг, неиспользуемый код, дублируемый код, начинает плыть структура. И вот это уже не твой код, ты его не понимаешь и не хочешь понимать. А коллеги тем более, каждый начинает решать задачи ИИ костылями лишь бы работало, потому что разбираться в этом нейрослопе а тем более рефакторить его нет ни времени ни желания.
Для меня как минимум, ИИ кодинг работает только если Я сохраняю полную ответственность за код. Пусть код генерит ИИ, но Я отвечаю за каждую его строчку, каждое решение, Я могу аргументировать каждое решение, объяснить колеге, итд.

Вайб-код для настоящих инженеров: старые практики в новых реалиях