Transcription
В этом видео мы разберём с вами очень хайповую тему луп инжиниринга. Если у вас есть проблемы с тем, когда вы даёте задачу и агент делает не совсем то, а также есть проблемы с тем, что лимиты на ваши подписки расходуются быстрее и вам хотелось бы всю эту работу выполнять гораздо более эффективно, меньше проводить времени, когда вы пишете самостоятельно промты, то смотрите это видео до конца. Именно эту тему я хочу вам раскрыть и показать то, как я этим пользуюсь, какие подходы использую, какие инструменты использую. В общем, давайте к сути.
Если вы знаете, как работают разработчики, то, как правило, они работают командами, маленькими командами, большими командами. И есть те ребята, которые управляют процессом разработки, а есть те, кто непосредственно своими руками пишет. Вот этот подход я тоже решил применить. Я хотел создать такую систему, которая бы работала относительно автономно. При этом задаче по разработки документации, по планированию проекта, по кодревью, по определению критериев приёмки, а, определённого этапа вот обязательно были бы разделены на разные модели. И вот именно такой подход даёт максимально непредвзятый результат. Очевидно, что если модель будет писать код и потом сама же себя перепроверяет, то у неё в контексте где-то уже есть какие-то намёки или даже факты того, что та работа, которая была ей проделана, она правильна, но именно там большое количество багов, недочётов и ошибок.
Я для себя решил, что я использую тандем из моделей от Antropic и модели от Open AI. У меня работает коeксы или GPT 5.5 вместе с моделей Offus. Я постоянно тестирую, меняю их роли. Один работает как Teamlead, то есть он пишет документацию, делает ревью, даёт задачи, второй кодер. И наоборот, то есть я меняю и не могу вам сказать, что какая из этих конфигураций работает лучше. Но чаще всего я использую GPT 5.5 в качестве тимледа, а модель OPUS 4.8 я использую для того, чтобы писать код.
Основная причина той самой проблемы, с которой мы сталкиваемся, что мы вроде бы составили классный план документации, закинули всё это в модель и получаем не совсем то, что нужно. Ну, например, хотели мы построить самолёт, а получили подводную лодку в конце. Она как раз-таки кроется в том, что нету постоянной сверки с фактической траекторией разработки. А я вижу, что в таком тандеме это можно достигать за счёт того, что мы постоянно сверяем всё это с документацией. Кодекс он даёт хорошие, добротные лимиты, он работает быстрее, а клод он может быть в роли скептика. В качестве пищи для этого скептика служат тесты. То есть тесты - это объективные факты. Ну а наша роль, роль человека - это нести за это, собственно, всю ответственность, как это обычно происходит. То есть плохой цикл это просто верим на слово. Я думаю, что многие уже знают, что что CLD код или кодекс говорят: "Всё, этот код годится в продакшн, давай погнали, насыпай, давай своих юзеров, всё у нас работает". А по факту он даже не запускается.
Как это происходит? Вначале мы закидываем промт, потом и пишет какой-то код, говорит: "Всё готово, человек в это верит". Это, конечно, глупость, на самом деле. Всё совсем по-другому. Адекватный, нормальный, современный цикл, как бы основа того самого лупенеринга заключается в том, что мы должны составить хороший цикл. А хороший цикл, он всегда упирается в качественные критерии приёмки. То есть мы готовим спецификации, мы подготавливаем, что нам надо сделать, как нам это сделать и как понять, сделали ли мы то, что нужно и работает оно или же нет. После этого идёт имплементация. После того, как имплементация закончена, то есть код написан, код делает ревью, прогоняет все тесты, и если всё о'кей, то он это всё эскалирует на человека и говорит: "Закончено". Если тесты провалены, если критерии приёмки не соблюдены, то цикл замыкается и всё обратно идёт в имплементацию. То есть код отправляется на доработку разработчику. И сделать это довольно несложно.
Задача, на самом деле, довольно тривиальная. Конечно, у вас может быть резонный вопрос. Я плачу 100 долларов или 200 долларов за, например, клодкод. Почему я должен платить ещё подписку за код? Какой в этом смысл? А почему нужно нести двойные расходы? Или имеет ли смысл переходить на две подписки, одну за 100 долларов и другую за 100 в вместо того, чтобы платить в одно место 200? На самом деле ответа у меня нет. Это личное дело каждого. Я просто делюсь своим опытом. Я доплачиваю экстра за вторую подписку только потому, чтобы у меня был совершенно другой взгляд, чтобы у меня была совершенно другая модель, которая могла бы быть стопером или блокером для того, чтобы мой цикл работал корректно. То есть я сам не хочу принимать эту работу, не хочу делать ревью, а местами у меня даже просто компетенций не хватает. Иногда бывают настолько сложные системы, настолько сложные алгоритмы, что для того, чтобы мне в них вручную разобраться, мне потребуется, наверное, неделя читать это всё от корки до корки. Поэтому я готов на вторую подписку для того, чтобы у меня вот этот тендем был эффективно.
Если у вас поступит резионный вопрос: "А можно ли, чтобы клодкод и писал, и делал ревью?" можно, но я в такую систему не особо верю, потому что всё равно у него есть внутренняя память внутри проекта, и он постоянно будет читать одни и те же файлы, а, clд mdд, заметки, и он будет всё равно чуть более предвзят. Это можно технически решить, но я решил не заморачиваться, а вот просто соединить абсолютно разные модели.
Как выглядит конверт? Ну, вкратце я уже рассказал. Спецификация в данном случае, а кодекс пишет код. У нас получается некий артефакт- это дифы, то есть разница между тем, что было до изменений и что было после изменений. Потом Клод целенаправленно ищет причины не принять, но при этом он это делает максимально объективно, насколько можно. Конечно, субъективная часть там тоже присутствует. И дальше либо приёмка, либо надоработку. То есть, по сути, это есть тот самый loop engнириing, о котором все говорят. Ну, с некоторыми нюансами, о которых я тоже чуть позже скажу.
А давайте посмотрим на простом примере, как мог бы выглядеть такой цикл. Мы хотим в свою маленькую сиренку добавить функцию экспорта лидов в формате CSV. Мы хотим добавить вот такую вот кнопку. У нас есть определённые поля, которые должны в этот экспорт залететь. И вроде бы, казалось бы, это очень простая фича, но самое главное - это критерии приёмки. Это то, почему, собственно, клод, если он у нас в роли дапачему именно он будет принимать. То есть есть кнопка сама, а файл CSV содержит нужные поля. Есть пустой список, валидный CSV только заголовками, значения запятыми. В общем, все те наши хотелки, которые мы хотим, которые мы, как люди, которые являются конечным бенефициаром этого продукта, мы представляем себе, мы ожидаем, что они будут.
После того, как мы это всё отправили в клод, он начинает вызывать агента кодера и ставит ему задачу. То есть говорит, какой план, какие есть ограничения, какой он ожидает output, и кодекс начинает работать. А почему это всё дело называют именно инжинирингом? Всё дело в том, что для этого используются такие команды, как Go. Когда мы отправляем МPT в режиме, то модель будет работать до тех пор, пока она не выполнит эти критерии. Так вот, я использую кодекс, если он в роли кодера, так что лот ставит ему все задачи в режиме и добивается того, чтобы критерии приёмки соответствовали нашим ожиданиям. Только после этого он берёт код в review и смотрит уже на результаты тестов. Если где-то есть какие-то пробелы, он, а, либо сам дописывает тесты, либо репортит обратно кодексу и говорит, что есть пробел, нужно доделать.
Если мы говорим про селфрепорт агента, это не доказательство, потому что, как я уже говорил ранее, агент всегда предвзят. В его контексте есть уже некое мнение на тему того, что код рабочий, что всё с ним хорошо, но на самом деле либо он не работает, либо функционально- это не то, что мы ожидали. В нём нет каких-то функций. Вот, например, какого-то поля нет в этом CSV файле, который мы экспортнули. Вот та самая проблема. А когда либо агент ленится, как нам кажется, не доделывает до конца, либо он вроде бы делает, делает, делает, но оно всё немножко не работает, как будто бы не доделано полностью и целиком и вообще не годится никуда. Ну, особенно в продакшн. Если агент говорит готово, то верить на слово разумеется ему нельзя.
Какая отведена роль плода? Он не наш дружелюбный помощник, никакой не helpful assistant. Его роль - это неприятный, назойливый, ворчливый ревью, который будет лидираться ко всему, что только мы захотим. И вот он начинает делать ревью, находит какие-то нарушения, какие-то ошибки, баги. Может быть, линтер грязный, может быть, билд не прошёл, может быть, какие-то тесты всё ещё жёлтые или красные. И всё это возвращается на доработку через функционал Reject. У нас есть в режим пас зелёный, когда мы пропускаем работу агента и даём ему следующий скоп в работу. Либо мы режектим и говорим, что сорри, ты спустя рукава всю эту работу проздел. И внутри этого самого режекта мы конкретно описываем, что именно нужно доделать для того, чтобы пройти те самые критерии, а приёмки работы. То есть мы не просто говорим там: "Улучши, переделай, мне не нравится", а мы говорим очень конкретно, что есть вот такие-то проблемы, есть вот такие-то файлы, тебе нужно их переделать. То есть достаточно информативно клод сам а вполне прописывает те инструкции, которые нужны.
Что же касается тестов, на самом деле недооценивать тесты нельзя, потому что если какой-то функционал не подтверждается тестами, это могут быть юнит-тесты, это могут быть end тесты, они могут тестировать и отдельные функции, весь функционал целиком, нагрузочные тесты, это могут быть смоук-тесты, то, что можно сделать через браузер, прокликать, протыкать, что все кнопки работают прямо со скриншотом, с доказательством, а, с лого что это всё сработало. Вот пока вот это не сделано, всё остальное считается лишь мнением о том, что всё нормально. И только лишь тесты, как некая измеримая, понятная и конкретная величина могут говорить о том, что можно ли этот код принимать или всё-таки нужно его доработать. Когда все пункты закрываются, тот код принимает полностью. То есть критерий один прошёл, критерий два прошёл, ну и так далее. И у него есть зелёный вердикт, который вот принимает всю эту работу. Клод акцептует результат. И самое главное, что вот такой подход позволяет делать, он не просто говорит, что всё готово, всё работает, а он конкретно позволяет увидеть факты. это результаты тестов, это какие-то артефакты, это скриншоты, это любые доказательства того, что поставленная задача, она была реально выполнена. Ну и поэтому мы гораздо более уверенно сможем двигаться дальше и делать это оперативно и работать гораздо быстрее, чем на одной модели, пусть даже на быстрой.
Кстати, один эксперимент я довольно интересный провёл. Я использовал а кодекс в качестве Тимледа и модель deeps в качестве кодера. Я написал около 100.000 строк кода. За счёт того, что кэш впсики работает хорошо, я на это потратил меньше 30 долларов и запилил огромную часть той самой бизнес, о котором я рассказывал в одном из своих недавних видео. Можете, кстати, посмотреть, где-то сейчас вылетит баннер, и если вам интересно внедрение AI в крупный бизнес, в Enterprise, то можете посмотреть мой подход, мои идеи, может быть, вам будет интересно. Так вот, вот эту штуку я написал с помощью Deepsek V4 Pro именно в таком режиме. Я считаю, что такой подход более чем жизни способен. И там я действительно мог бы не платить даже за клоп.
И коль уж мы заговорили про деньги, то можем говорить и про цену ошибки. Нужен ли второй ревьювер, нужно ли платить отдельно вторую подписку, это, конечно, решать вам. Но если у вас высокая цена ошибки, у вас горят сроки, вам нужно за короткое время заделиверить качественный результат, а то я считаю, в этом есть определённый смысл. Очевидно, что а у Open лимиты гораздо щедрее на сегодняшний день, чем у Antropicка. И поэтому я в основном использую, а более нагруженные задачи по расходу токенов. Я использую для них модель от Antropic. Там, где, в принципе, экономия мне не сильно нужна, я туда ставлю кодекс. Ну, сказать, что больше забирать токенов, я вам пока сказать не могу, потому что у меня, ну, очень всего много работает на обеих подписках, но лично мне больше откликается по ощущениям кодекс в качестве тимледа, клод в качестве, а, кодера.
Я вам хочу показать, как вообще это может работать, на базе чего это может работать. Вот у меня здесь есть чистый проект. Я отправил только одну команду имит. И давайте посмотрим, что у нас есть в этом проекте. Он в нём нет практически там ничего, а, но есть самое главное, что позволяет всей этой штуке работать. У меня есть клод МД, в котором прописаны все мои критерии, все мои хотелки, чтобы использовался скилл Андрея Тарпаты по разработке. А обязательно была, а, проверка на AI Slop. Тоже для этого есть определённая команда. Но самое главное, что здесь описано, какой использовать скил. И самое главное, что клоду запрещено писать самостоятельно код. Понятно, что одним clД MD тут не отделаешься, поэтому у меня, а, в тех проектах, где я использую вот такой тендем, есть ещё вот скил. Называется он кодекс Teamleaded, то есть когда кодекс является кодером. И я вам сейчас покажу этот скил, как он работает. То есть в самом файле Skillmd у меня аэ расписано всё по этапам, как весь луб у меня работает. То есть дизайн, разработка документации - это на клоте. Потом написать go, prompt, тоже особым образом. Потом делегировать это всё в кодексу. Вот команда описана, как это правильно делать. То есть клод вызывает через терминал, через команду а кодекс и работает с ним. В случае, если нужна доработка, то Клотом может в ту же сессию, а докинуть ещё дополнительно промты, чтобы он в рамках своего контекста быстрее и качественно справился со своей задачей, а потом ждать спокойно и наблюдать. То есть там есть несколько вариантов. Он может заниматься полингом, то есть он может смотреть, активен код активен ли сейчас кодекс или нет. Также он смотрит по дифу через, э, гиit, есть ли какая-то работа, редактирует ли он код. И ещё есть вариант просто поставить себя на паузу и терпеливо подождать. Самое главное - это гейт. То есть это те самые ворота приёмки, о которых я говорил. Они обязательно должны вшиваться в GoPro на каждый скоe. После этого идёт ревью. С помощью определённых алгоритмов, команд можно выявить сразу слорование кода, дублирование путей, а разные дубликаты в потоке данных и прочую евесь, которую постоянно яишка пихает в код. Собственно, вот такой вот скилл. А и он, этот скилл дополнительно ещё снабжён, во-первых, темплейтами для промтинга. Во-вторых, есть примеры и есть ещё довольно простой скрипт, который, ну, это башрипт, который позволяет корректно запускать кодекс. Всё это уже описано в скиле, в скриптах и клоду очень-очень легко всем этим делом а оперировать.
Можно просто сейчас запустить какой-то промт в режиме. Я ему написал пром для того, чтобы он мне сделал самое простейшее приложение для терминала, приложение для заметок. Ну, понятно, всеми любимые заметки пресловутые, но в целях экономии времени моего и вашего на просмотр мы не будем сейчас с вами создавать тут монструозные какие-то СААЗ-системы. Мы просто посмотрим, как эта штука заработает. То есть вот я ему сам дал промпт в режиме, то есть он должен закрыть весь этот скоуп. И он уже прописывает голпромпты а для кодекса и начинает запускать рабочий процесс именно тандема. Вот сейчас он читает скилл Андрея Карпаты, в который просто говорит о том, что не надо городить всякой ерунды в коде, переиспользуй то, что есть. Но по факту у него никакого кода нет. Всё чистое, директория чистая, поэтому, наверное, этот скилл ему сейчас не сильно поможет, но, возможно, он ему поможет корректно спроектировать документацию, если он вообще это будет делать. А по идее такие задачи решаются просто на а one shot, да, one shot prompt. Этого будет достаточно. Но моя задача показать вам, продемонстрировать именно как эта система автоматически работает. Поэтому я ставлю видео на паузу, когда эта вся история будет готова. или мне придётся что-то подкинуть, если вдруг что-то сломается, тоже интересно, то я обязательно вам покажу. Так что двигаемся в режиме перемотки вперёд.
Пока идёт процесс разработки, воспользуюсь минуткой и коротко расскажу вам про наш коммьюнити. У нас есть коммьюнити, в котором у нас есть обучающие материалы, но самое главное - это, конечно, люди, озывчивые, профессиональные ребята, с которыми вместе мы развиваемся в направлении вайпкодинга, а помогаем друг другу развиваться, оказываем помощь в разработке, поддерживаем друг друга, еженедельно созваниваемся на зумах, вернее, даже чаще, чем раз в неделю. Также даём площадку людям, чтобы они могли поделиться своим опытом. И я на регулярной основе записываю новые материалы, то, чем я сейчас сам пользуюсь, делюсь всеми файлами, делюсь проектами и делюсь своим опытом. Всегда открыт поддержать и в чате, и во время зумэфиров. У нас есть уже и целые курсы по вайбкодингу, и по Гермесу, и по Open Clow, и всевозможные оптимизации по токенам. В общем, мы держим руку на пульсе, стараемся постоянно деливерить новый актуальный контент. Если тебе нужна информация и интересно узнать больше про наше сообщество, а чекни ссылку, она будет в описании под этим видео. Ну а мы продолжаем дальше смотреть, как идёт процесс.
Обратите внимание, что он сам может ещё выбирать усилия, то есть reasoning level. Он сейчас выбрал GPT 5,5, а усилия H. Хотя я бы на его месте поставил бы максимально это медиум. Ну да ладно, если бы я знал, я бы, наверное, здесь в промте это указал, но забыл просто. И поэтому мы будем ждать немного дольше, чем я того планировал. А вот здесь можно посмотреть, что Клод сам себе написал вот такой скрипт и пошёл спать на 10 минут, чтобы не дёргаться. А процессы тем временем идут в фоне. То есть идут два процесса. Первое - это, собственно, его ожидание, а второе - это сам процесс, связанный с генерацией кода, который мы отправили кодексу с моделью GPT 5.5. Вот здесь вот можно видеть, первый раз он модель неудачно подобрал, второй раз запустил с GPT 5,5, и задача сейчас выполняется в фоновом режиме.
Клод наконец-то проснулся, говорит, что кодекс завершил задачу. Можем посмотреть на вот итоговый отчёт от кодекса. И он пошёл смотреть, говорит, упёрся в блок. Но это связано с тем, что он, скорее всего, зависимости не сумел установить, потому что installл у него не сработал. Говорит, что это ограничение среды, а не слоп. Код написан корректно. И пошёл дальше проверять. Установка зависимости, прогон гейта. Это уже его часть. И, собственно, ей он и будет заниматься. То есть фактически 90% времени а опус просто спал и ждал, когда кодекс всё это запилит. Установка зависимости прошла, верификационный гейт с покрытием. Вот сейчас он этим будет, а, заниматься. Критерии приёмки были успешно пройдены, тесты все зелёные, покрытие 100%. Теперь его судейская часть ревью на слоб и честность тестов. И дальше пошёл читать под. Вот в этом моменте, конечно, мы начинаем поджирать токены именно опуса. Начинаем тратить свой лимит, потому что ему придётся так или иначе читать код весь или не весь, ну, большую, наверное, часть. Ну, что-то он как-то быстро сделал. Хотя у нас и приложение там микроскопическое. Сейчас он пошёл заполнять слоты. Можем посмотреть, что это за слоты. Слоты заполнил. То есть это project config. какая модель использовалась, какой ризинг использовался, какие там были проблемы, результаты после тестов, то есть результаты прохождения тех самых критериев приёмки. И дальше пошёл опять в цикл. То есть сейчас он будет устанавливать уже ink. Ink - это такая штука, которая позволяет, а, делать так называемый terminal UI. То есть, когда у нас в терминале есть меню, как это делается там в кодексе и в кучу других программ. Вот я сейчас не буду дожидаться, мне просто не хватит терпения, когда полностью вся эта штука заработает. Но я абсолютно уверен, что без какого-либо бейби сетинга в абсолютно автономном режиме эта программа запустится, и она будет выполнять, собственно, ту самую функцию, а которую я изначально и ожидал. Но, а на самом деле, если мы говорим про большие программы с очень большим количеством разных слоёв, с большими стеками, такой подход тоже можно использовать, но реализация немножечко другая.
Если вам нужно получить от меня клод MD и этот скилл, обязательно забирайте его у меня в моём бесплатном Telegram-канале. Можете перейти по ссылке вниже в Telegram-канал и найдёте его там в закреплённых сообщениях. А если вы хотите прямо на больших масштабах использовать, то такой материал у меня есть в клубе. Буквально недавно провёл большой эфир часовой, где всё показал, рассказал по полочкам, как именно я работаю с похожим подходом на больших проектах и как я использую принцип так называемой северной звезды. Надеюсь, это видео вам было полезно. Если это так, то ставьте лайк, подписывайтесь на канал. У меня тут всё про и агентов, и про разработку с помощью LM моделей. И увидимся в следующем видео. Пока.
[музыка]
A whispers as the circuit home.
>> [музыка]