📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Claude Sonnet 4.5 + Code 2.0: тест на реальном проекте | GitHub SpecKit обзор

Timur Yessenov47:24

Transcription

Всем привет! В этом видео мы продолжаем тему вайб-кодинга и самые-самые горячие новинки с рынка. Это обновление модели от Anthropic и обновление CloudCode до версии 2.0, а Sonet до версии 4.5. Именно эту штуку сегодня мы будем с вами тестировать, будем собирать реальное приложение.

Это приложение позволяет работать с векторной базой знаний. Его можно сделать один раз и потом отдать клиентам, чтобы они могли самостоятельно делать записи в векторной базе данных, и они автоматически будут в нее загружаться, будут имбидироваться, прям попадать вот в квадрант. Я только что закинул вот эту билиберду, она уже заимбидировалась, перевелась в векторный формат, и это очень удобно. Есть админ, есть просто клиент, который может спокойно редактировать еще все эти данные. И такое приложение, оно очень удобно. Вот.

И вот такое приложение мы буквально очень быстро соберем с помощью Cloud Code 2.0, с помощью Sonnet 4.5. Но это еще не все. У меня будет обзор 3 в 1. Параллельно мы с вами разберем гитхабовский спек-кит. Для тех, кто не знает, он позволяет разрабатывать с помощью LLM по определенному фреймворку. То есть сначала мы накидываем идею, потом мы составляем план, потом мы разбиваем его на мелкие задачи, и каждую задачу мы прорабатываем с LLM отдельно. Это довольно прикольная штука, хоть и неоднозначная. И мы именно с помощью SpecKit, Cloud Code 2.0 и Sonnet 4.5 будем собирать это приложение.

Смотри это видео до конца, и ты узнаешь, как тебе самому можно все это использовать, применять. Я тебе покажу прямо на деле, на практике, как ты можешь тоже повторить за мной и собрать, в принципе, любое приложение. Ну, а для тех из вас, кто прям хочет погрузиться в автоматизацию, в искусственный интеллект, в NATN, в вайб-кодинг, у меня для вас есть специальное классное предложение по нашему закрытому сообществу, где я постоянно провожу живые разборы, постоянно записываю эксклюзивный контент, материал, и все то, что выходит на YouTube, все в расширенном виде вместе с файлами, вместе с workflow, обязательно еженедельно отдается в это закрытое сообщество. Ссылка есть в описании. Ну, а мы с вами начинаем собирать приложение. Давайте приступим к разработке.

На данный момент я буду использовать в качестве ID WinServe. Это тоже для тех, кто не знает, просто форк с VS Code. У него здесь есть встроенный агент, который называется Cascade. Использовать мы его не будем с вами. И по старой доброй традиции я всегда готовлю себе вот такую вот техническую документацию в Google Gemini 2.5 Pro. Я накидал тут вот промт свой, объяснил ему простым языком и получил, собственно, такое вот техническое задание. Оно довольно простое. Базовые бизнес-требования тут изложены, и мы этим воспользуемся.

Но прежде чем это делать, нам нужно инициализировать проект. То есть у меня здесь пустая папка, абсолютно ничего нет. И первое, что нам нужно сделать, это создать абсолютно пустой, чистый проект Next.js. Давайте мы это и сделаем. Я это делаю вот такой командой. Точка означает, что именно в этой директории проект, собственно, и будет создаваться. Запуская команду, здесь, скорее всего, я буду принимать все по умолчанию. И yes. Сейчас он загрузит все необходимые библиотеки, и мы его сразу же запустим, убедимся в том, что он стартанул корректно. Так, все библиотеки установились, и запускаем проект mpm-run-dev. Ссылочка, открываем в браузере, и видим, что Next.js у нас дефолтная страница открылась, значит наш проект создался и работает. Окей, отлично.

Что мы будем делать дальше? Дальше мы должны с вами установить GitHub SpecKit, потому что именно его мы будем использовать в качестве основного инструмента. Он позволяет структурировать разработку, позволяет работать очень эффективно с техническим заданием и идти по спринтам, разбивать весь процесс на определенные фазы, чтобы у нас не было каши с кодом, чтобы генерация кода была максимально структурирована и чтобы мы шли четко по техническому заданию. Для того, чтобы им воспользоваться, нужно для начала понять, как он работает. Я вот подготовил такую простенькую визуализацию. На ее базе я вам расскажу, что это такое.

Вообще GitHub SpecKit — это набор библиотек, который, по сути, адаптирован под разные фреймворки, такие как CloudCode, Codex, под разные IDE, в общем, под любые агентные системы, которые генерируют код. И давайте разберем, как работает. Первое — это определение, что вообще создать, без каких-либо технических деталей. То есть это, по сути, работа продукта, где мы просто формулируем свои бизнес-требования. Это делается командой Specify. Также есть команда Clarify. Это уточняющие вопросы. Возможно, какие-то детали остались out of scope, их нужно обсудить. Потом идет план реализации. То есть мы поняли, что мы будем делать, Теперь мы должны спланировать, как мы это будем делать. Общий план. После этого этот общий план разделяется на задачи или на спринты, или на фазы, как хотите. После того, как мы это сделали, есть еще команда Analyze, которая валидирует эти документы, скажем так, проверяет этот план и задачи на адекватность. Потом, только лишь потом, идет фаза Implement, которая выполняет эти задачи одну за одной. И после того, как эта задача выполнена, можно делать pull request и merge. Вот. Это вот основной такой pipeline, по которому работает SpecKit.

Для тех из вас, кто знаком с разработкой, с Git, прекрасно все понимает. А для тех из вас, кто чистый вайп-кодер, пришел из автоматизации, решил бросить NITN и пойти во все тяжкие, в эту всю vibe-историю, расскажу, что такое PR. PR — это pull request, то есть когда мы создаем определенный проект на GitHub, мы можем... То есть у нас есть общее хранилище кода, и мы, как отдельно взятый разработчик, можем сделать так называемый branch, то есть сделать ответвление, скопировать весь код, работать над какой-то одной функцией или над несколькими функциями. И когда мы декларируем, что мы все закончили, у нас все работает, мы делаем pull request, и это запрос на то, чтобы вот этот вот код, который был сделан в параллельной ветке, сделать его слияние с основной веткой. Вот, и сам запрос на слияние называется pull request, а merge — это как раз-таки сам процесс слияния. И иногда во время merge возникают какие-то конфликты, возможно, где-то в какой-то момент код слишком сильно разошелся, и эти конфликты нужно вручную устранять. Ну, либо использовать там код-код или какие-то другие модели, Codex, чтобы они помогли разрешить эти конфликты. Вот, и это вот основной принцип того, как работает GitHub SpecKit. По такому же принципу работает в какой-то степени и BMAT метод, и есть и другие там фейворки по тому, как вот это вот AI-driven development можно разделить на вот такие адекватные, эффективные стадии, при этом не засирать контекст и не получать кашу вместо кода.

Первым делом, что нам нужно сделать? Нам вообще нужно установить его в свой проект. И вот здесь вот описана инструкция, как это сделать. Здесь вот есть глобальная установка Persistent, то есть мы можем его установить и потом использовать там, где он нужен. Я копирую эту команду из документации, вставляю ее. Если у вас выйдет ошибка, что UV not found, то вам нужно установить ее к себе в систему UV. Либо посмотрите под другие операционные системы, как это можно сделать, если у вас, допустим, Windows, а не Linux или macOS. У меня UV установлен, поэтому я устанавливаю сразу его напрямую. Вроде как установилось все. Смотрим дальше. И есть тут команда specify init. Давайте забьем ее, но вместо project name мы поставим точку, потому что наш проект находится именно в этой директории. Вот, у нас уже появилось. Да, я согласен. И здесь мы будем использовать Cloud Code. Видите, как много здесь? И QN есть, OpenCode, Winsurf, KiloCode, Rucode. Кого тут только нет. Нам нужно это все под Cloud Code, потому что именно его, новую версию Cloud Code 2.0, с новой, новоиспеченной моделькой Sonnet 4.5, мы будем использовать в этом видео. Используем. По умолчанию все. Все. Отлично.

Вот у нас тут есть прям такой вот гай небольшой, да, по шагам. И нам тут говорится, что стартуйте с помощью слэш-команд, и нужно команду constitution запустить в первую очередь. Окей. Давайте посмотрим, как это работает. Я запускаю plot code, горячие клавиши, command, escape. Давайте сделаем команду emit для начала. А команда emit, она позволяет plot code понять, в каком мы вообще проекте находимся, какой стек технологий мы используем, и создать вот этот вот файл, который называется clod.md. Сейчас его нет, но сейчас его создаст. довольно быстро, потому что проект, в принципе, дефолтный, ничего здесь сверхъестественного нету. Клод-код спрашивает, может ли он редактировать, я ему даю добро. И вот здесь вот после установки SpecKit появляется папка Specify, здесь есть Memory, вот здесь как раз-таки находится Constitution.md, здесь вот основные принципы заложены. По сути, это все Prompt Engineering и Context Engineering. Тут также есть скрипты, которые будут запускаться, тоже будет запускать сам плод-код, потому что это описано все в промптах. И есть шаблоны, темплейты, в которых тоже есть уже прописанный алгоритм, по которому должна строиться работа. То есть, по сути, вот Specify, точка Specify — это основные пор промпты, функции, скрипты. Также у нас есть в.cloud папка, и здесь нам SpecKit создал вот эти вот команды. Те самые команды, вот, например, constitution, вот эта команда появляется, и она появляется, потому что мы ее здесь создали. Вернее, не мы сами, а я создал ее spec-kit. Так, наш файл cloud.md, он готов, что нас не может не радовать. Сейчас немножко раздвинем это все. Давайте посмотрим. Ну, в целом, да, Next.js, 15.5.4 и так далее. В принципе, тут довольно базовая база. Все. Окей.

Мы создали Next.js, установили SpecKit, сделали init, и сейчас начнем уже пользоваться SpecKit для того, чтобы начать нашу разработку. Но прежде чем что-то начать делать, я думаю, что нужно будет создать просто нам репозиторий, где мы самый голый простой вариант нашего проекта сохраним и инициализируем репозиторий. Давайте мы это сделаем. Я захожу на GitHub, создаю новый репозиторий, дам ему название, вот такое название, сделаю его приватным и создаю репозиторий. Потом я копирую ссылку на этот репозиторий. Для того, чтобы мне это сделать, я могу вбить команду вип-статус. Если у вас абсолютно новый проект, и он никак не подключен к GitHub, то нужно выполнить следующую команду. git-remote-v. Да, у меня он уже подключен. У вас, наверное, будет не подключено, то нужно вбить следующую команду. git remote git remote add origin и вставить ссылку на репозиторий нажать, у меня он уже подключен и дальше что делаем? Делаем команду git add и точку ставим, это добавляет все файлы в commit после этого делаем команду git commit m и делаем какой-нибудь там init, например, commit он у меня уже есть, допустим нажимаем git init, отправляем и делаем команду git push. Git push отправляет все в текущий бранч. Все, код я залил. Можно посмотреть в репозитории, обновляю страницу, и вот у меня уже здесь есть мой код, значит, мы уже будем работать синхронизированно с GitHub. Прежде чем что-то делать, нужно сразу подрубить свой код к нитхабу, потому что мы очень активно будем пользоваться бранчами. Потому что именно так работает SpecKit.

Первая команда, с которой мы начнем, это базовые правила проекта. Это constitution. Вообще мне не надо было ее отправлять без ничего. Я должен был прописать constitution. Вот новая версия Cloud Code, конечно, не дает мне. И я ставлю пробел и говорю ему о том, что вообще нужно использовать. Я прописал ему, чтобы он использовал лучшие практики Next.js 15, всегда делал тесты, прежде чем декларировать, что что-либо готово, и писал чистый пот на уровне сеньор-разработчика. И отправляю эту команду Constitution, и давайте посмотрим. Наш файл Constitution был создан. Тут есть вот Next.js, лучшие практики, test-driven development. Это очень важно, потому что по крайней мере, код с Sonnet 4 и 4.1 довольно часто говорил, что у тебя production-ready код, все готово, но по факту нифига не работало. Я думаю, что здесь будет плюс-минус так же, но по крайней мере, это будет чуть лучше, если мы это пропишем. Так, окей, на данном этапе у нас есть базовая память, и теперь мы будем использовать команду specify. И вот здесь мы уже опишем то, что мы хотим создавать. Я копирую свой фронт, да, вот отсюда, и запускаю. Давайте вообще посмотрим, что делает эта команда. Specify. Она создает спецификацию по фичу. То есть на естественном языке делаем запрос, И Specify начинает разбирать это все по щепкам. Также помимо самого вот этого промпта есть еще, как видите, runScript. Запускается этот скрипт, и по этому скрипту идет уже процесс. Но нам с вами, чтобы не углубляться, чтобы максимально оставаться на Vibe, мы посмотрим, да, просто результат поймем, что мы получим в результате того, как отработает функция Specify.

Так, у нас закончилась спецификация. у нас создался новый файл spec.md и здесь прописаны все фичи и они все пронумерованы. И обратите внимание, что нам этот скрипт создал еще вот этот вот branch, вектор, датасет, контент. И разбита она на множество различных задач. Они все пронумерованы, у них у всех, грубо говоря, уникальный ID. Вот какое количество задачек. Чек-лист есть. и вот такой файл у нас создался, и теперь мы должны использовать clarify, может быть, у нашего агента будут какие-то к нам вопросы. Давайте мы запустим clarify, для того, чтобы мы и наш агент, мы прекрасно оба понимали нашу задачу, если есть какие-то нюансы, чтобы мы, как говорится, их обсудили все на берегу. Есть вот пять вопросов, да? Хорошо, что он сразу говорит, сколько вопросов. Давайте я на них буду отвечать, комментировать я не буду, так как в любом случае вы будете делать что-то свое, и отвечать вам придется самостоятельно на вопросы по вашему приложению, но здесь удобно, что здесь можно просто как в тесте, да, одну букву вбить, A, B, C, D, и все будет понятно. Выбираю оптимистичный локинг, мне подходит вариант B, что у меня будут просто пользователи и будет админ. На самом деле вот эти все вопросы, они заставляют вас думать над тем, как будет работать ваш продукт, как будет работать ваше приложение. И, возможно, получится так, что эти вопросы начнут подсвечивать вам какие-то идеи, мысли, какие-то краевые кейсы, о которых вы просто не думали. И он просто стимулирует вас подумать в каком-то из направлений. Но если для вас все очевидно, как для меня было, по крайней мере, по первому и по второму вопросу, просто прожимайте дальше ABC или D, и пусть дальше обновляют документацию. Он спрашивает, какие должны быть текст-чанки. Я думаю, что здесь есть мое упущение. Я в техническом задании не прописал, что у меня будет все это изначально в таблицах, сделая no limit. То есть задача какая? Сколько максимальное количество символов будет в таблице? Конечно, я думаю, что там максимальное количество символов будет не больше, наверное, тысячи. В этом смысла там нет уже. Но пока просто будет no limit. Там дальше уже будем смотреть. Да, у меня там будет всего light usage, 5 пользователей. По сути, я это делаю для всего лишь 4-5 человек. Действительно, мне 5-10 пользователей за глаза хватит на данном этапе. Я не знаю, что там он собрался менять, какие технологии он собирается менять в зависимости от того. Ну, я понимаю, возможно, там речь идет про какие-то архитектурные нюансы, про воркеров, про очереди, про кэш, еще про что-то. В принципе, если ты делаешь приложение на 5-10 одновременных пользователей, это может быть какой-то внутренний инструмент для внутреннего использования, как в моем случае, то, в принципе, там усложнять технологию не нужно. Тем более я хочу в рамках вот этого видео, вот этого обзора, который у меня три в одном, я и Cloud Code 2.0 обозреваю, и я о нем еще буду подробнее говорить, вы не думайте. Я и Sonnet 4.5 хочу показать еще SpecKit. Все это соединить в одно видео, чтобы вы его посмотрели и сразу поняли, что вот он, новый плод-код. Вот так вот работает Sonnet 4.5. И еще вкупе, чтобы вы поняли, как работать со SpecKit. Ну и очень надеюсь, что это видео у меня не получится на час. Хотелось бы уложиться минут в 30-40 до готового результата. Но мы посмотрим. В начале видео вы видели готовое приложение, но сейчас его нет. Магия монтажа, я еще не знаю, что у меня получится. Ну, надеюсь, что-то дельное. А вы уже знаете, что у меня получится и видели это. И давайте посмотрим у нас пятый последний вопрос. Давайте на него ответим. Он тут уточняет только какие архитектурные моменты, что с чем связано. По сути, у нас задача такая, что у нас есть, скажем так, филиал, и внутри филиала есть свой собственный датасет, своя таблица, которая должна будет использоваться ботом. И есть свои дополнительные таблицы, в которых можно, допустим, какие-то ивенты вбивать. Например, у нас там акция происходит, или у нас какая-то поломка, или у нас выходной, или там еще что-то. То есть две такие таблицы, да, с какими-то промо-предложениями и с информацией о каких-то объявлениях, да, так скажем. То есть всего три вещи, да. Первая — это вот датасет, вторая — это промо, третье — это какие-то важные объявления. Важные объявления и акции, естественно, они лимитированы по датам. То есть они идут с какого-то дня и часа по какой-то день и час. То есть и моя идея в том, чтобы бот, он динамично в фромт подставлял себе вот эти фрагменты по акциям или по объявлениям в зависимости от даты. И менеджер может, допустим, там на два месяца, на три месяца вперед, если он знает, забить все эти акции в систему. и они будут динамично подставляться в промпт просто по текущей дате. Если мы попадаем, то есть если в момент, когда пришел запрос к боту, попадает вот в это окно по дате, то в промпт ему вставляется какая-то дополнительная информация по акции или какие-то объявления, или еще там что-то. То есть я уже давно понял, что статические промпты — это вещь нерабочая. У меня очень много динамических компонентов есть в промптах. Это и дата, и время. И вот такие вот штуки, как сейчас я здесь показываю.

Так, clarification у нас все. Он все прояснил, все там пообновлял, чего-то там жалуются. Я хочу ему еще добавить дополнительные информации, потому что мне кажется, что он не все смог понять. И давайте попробуем через команду specify сделать апдейт. Я ему забил prompt и рассказал, что у меня уже есть развернутый квадрант, что у меня уже есть развернутый Postgre, и ему не нужно изобретать велосипед, ему не нужно их дополнительно разворачивать. Все, что ему нужно сделать, ему нужно сделать сам инструмент взаимодействия с этими базами. И сейчас он пойдет обновлять. Мне кажется, что поэтому здесь был вот такой вот значок, где он все-таки не понимал, да? Ну, я думаю, что это какие-то мелкие уже UX и UI моменты, и мы там с ними по ходу разберемся. Хотя вам рекомендую все вот это вот разобрать. И это смотрите, как очень удобно. То есть он сразу подсветил то, что ему не очевидно. Либо там есть противоречивая информация, либо еще что-то. И он говорит, ну, слушай, с этим как бы понятно, да? А вот здесь какая-то непонятная шляпа. Вот. Сейчас я ему дополню. Сейчас он это все доделает. Я думаю, что мы уже можем закоммититься и начинать переходить к этапу планирования. Потому что, видите, он здесь подсветил сразу next command plan. То есть он сам рекомендует и ведет нас по процессу, как, что, зачем делать. То есть вот он заапдейтил наши спеки. И мы теперь начинаем команду plan запускать. Точнее, запустили ее и начинаем процесс планирования, как мы это все будем вообще реализовывать.

В принципе, пока у меня создается план, создаваться он будет довольно долго, я хочу показать вам, как сильно изменился CloudCode extension для VS Code. Во-первых, это больше не совсем голый терминал. Допустим, я все еще могу запустить Cloud с терминали. И давайте посмотрим, как это сильно отличается. Теперь это полноценный extension. Вот он, CloudCode, как он был раньше. В принципе, и так тоже вполне удобно, но здесь теперь у нас есть полноценный extension, у которого есть меню, которым можно оперировать мышкой. Сразу же показывает, сколько у нас осталось контекста. Обратите внимание. И здесь мышкой можно выбирать вот такие вот команды. По сути, это просто, скажем так, пользовательский интерфейс поверх того же самого CloudHot, которого мы все знаем прекрасно, но те, кто не знает, можете узнать, скачать, установить. Я не могу сказать, что это прям что-то супер-супер инновационное. Здесь автоматически, когда я пишу какой-то промп, закидываю, автоматически включается режим планирования. Вот здесь будет написано «planning». А здесь мы можем включать и выключать разные файлы, которые будут учитываться в контексте. И из интересного я заметил еще вот что. что именно в Cloud Code 2.0 и именно используя Sonnet 4.5 я начал замечать, что модель начала понимать, насколько сильно загружен ее контекст. То есть если мы уже будем подходить к 80%, к 90% и кинем какую-то задачу, он может сказать, слушай, у меня скоро контекст переполнится, давай-ка лучше ты меня очистишь, давай я сделаю какой-то компакт, сжатия, то есть summary нашего диалога, потому что на выполнение этой задачи контекста может не хватить. Он переполнится, и все тогда поломается. И на мой взгляд, это очень круто, потому что context-aware именно стороны модели, оно позволяет понимать, насколько эффективно модель может справиться с задачей. Я в основном использую сейчас OpenAI Codex. Все-таки у меня больше душа лежит к нему. Тем не менее, у меня в нем бывают часто такие проблемы, что прямо посередине мне говорится, что все, закончился контекст, он переполнен уже, и то есть я даже компакт не всегда могу сделать. И таким вот образом я как бы застрял посередине. Мне приходится копировать, собирать, конструировать какой-то промпт, очищать контекст и продолжать. Здесь это сделано уже на совершенно другом уровне, и это очень и очень круто.

Ура, процесс планирования закончился. У нас есть все 9 шоков, которые были выполнены. Загрузка спецификаций, дополнение технического контекста, constitution check. Также разбито все по фазам, research, design, planning и ready for tasks. То есть у нас появился документ plan.md, он очень объемный, в нем вся структура проекта, полностью все расписано. И документ research. Research, то есть тут какие-то уже код-слиппеты есть, какие-то подсказки по реализации тех или иных функций. И давайте посмотрим, что рекомендуется делать дальше. Вот наш технологический стэк. В целом тут все ок. Дальше архитектура. Monorepo, optimistic locking. Так, так, так, так, ну окей.

Следующая команда task. Давайте ее запустим. Она создает конкретные задачки. И выполняя эти задачки одну за одной, мы будем в итоге приходить к тому, что мы реализуем. То есть мы сейчас находимся вот здесь. Генерация задачек у нас закончилась. Вот такой файл у нас создался. Мы уже вот здесь, мы это уже выполнили. Дальше уже генерация задач по категориям. Все разбито по фазам. Смотрите, какой объемный документ получился у нас. Очень большой. Задачек тут 75. Ну что ж, смотрим дальше, куда нас ведет спек-кит. Ну, для начала давайте сделаем commit. Все, мы сделали commit. Теперь у нас в GitHub должен появиться бренд наш. Вот он, бранч. Сейчас активный у нас этот бранч. И мы дальше можем продолжать работу. И теперь, согласно нашему плану, у нас с вами команда implement. И давайте мы ее запустим. Implement сейчас пойдет смотреть наши таски и брать задачки на спринт. Так, он проанализировал документацию. 75 задачек определил и взял себе в работу задачки с первой по пятую. Давайте посмотрим, что это за задачки такие. Так, задача. Вот они, задачи. Установка зависимостей. Библиотек. Окружение создать. Сконфигурировать. Jest для тестов. и Playwright сконфигурировать. Ну, то есть такие, скажем, утилитарные препарации к тому, чтобы начать уже что-то действительно писать. И вот с этого момента очень большая новость именно в части Sanef 4.5 и того, как она работает с клодко 2.0. Он может реально уйти просто на несколько часов, пока он будет ценить эти задачи. А если вы обратите внимание, здесь у нас с первой по 75-ю на 5 этапов поделено. И, скорее всего, он будет работать довольно долгое время. Если будет что-то появляться, он будет останавливаться, я обязательно буду вам показывать, рассказывать. А пока я думаю, что я просто сделаю перерыв, займусь другими делами. у меня параллельно еще три проекта сейчас разрабатывается, я просто тоже пойду, покидая задачки, потестирую что-то, посмотрю, какой там статус, прогресс. И для того, чтобы не смотреть на вот эту скукотищу, как моделька чего-то пишет, я лучше буду вам показывать интересные моменты. Но давайте пока промежуточный итог сделали. Мы разобрались, как можно использовать SPEC-KIT, как начать работу, используя CLOD, код, в данном случае 2.0, какие команды, в какой последовательности нам делать. Вы разобрались с тем, что поняли, как спек-кит может нас вести по процессу. И это очень, мне кажется, круто и удобно. И кратенько очень посмотрели на то, чем отличается код в терминале от нового модного экстеншена. И сейчас в этот момент работает Sonnet 4.5. И мне очень и очень интересно, после моего

Глубокого разочарования в Sunnet 4.1, после того, как произошла вот эта страшная деградация, я хочу посмотреть, сможет ли новый Sunnet, сможет ли Anthropic восстановиться в моих глазах свою репутацию поставщика самых лучших моделей для генерации кода, или все-таки нет, мне придется подключать OpenAI Codex. А пока ставлю на паузу и перематываю сразу вперед.

Довольно долгое время, наверное, минут 25, работал сонет и отрапортовал мне, что фаза 3.2, тесты были сделаны, тесты прошли, вот тест файлы, также здесь есть тесты компонентов, тоже прошли, и я ему просто написал, давай имплементируй следующие таски. Вот он пошел смотреть, что у нас там по таск-листу, мы можем с вами тоже посмотреть, что у нас сейчас выполнено. Первый, второй, по пятый выполнен, и дальше мы пойдем уже по следующим таскам. То есть начиная с шестого и дальше до 75-го. Наверное, это займет какое-то длительное время.

Но, как всегда, Клод в своей манере говорит, все, у тебя production-ready приложение. Давай погнали его использовать и в хвост, и в гриву. Я, значит, запускаю, буквально минуту назад запустил и вижу вот такую вот картину. Нифига это не работает, что вполне себе ожидаемо, это нормально. Я ему кинул имплемент, говорю, давай-ка ты запустишь, давай-ка ты все протестишь, чтобы у нас не было никаких ошибок билда, никаких ошибок линтера, в общем, чтобы все у нас заработало, и скинул ему текст вот этих вот двух ошибок, которые у меня здесь были. Вот первое скопировал, и вторую скопировал тоже, вставил. Ничего еще не видел, приложение еще в глаза не видел. Это вот первое, что я увидел, это вот эта вот история. То есть я на странице логин, все валится, ошибки валятся, и пусть разберется уже до конца с этой всей историей.

Смотрите, интересно, я специально не очищал контент. Обычно я после каждого спринта его очищаю, но я не очищал, довел его до 100. Автоматически здесь произошла самаризация и довольно хорошая самаризация. То есть он сказал, что было сделано, что сейчас в работе, вот последние команды и некий план, где он там закончил работу и что, в общем, нужно дальше делать. Это произошло автоматически и процесс продолжился. То есть, если я ставлю сонет на какую-то очень долгую задачу в таком YOLO режиме, когда он полностью сам может носить любые правки, то получается при переполнении контекста он сам его очистит и просто продолжит разрабатывать дальше.

Давайте посмотрим. Perfect. Готовы увидеть? Perfect. Давайте. Вот, там что-то уже появилось. Классно. Но вот он перезапустил на 3001 порту. Давайте уж посмотрим. Да, классно. А как зарегистрироваться? Я не знаю. Но давайте спросим. Интересно. Есть ли форма регистрации вообще как таковая? Или предполагается, что я должен в базу сам внести? Мне вообще не нужна регистрация в этом приложении. Я хочу сразу сам создавать, как пользователь, как админ создавать пользователей, никакой регистрации, ничего не нужно. Он говорит, что не существует формы, и это правильно. Я ему говорю, ну, коль уж не существует формы для регистрации, то ты родной, создай, пожалуйста, пользователя какого-то для меня. Он подключился к моей базе. Давайте вначале как админ зайдем. Классно, что у нас белые шрифты на белом фоне, но, возможно, тут пробрасывается тема не сработала. Но давайте куратора попробуем так. Не сработало. Чего у нас в консоли? А в консоли у нас ничего. Ну давайте посмотрим, как будет исправлять. Говорит, теперь уж точно должно заработать. Мы, конечно же, в это все верим. Пробуем зайти. Много разных ошибок, но давайте будем их исправлять. Копировать эти ошибки. Но я думаю, что тут их не так много. Хотя я ему сказал, что их там очень много. Вот. Скопировал. Пусть перезагрузит. Вот он убил процесс. Должен перезапустить приложение.

Вот уже включается классическая штука всех моделей Anthropic. Он не смог поправить ошибку Turbo Pack. И он просто выкидывает его. Просто отключает его. То есть он не хочет разобраться в этом, он просто хочет, чтобы заработало. И вот Sunnet 4.5, несмотря на все его плюсы, на его скорость, на возможность постоянно выполнять большое количество задач, вот это никуда не делось. Страшно ленивый. Он будет делать simple solution, он будет переписывать заново, если что-то не будет работать, он не будет чинить ошибки, и это страшно прям бесит, прям вот просто отвратительно. Я работаю с Codex, и там такого нет. То есть он всегда спрашивает, давай, есть короткий вариант, можно там вот так вот заколхозить, а можно нормально сделать? Вот сам выбирай. Этот же будет делать все максимально упрощенно, максимально все по-идиотски, прям вот как джуниор разработчик. Чего и не работает. Ну окей.

По сути, этот пинг-понг зад-вперед с ошибками, я думаю, наконец-то, приложение запустилось, и оно плюс-минус примерно, как я задумывал. Я просто хотел еще иметь возможность выбирать филиалы, то есть создавать, редактировать филиалы и управлять базой знаний на каждый филиал. И событиями, и какими-то акциями на каждый филиал. Я это все хотел в разрезе филиалов. Какого-то функционала здесь нет, и нам надо его заимплементить. А как мы это сделаем? Мы можем с вами воспользоваться командой specify. Сейчас я надиктую prompt. В общем, я нажаловался, что мне филиалов не хватает, я им должен иметь некий менеджмент филиала, создать новый филиал. Внутри филиала будет и векторная база, и события по этому филиалу. И, соответственно, разные маркетинговые компании, акции и прочие дела. Вот я думаю, что это не так сложно, там придется немножко базу перестроить, но суть не меняется. Я эту задачку кинул через команду Specify, сейчас он пойдет и должен докинуть ее в наш Tasklist, и потом мы уже сможем сделать имплемент.

Здесь вот видно, что это уже присутствует в квадранте. Здесь будет, получается, текст в payload. Странно, что метаданных нет, но это тоже не проблема. Там нужно будет скорректировать сам запрос. И, допустим, давайте проверим. Допустим, сделаем next 10 confirm. Сохраняем. Статусов никаких нету, как, впрочем-то, и текст, да, он не поменялся почему-то. Сейчас я сделаю перезагрузку страницы. Да, вот здесь вот поменялся текст. Мне гораздо интереснее, поменяется ли это здесь. Да, здесь тоже поменялось и переимбедировалось. Векторы тоже есть тут. В пространстве, ну, здесь dense vector space обычный. Вот, но сам факт, что больше ничего не переимедировалось только один единственный фрагмент, вот, то, что здесь он не подтянул сразу, это, конечно такое себе, а что если у меня будет там много текста? Ну да, здесь есть момент, да, по пользовательскому интерфейсу, но это все мелочь, и здесь есть еще версии и также можно посмотреть в логах, да что вот такой-то пользователь в такое-то время сделал апдейт такого-то чанка. Было до, стало после. И вот такой инкремент версии произошел. И можно там зафильтровать. По ID пользователя, такое ощущение, что разработчик делал для разработчиков этот пользовательский интерфейс. Но это не важно. Функционально это все работает.

Попробуем создать событие. Test event. Test event, test event. Начинается оно вчера, заканчивается оно завтра. Create event. Чего? Ага, не получается. Хорошо. Так, что у нас? А, хорошо. Закинул. Да, clarify, наверное, не будем делать. Давайте сразу имплемент. То есть clarify там довольно просто все. Создать просто некий филиал, таблицу и привязать к ней всю вот эту базу и потом поменять в метаданных, чтобы в метаданных проставлялся ID этого филиала. Вот и вся история, в принципе.

Ох, ребята, я совершил очень большую ошибку, и благодаря тому, что я ее совершил, я вам о них расскажу, и вы не совершаете. Смотрите, мне нужно было сделать очень простую вещь. Это не сложная фича, то есть я могу выбрать комплекс. То есть комплекс 1, 2, 5, 15. И в зависимости от комплекса я хочу работать с базой знаний в этот комплекс. Вот. И я сделал вот что. Я вначале нажал Specify, рассказал про свою фичу, и потом началось Clarity, Plan, Task, Analyze и Implement. На все это дело, вот на эту простую вещь у меня ушло часа полтора. Вот. Если вам что-то нужно несложное, то вы можете просто сделать некий clear и не вызывать весь процесс спецкип, который он вам дает на какую-то мелочь, потому что это реально очень долго. И еще в какой-то момент Клод начал редактировать файлы через команду cut. То есть мне нужно было постоянно подтверждать, несмотря на то, что здесь был режим edit automatically.

Ну, вот, собственно, суть в чем? Суть в том, что, в принципе, апка работает. Я проверил базу данных. Действительно, данные все имбедируются с помощью Open Embedding Small. Также база данных работает. Есть пользователи, есть пароли. Я могу сделать логин, логаут. Так, ну окей. Наверное, последнее, что мне не хватает, мне не хватает возможности создавать новую запись в VectorManager. И это очень странно само по себе. Давайте сейчас перезапустим все это на 3000 порту, пусть он сам запустит и как раз пофиксит добавить мне эту функцию. Ну то есть мне нужно просто один item в таблицу добавить.

Ну что ж, добавил он мне кнопочку Add Record. Давайте я что-то напечатаю сюда. Возможно, будет ошибка. Да, ошибка есть. В консоли ничего нет. Примерно та же ошибка происходит, когда начинаешь с помощью вайпкодинга реализовывать работу с Quadrant. Он не понимает, что Quadrant хочет на Point ID вот в таком вот UUID формате. А теперь все заработало. То есть запись добавилась. Я ее могу отредактировать. Вот она. Можно посмотреть здесь. Вот она добавилась. В общем-то, и мелкие доработки. Немножко здесь разложить все по метаданным. То есть структуру JSON поменять при запросе. И приложение для клиента готово. Оно простое, оно понятное, позволяет выбирать филиалы и на каждый филиал загружать вот такую базу знаний. Можно здесь сделать там импорт from Google Sheets или еще что-то, или CSV, лучше CSV, чем мучиться с этими Google скопами.

Мое мнение, Sonate 4 стал безусловно лучше. Он работает быстрее, чем Opus 4.1, но при этом я не вижу, чтобы он работал хуже, чем Opus. Он может выполнять длительные задачи. Очень хорошо реализован режим автоматического планирования. Ultra Think, Think Hard, все это работает. Поэтому обратите ваше внимание, если вы все еще не являетесь подписчиком MaxPlan, там за 100 долларов или за 200, то вполне хватит 20 долларов тарифа, чтобы потестировать и что-то там запилить. То есть, да, там будут жуткие лимиты, но этого хватит, чтобы понять. Поэтому я считаю, что получилось классно.

Что же касается самого нового экстеншена, Cloud Code 2.0. Вот сам extension мне не очень понравился. Я как будто бы больше хочу вернуться обратно в привычный терминал. То есть, например, я выбираю какую-то функцию, например, я начал писать new, и если я сейчас нажму, кликну мышкой, я как бы ее отправлю. То есть я не могу вот так табом вставить эту команду. В общем, много каких-то мелких нюансов. Кому-то, может, зайдет, кому-то понравится. Мне как будто бы не особо понравилось. Я бы больше за терминал.

Ну и GitHub SpecKit. Ну, штука прикольная. Мне кажется, в ней быстрее всего разобраться. Тебя прям ведут за руку по процессу, тебе говорят, что нужно делать. И для разработки больших таких вот приложений, где прям большие эпики, которые нужно разбивать там на ста, на таски, и каждую стоит имплементить, это довольно классно. Для каких-то мелких задач, наверное, быстрее было бы без него. Или хотя бы только один раз его применить на старте, посмотреть какой... создать какое-то первичное ядро и дальше уже накидывать. Вот как у меня получилось. Я хотел сделать буквально простую какую-то функцию и завис там на полтора-два часа из-за того, что он мне тащил.

Если понравилось видео, ставь лайк. А если не понравилось, можно поставить дизлайк. Обязательно пишите комментарии. Давайте обсудим с вами вайп-кодинг. Кто сейчас занимается и кто чем пользуется. Очень интересно. Я всегда отвечаю почти на все комментарии. Всегда люблю объективную критику и конструктивный спор. А для тех из вас, кто не подписался на мой канал, обязательно подписывайтесь, прожимайте колокольчик, чтобы не пропустить уведомления о новых видео. Ну, а мы с вами увидимся в следующем видео. Пока. Редактор субтитров А.Семкин Корректор А.Егорова