Transcription
Итак, у меня есть интересная задача для вас сегодня. Я только что закончил прямой эфир, где я полностью собрал новый агент команды Cloud Code в прямом эфире. И вот, я построил совершенно новую функцию поверх существующей кодовой базы, пройдя через весь процесс планирования, задавая Cloud Code вопросы, чтобы мы были на одной волне, отправляя это команде агентов в виде структурированного плана и проводя сквозное тестирование автоматизации браузера. И вот что я сделал: я взял очень простое агентское чат-приложение, которое я создал как основу для этого стрима, и добавил в него оплату, используя ChargeB в качестве моей платформы. Итак, это очень простое чат-приложение, но то, что я построил, — это возможность покупать токены, а затем вы используете эти токены по одному, чтобы разговаривать с агентом. И это действительно хороший пример реализации, которая должна затрагивать базу данных, фронтенд и бэкенд. И поэтому, используя команду агентов для работы над всеми этими областями параллельно и автономно общаясь друг с другом по мере выполнения. И вы увидите в этом видео, что мы смогли довольно быстро пройти реализацию, даже несмотря на некоторые технические трудности, которые у меня были. Так что очень круто. Я думаю, что команды агентов сейчас немного ненадежны, но они определенно указывают нам на то, как будет выглядеть будущее агентской разработки. Иметь целую флотилию агентов, работающих на нас, общающихся друг с другом, без необходимости нашего вмешательства. Итак, без дальнейших церемоний, переходим к клипу из прямого эфира. Итак, это функция, которая только что была выпущена в Cloud Code с выходом Opus 4.6. Я думаю, всего полторы недели назад это было выпущено в мир. И я хочу обсудить это с вами, ребята, потому что это экспериментальная функция. Она не работает чрезвычайно хорошо на данный момент. Мы поговорим об этом, когда будем использовать ее в прямом эфире. Но я действительно думаю, что именно сюда движется агентская инженерия, потому что то, что у нас есть с командами агентов здесь, — это возможность запускать несколько агентов, работающих параллельно, но фактически общающихся друг с другом. Это главное отличие от под-агентов. У нас были под-агенты некоторое время, которые мы могли вызывать параллельно. Но под-агенты не общаются друг с другом, верно? Например, у нас есть главный агент, который запускает под-агентов. Они выполняют некоторую работу. У них есть какой-то результат, и они сообщают о нем главному агенту, но нет никакой координации. Но с командами агентов у нас есть главный агент, который запускает всех этих товарищей по команде, но они все разделяют список задач и общаются друг с другом. Так что товарищ по команде один может отправить сообщение товарищу по команде три. Товарищ по команде два может отправить сообщение обратно главному агенту, пока он работает. Они могут выполнять задачи и координировать действия друг с другом, например: "Я займусь этими двумя задачами, а ты займись этими тремя". Это очень, очень мощно. Теперь два недостатка команд агентов: во-первых, они очень недетерминированы. Вы даете много контроля главному агенту, чтобы он выяснил, как координировать действия с командой агентов здесь, и поэтому вы определенно теряете часть контроля. А второй недостаток — это очень много токенов, когда все эти агенты работают одновременно. Есть много накладных расходов с точки зрения использования токенов просто для того, чтобы эти агенты общались друг с другом. И поэтому есть определенные вещи, над которыми, я думаю, нужно поработать с командами агентов, прежде чем они будут действительно готовы для вас, чтобы создавать с их помощью программное обеспечение производственного качества. Но причина, по которой я хочу обсудить это с вами, ребята, заключается в том, что я думаю, мы достигнем этого, вероятно, в течение следующих полугода. Я думаю, что разработка с командами агентов станет нормой. И поэтому я хочу продемонстрировать реальную, действительно полезную производственную сборку с вами, ребята, с командами агентов прямо сейчас. И затем, как я уже говорил ранее, в то же время я хочу сделать действительно веселую версию разработки с командами агентов, где мы просто попытаемся увидеть, сколько агентов мы можем заставить работать одновременно. Так что я готов потратить много кредитов с Cloud Code прямо сейчас. Разработка с командами агентов. И вот что, вот что у меня есть для вас, ребята. Для первой сборки, более реальной сборки, у меня есть это агентское чат-приложение, которое я построил на этой неделе. Это очень простое приложение, где мы можем просто отправить сообщение агенту. Например, я могу просто сказать "привет", например. Хорошо. Так что, очевидно, это не полностью идеальное производственное приложение, потому что я построил его просто как основу чат-приложения. Вы можете думать об этом как об очень простой версии ChatGPT или Claude.ai. И что я собираюсь сделать с этим приложением, так это использовать команды агентов для создания интеграции платежей, чтобы пользователи могли покупать токены, и они используют токены для разговора с агентом. И для этого я буду интегрироваться с ChargeB. Так что это своего рода приложение, похожее на Stripe, где вы можете встроить монетизацию в свои продукты, в свои платформы. И поэтому мы будем разрабатывать с ChargeB здесь. Это решение, которое я очень ценю в последнее время. для встраивания монетизации в платформы, и у них есть навык интеграции с ChargeB, где мы можем встроить этот навык в нашу кодовую базу. Таким образом, Claude Code немедленно получает доступ к пониманию того, как эффективно разрабатывать с ChargeB, чтобы избежать галлюцинаций из-за ограничений обучения, которые есть у LLM. И поэтому мы будем разрабатывать с этим, и нам придется затронуть бэкенд, фронтенд и базу данных. Нам придется изменить схему базы данных для поддержки транзакций и токенов у пользователей. И нам придется встроить аутентификацию пользователей. Я буду использовать для этого Superbase. А затем нам придется затронуть фронтенд, очевидно, чтобы иметь страницу для биллинга. Нам придется затронуть бэкенд, чтобы работать с использованием токенов, когда мы взаимодействуем с агентом. Так что нам предстоит сделать многое. Таким образом, мы сможем использовать команду агентов для параллельной работы над фронтендом, бэкендом и базой данных. Так что это действительно, действительно хороший вариант использования. Я уже проводил некоторую работу на семинарах в прошлом году, где я создал интеграцию платежей поверх агентского чат-приложения, и я хочу сделать это снова, просто потому что это действительно хороший пример чего-то нетривиального. Не так уж просто встроить платежный процессор в приложение, но я определенно могу сделать это всего за один прогон команд агентов. И поэтому это идеальный уровень сложности. И поэтому мы приступим к этому. Мы будем использовать команды агентов здесь. И поэтому мой план состоит в том, чтобы начать с создания плана с помощью кодирующего агента. Так что я буду использовать Cloud Code для этого. Очевидно, было бы здорово использовать Curo, но команды агентов не поддерживаются в Curo. Так что я буду использовать Cloud Code здесь. И поэтому я буду работать поверх этого существующего приложения. Так что я просто скажу что-то вроде: "Привет, Claude, основываясь на этом приложении, какие у тебя есть идеи, как я могу создать интеграцию платежей?" А затем я попрошу его проработать это со мной. Я покажу вам, как выглядит этот процесс, потому что процесс планирования так же важен, как и фактическая реализация, если не более важен. Итак, есть несколько новых стратегий, которые я недавно придумал для эффективного планирования с помощью кодирующих агентов, которые я хочу показать вам, ребята. А затем, как только у меня будет план, я отправлю его в Cloud Code, чтобы запустить команду агентов и выполнить ее. А затем, пока это будет происходить параллельно, вот где я сделаю более веселый пример, где мы просто попытаемся увидеть, сколько агентов мы можем запустить одновременно. Так что надеюсь, вам это понравится. Я в восторге от этого. И так, я просто дам вам еще один демо этой приложения очень быстро, чтобы показать вам, на чем мы здесь строим. И поэтому я перейду в свой Cloud Code и давайте начнем наш процесс планирования здесь. Итак, я буду использовать Claude. И ради краткости этого стрима, чтобы все шло очень быстро, я просто буду работать в режиме yolo. И поэтому то, что я собираюсь показать вам, ребята, это действительно хороший пример разработки в существующей среде. У нас есть существующее приложение, и теперь я буду планировать с помощью Cloud Code, чтобы создать комплексную функцию поверх нашего существующего приложения. И процесс планирования, процесс планирования так важен. И то, что я обычно делаю, чтобы начать, это то, что называется прайм. И поэтому у меня есть команда для этого, просто /prime. И она проводит кодирующего агента через пошаговый процесс понимания кодовой базы. Это очень, очень просто здесь. Я просто, я имею, есть много разных версий команд прайм, которые вы можете создать. Но цель здесь — установить контекст в начале разговора. Вот все основные файлы кодовой базы, так что теперь вы понимаете, что вам нужно сделать, чтобы исследовать эту новую функцию, которую я собираюсь попросить вас построить. И обычно мои команды прайм не такие: "вот этот файл, этот файл, этот файл". Я просто настраиваю это так, чтобы это было очень кратко здесь. Но обычно это более динамично. Я прошу его искать по кодовой базе, понимать все основные файлы и читать их, а затем возвращаться ко мне и давать отчет обо всем, что вы понимаете о кодовой базе. И поэтому я позволю ему закончить свой прайм здесь, а затем мы перейдем к планированию. И поэтому я снова буду запускать команду прайм в начале каждого нового разговора, когда я хочу построить что-то новое. Хорошо, да, прайминг завершен. Так что я скажу: "Я хочу создать интеграцию платежей в мое приложение. В частности, я заинтересован в интеграции с ChargeB. Так что я хочу затронуть здесь базу данных, фронтенд и бэкенд. Так что нам придется много планировать, чтобы создать интеграцию платежей ChargeB. Я хочу, чтобы пользователи могли покупать токены, чтобы разговаривать с агентом, которого я уже настроил в этом приложении. И поэтому нам придется настроить пару пакетов в ChargeB. А затем нам придется их интегрировать. Нам придется создать страницу биллинга во фронтенде. А затем нам придется настроить так, чтобы пользователи покупали токены. И затем это один токен, списываемый за каждое взаимодействие с агентом. И нам придется подумать о некоторой другой функциональности, такой как возврат токена, если у агента возникнет ошибка, и тому подобное. И поэтому нам придется многое проработать здесь. Так что я хочу, чтобы вы прошли по кодовой базе и помогли мне понять, как я могу создать интеграцию платежей ChargeB в это приложение, а затем после того, как вы проведете некоторое исследование, я также хочу, чтобы вы много искали в Интернете, чтобы вы поняли, как разрабатывать с ChargeB. Вы можете использовать навык ChargeB, который я интегрировал здесь, а также. И поэтому да, это навык ChargeB прямо здесь, кстати. И поэтому, как только вы поймете, как работать с моей кодовой базой и интегрировать ChargeB, тогда я хочу, чтобы вы задали мне кучу вопросов. Это главное здесь, потому что мы проясним любые недоразумения, убедимся, что мы на одной волне с каждым способом, которым мы будем интегрировать эту новую функцию в кодовую базу. Так что задавайте мне много вопросов о том, как должен работать биллинг, как будет выглядеть фронтенд, как мы будем управлять токенами и тому подобное. Хорошо. Итак, я знаю, что это большая, большая порция информации, которую я дал, но именно так я и планирую: я начинаю с очень неструктурированного подхода. Я просто даю большой объем информации о том, что я хочу исследовать. Поиск по кодовой базе, поиск в Интернете. Он использует навык интеграции ChargeB, который я показал ранее, а также. Таким образом, он знает, что у него есть практически идеальная документация о том, как интегрировать ChargeB в мое приложение Next.js. А затем главное, на чем я хочу сосредоточиться с вами, ребята, здесь, это задавание вопросов. Так что я специально сказал ему задавать мне вопросы после того, как он исследует кодовую базу, потому что главная цель планирования — уменьшить количество предположений, которые делает ИИ-ассистент по кодированию при создании новой функции. Позвольте мне повторить это еще раз, это стоит повторения. Главная цель планирования — уменьшить количество предположений, которые делает кодирующий агент, потому что есть два типа ошибок, которые может совершить кодирующий агент. И технически оба являются вашей виной. Он может просто писать плохой код, потому что ваш план недостаточно ясен или вы не провели достаточно проверки, или он может просто отклониться от того, что вы хотите, чтобы он построил. Например, возможно, он просто не соответствует тому, как именно вы собираетесь создавать эту функцию. И поэтому то, что я начал делать много, и что я показываю вам, ребята, прямо здесь, это буквально просто сказать ему задать мне кучу вопросов. Например, я не доволен, если он не задает мне по крайней мере 10 вопросов здесь. Например, как вы хотите настроить страницу биллинга, или как мы должны структурировать пакеты для покупки токенов? Как мы должны отображать страницу оплаты ChargeB? Например, я заставлю его задать мне все это, а затем, если есть что-то, что, по моему мнению, он не спросил, я просто скажу ему сделать это. И я начал предпочитать этот подход, а не просто пытаться указать все в подсказках. Например, конечно, я могу просто сказать: "Я хочу, чтобы биллинг выглядел так". Цены на пакеты должны быть 10, 15 и 25 долларов, верно? Например, вы можете указать все это в чате. Но причина, по которой мне нравится, когда он задает мне вопросы, заключается в том, что часто он задает вопросы, о которых я даже не думал, что они мне нужны. Например, он делает какое-то другое предположение, которое я даже не осознавал, что мне нужно указать. И Claude Code имеет эту новую функцию. И ей, я думаю, около месяца, но у нее есть этот инструмент "задать вопрос пользователю", где она может отобразить вариант с множественным выбором здесь, что также делает ее очень быстрой. Например, если она находится на той же волне, что и я, и я могу просто согласиться с ее рекомендуемым вариантом. Тогда я могу просто быстро пройти через все и также, если мне нужно, я могу ввести свой собственный ответ в текстовое поле. Так что я могу быть очень конкретным, если хочу, или если у нее уже есть хороший рекомендация, я могу просто нажать Enter и перейти к следующему вопросу. Так что вы увидите это немного позже. Хорошо, для безопасности веб-хуков, как нам проверять входящие запросы веб-хуков ChargeB? Я скажу здесь, у меня есть имя пользователя и пароль, установленные в .env. Хорошо. Должны ли мы обрабатывать идемпотентность веб-хуков, дублирующиеся события? ChargeB может отправлять события несколько раз. Нет, давайте не будем усложнять. Честно говоря, я не думаю, что у нас будут условия гонки с этим. Для истории транзакций на странице биллинга. Какую информацию должна содержать каждая строка? Давайте скажем, простой список. Я хочу, чтобы некоторые вещи были, мне не нужно быть слишком исчерпывающим. Хорошо, вот оно. Это хорошо. Вы упомянули использование Versell Agent Browser CLI для сквозного тестирования. Должен ли план включать конкретные сценарии сквозного тестирования? Да, вы всегда хотите определять свою проверку заранее. Это еще одна действительно важная вещь, которую следует иметь в виду: в рамках структурированного плана мы скажем агенту: "Вот линтинг и проверка типов, которые мы хотим, чтобы вы сделали. Убедитесь, что вы пишете модульные тесты и запускаете их". А затем сквозное тестирование, это самая мощная часть. Также есть много контента, который я делаю на своем YouTube-канале в последнее время, используя Versell Agent Browser CLI. Это очень мощный инструмент автоматизации браузера, который позволяет агенту запускать браузер и тестировать веб-сайт так же, как это сделал бы пользователь. И это большое улучшение по сравнению с другими инструментами, которые я использовал в прошлом, такими как серверы Playwright или Puppeteer MCP. И поэтому да, я хочу, чтобы это была большая часть плана, чтобы агент мог самопроверять. Таким образом, к тому времени, когда окончательный результат вернется ко мне, он протестировал все. Он прошел, купил токены с помощью ChargeB, взаимодействовал с агентом и убедился, что токены списаны. Например, я хочу, чтобы он выполнил всю эту проверку. Я хочу дать ему возможность сделать это еще до того, как он напишет хоть одну строку кода. Итак, хорошо, у меня здесь так много вопросов. Должны ли элементы ChargeB создаваться вручную в панели управления ChargeB? Я хочу, чтобы вы настроили элементы в ChargeB как часть реализации. Так что включите это в план. И я скажу, я просто скажу, что как только мы фактически создадим план, потому что сейчас я не заставляю его активно создавать план, я попрошу его сделать это, как только я пройду все, что, по моему мнению, мне нужно здесь. Итак, для отношения разговора к пользователю, поскольку в чате в настоящее время нет идентификатора пользователя, должны ли разговоры быть связаны с аутентифицированными пользователями? Да, это важно. Каким должен быть идентификатор клиента ChargeB? Superbase. Правильно. Хорошо, очень хорошо. Итак, чувак, мы задали много вопросов на данный момент. Я очень надеюсь, что мы скоро закончим, и мы всегда можем закрыть следующий набор вопросов и просто сказать: "Эй, я думаю, мы получили все, что нам нужно". Хорошо. Хорошо. Несколько заключительных уточняющих вопросов. Итак, мы почти у цели, но это действительно хорошо, и это не так много токенов в целом. Так что это очень ценно, не слишком много токенов. Вы сказали, что страница биллинга должна быть по адресу /billing. Должна ли она быть под макетом панели управления в dashboard/billing или отдельной страницей? Конечно, я думаю, мы можем это сделать. Для настройки элементов ChargeB. Должен ли это быть отдельный скрипт или часть существующего? Мы сделаем отдельный. Должна ли страница чата перенаправлять на вход, если не аутентифицирован? Да. Хорошо, отправьте ответы. Хорошо, я думаю, на данный момент у нас есть все, что нам нужно. Итак, мы переходим в режим планирования здесь, потому что у него есть все, что нам нужно, и он создаст план, который я на самом деле прерву, потому что у меня есть своя работа, которую я, свой способ, которым я хочу, чтобы это было сделано. Итак, одна вещь, которую я действительно люблю использовать, и я много говорю об этом в курсе кодирования Aenta, это то, что у меня есть команда plan. Это работает лучше для меня, чем режим плана и процесс планирования, встроенный в Cloud Code. Так что это команда, где я просто описываю, что я хочу построить, а затем он создаст очень структурированный план. Итак, способ, которым я всегда делаю свой процесс планирования с кодирующими агентами, это я начинаю неструктурированно, как вы уже видели. Я просто даю большой объем информации о том, что я хочу построить. Я заставляю его искать в Интернете и искать в кодовой базе. Задавать мне вопросы. А теперь я формализую все это в структурированный план. И именно это делает эта команда. И поэтому я собираюсь сделать /plan create an implementation plan. А затем, ну, на самом деле, одна вещь, которую я понял, это своего рода ошибка с Opus 4.6: я назвал эту команду plan так же, как и внутреннюю команду плана Claude. И поэтому обычно я просто заставляю его смотреть на этот путь. Так что, подождите, я скопирую этот путь, и я скажу, посмотрите сюда и используйте эту команду. Теперь, давайте создадим структурированный план или эту интеграцию платежей ChargeB, которая, кстати, вот как вы используете команды для любого кодирующего агента, который не поддерживает их напрямую, например, Cloud Code. Это просто небольшой обходной путь, который мне приходится делать, потому что у меня просто плохое название для команды plan, потому что оно совпадает с внутренней. Например, вы увидите, если я сделаю /plan, то есть как бы две версии, и Claude Koga сбит с толку. Я просто забыл изменить название заранее. Так что я просто говорю ему посмотреть туда, и поскольку команды — это просто markdown, он может это прочитать, и тогда это то же самое, как если бы я просто сделал /plan с правильной командой. И поэтому мы уже заставили его задавать очень хорошие вопросы. Так что давайте пройдемся по этому. Итак, предыдущая ветка имела полную рабочую реализацию. Очевидно, я протестировал это перед прямым эфиром, чтобы убедиться, что все работало очень хорошо. Но я все равно хочу построить это с нуля вместе с вами, ребята. Так что я хочу полностью проигнорировать это. Так что я собираюсь построить что-то с нуля, чтобы действительно показать эту полную реализацию от начала до конца. Чат в настоящее время не аутентифицирован. Должен ли чат теперь требовать Superbase Auth, чтобы мы могли отслеживать баланс токенов для каждого пользователя? Да, мы будем требовать аутентификацию. Какой пакет токенов? Три уровня — это хорошо для меня. Должны ли пользователи получать бесплатные токены при регистрации? Да, 10 токенов. Так что я дал хороший пример того, как в большинстве случаев я просто прохожу через множественный выбор, просто выбирая варианты. Посмотрите, как быстро это позволяет мне пройти через Q&A агента. И затем в самом конце был один пример, где я хотел написать что-то свое, скорее классический вариант: "позвольте мне дать агенту ответ в свободной форме". Так что я собираюсь отправить свои ответы. И Cloud Code запрограммирован таким образом, что он задает только несколько вопросов за раз, но он даст мне больше вопросов немного позже. И поэтому он подумает о том, что я ему дал, и затем через секунду здесь должны появиться новые варианты с множественным выбором. Вот оно. Идеально. Хорошо. Итак, что определяет потребление токенов? Когда следует списывать один токен? Так что мы становимся довольно конкретными здесь, но это именно то, что я ищу. Опять же, уменьшение предположений, которые делает кодирующий агент. И поэтому я скажу: "за каждый ход разговора". Итак, один токен списывается за полный цикл. Итак, сообщение пользователя плюс ответ ИИ. Так что, если вызов LLM завершится неудачно, что должно произойти? Да, я хочу автоматически вернуть токен. Где должна находиться страница биллинга в навигации приложения? Давайте сделаем dashboard/billing. Или я просто сделаю /billing здесь. Я думаю, я сделаю это проще. Что должно произойти в пользовательском интерфейсе чата, когда у пользователя ноль токенов? Мы скажем: отключить ввод и показать кнопку "Купить токены". Да, это звучит отлично. Так что отправьте эти ответы. Очень хорошо. И тогда мы просто посмотрим, будет ли он продолжать появляться. И тогда на этом этапе я также должен подумать: какие еще вопросы он должен задавать, которые он еще не задал? Потому что Cloud Code часто никогда не будет идеальным в понимании всего, что мы собираемся построить. Возможно, у меня есть другие вещи, настроенные заранее. Например, у меня уже есть учетная запись ChargeB, поэтому я, вероятно, хочу сообщить ему об этом для планирования. Так что просто пытаюсь продумать буквально все, что только могу, чтобы устранить эти предположения. Итак, хорошо, еще больше вопросов. Хорошо. Продолжайте, Claude. Продолжайте. Для первых трех уровней пакетов токенов, какие количества и цены вы хотите? Итак, давайте посмотрим. 50 токенов за, давайте сделаем так. Итак, 5 долларов за 100 токенов. А затем мы сделаем 10 долларов за 250 токенов. Так что мы хотим, чтобы со временем это было более выгодно. А затем 25 долларов за 500 токенов. Разве это не Ой, нет, это нехорошо, потому что это будет 600. Вот оно. Хорошо, вот оно. Итак, как должна выглядеть страница биллинга? Какие компоненты вы хотите? Итак, хочу ли я полную страницу биллинга? Карточка баланса токенов, три карточки покупки, история транзакций или просто минимальная страница покупки. Знаете что? Давайте сделаем это. Давайте сделаем полную страницу биллинга. Должны ли мы использовать страницу оформления заказа ChargeB? Перенаправление на ChargeB, а затем обратно или встроенный опыт в приложении? Да, давайте пройдем через оформление заказа. Это определенно будет меньше для нас поддерживать. И тогда он перенаправит на страницу успешного биллинга, а затем обновит наш баланс токенов. Это идеально. Хорошо. И есть много разных способов интегрироваться с ChargeB. И поэтому я очень рад, что он задает все правильные вопросы. Cloud Code просто отлично справляется с задаванием правильных вопросов. Честно говоря, вероятно, больше ничего не придется указывать на данный момент. Хотите ли вы, чтобы баланс токенов был виден в заголовке чата? Всегда виден во время чата. Да, это 100% то, что я ищу. И это то, что я даже говорил ранее, возвращаясь к пользовательскому интерфейсу. Я хочу, чтобы здесь было что-то вроде "мой баланс токенов" и затем какая-то ссылка для перехода на страницу биллинга, что, кстати, является одной из вещей, которые мне, вероятно, придется указать здесь. Он не очень-то спрашивал об этом. Например, как пользователь попадет на страницу биллинга с главной страницы сайта, где мы общаемся с агентом. Так что я, вероятно, укажу это, если он не спросит немного позже. Для базы данных, должны ли балансы токенов храниться как единый баланс на строку или как журнал всех транзакций? Да, баланс и журнал — это хорошо. Должны ли токены списываться перед отправкой сообщения? Да. А затем, у вас уже есть настроенная учетная запись ChargeB? Ах, да. Да. Так вот, на самом деле здесь я хочу указать больше вещей. Итак, я скажу: да, у меня уже настроен ChargeB. И у меня даже есть Ngrok, настроенный здесь, готовый к работе. Так что у меня есть веб-хук ChargeB, который уже настроен для отправки запросов на /webhooks/chargeb, и у меня уже есть все переменные окружения, настроенные в моем .env для ChargeB, и поэтому мы сможем сразу перейти к нашему сквозному тестированию с помощью Versell Agent Browser CLI, когда у нас будет весь код, написанный для интеграции ChargeB. Так что это очень важно для вас, чтобы иметь в виду при создании плана, который я создам с вами немного позже. И поэтому есть некоторая работа, которую я проделал заранее, чтобы все настроить, чтобы сделать нашу прямую сборку здесь быстрее. Так что у меня уже есть настроенная учетная запись ChargeB. Я покажу вам это здесь. И вот как работают все платежные платформы, кстати: у них есть веб-хук. Так что всякий раз, когда вы совершаете покупку на платформе, она отправляет запрос на этот веб-хук, чтобы мы могли обработать платеж. Например, в нашем случае мы добавим токены в запись пользователя в нашей базе данных Superbase. И мы можем даже протестировать этот веб-хук, чтобы убедиться. О, похоже, мне нужно снова войти, потому что моя страница устарела. Но я войду снова, а затем мы сможем протестировать веб-хук, который, я думаю, сейчас завершится неудачей. Да, он сейчас завершится неудачей, потому что мы еще не реализовали конечную точку. Но в тестировании, которое я провел вчера, чтобы убедиться, что эта прямая сборка прошла гладко, очевидно, я создал веб-хук и протестировал его здесь, и все было готово. Так что у нас настроено на стороне ChargeB, что он готов отправлять запросы сюда. Так что теперь все, что нам нужно, это чтобы наш кодирующий агент реализовал эту конечную точку API, которая обрабатывает успешную покупку, чтобы мы могли обновить токены для пользователя в базе данных. И поэтому я использую, потому что это мой способ получить URL-адрес HTTPS, чтобы я мог сделать его доступным для всего мира, чтобы мы могли обрабатывать входящие запросы от ChargeB. Так что очень круто. Хорошо. Итак, с этим, позвольте мне свернуть это на данный момент. Вернуться к агенту, и я отправлю это. Итак, для веб-хуков и локальной разработки, у вас есть настроенный инструмент туннелирования? Да, у меня уже есть Ngrok, настроенный, как я объяснил в предыдущем ответе. Так что одна вещь, которую Cloud Code здесь не делает, это то, что он не делает вопросы динамическими на основе того, что вы ответили ранее. И поэтому он еще не знает, что я уже объяснил это, поэтому мне приходится отправлять это. Но я думаю, что именно поэтому Cloud Code задает только несколько вопросов за раз, потому что таким образом он может убедиться, что он не просто отправил вам около 20 вопросов подряд, но затем ваш ответ на второй делает так, что ему приходится задавать вам совершенно другой набор из 18 вопросов, которые предстоят. Так что мне нравится то, что он делает здесь. Так что, честно говоря, он, вероятно, задает больше вопросов, чем я бы действительно хотел на данный момент, но это все хорошо, потому что я не должен жаловаться. Чем больше вопросов, тем лучше, честно говоря, потому что он тратит довольно много контекста, задавая мне эти вопросы. Но как только я создам план, я перейду в совершенно новую сессию контекста, совершенно новую сессию с кодирующим агентом, потому что структурированный план на тот момент — это единственный контекст, который мне нужен, чтобы выполнить работу. Это большая вещь, которую я преподаю в курсе кодирования Dynamis Agent: после того, как вы создадите свой план, это весь контекст, который нужен вашему агенту. Вы можете сбросить окно контекста, а затем перейти к реализации. Хорошо, у нас есть наш план здесь. Очень хорошо. Очень хорошо. Так что я собираюсь перейти в планы. Итак, он вывел его в мою папку планов агентов. Так что давайте посмотрим предварительный просмотр здесь. Так что я всегда рекомендую, я не буду тратить слишком много времени ради краткости здесь, но я всегда рекомендую провести очень глубокий обзор плана, прежде чем отправлять его на реализацию. И причина этого довольно проста. Ваш план имеет очень высокое влияние, верно? Например, одна ошибка в вашем плане может привести к сотням строк плохого кода. Но одна строка плохого кода — это просто одна строка плохого кода. Так что вам действительно нужно убедиться, что ваш план хорошо структурирован и фактически соответствует тому, что вы хотите построить. Теперь, поскольку я заставил его задать мне так много уточняющих вопросов, у меня не должно быть никаких проблем с моим планом здесь. Это вся цель. Уменьшение предположений заранее, заставив его задавать мне вопросы, но все же важно пройти и проверить все. И поэтому вам не нужно проходить каждую строку, и я определенно не буду делать это в прямом эфире, но я, по крайней мере, хочу провести быструю проверку, чтобы убедиться, что все структурировано правильно. Я имею в виду, все это следует точной структуре плана, которую я изложил в своей команде plan, верно? Например, я хочу начать с резюме, истории пользователя, ключевых решений, которые мы принимаем здесь. Так что все это основано на вопросах, которые он мне задал, кстати. Так что мы можем напрямую видеть всю нашу работу, идущую непосредственно в этот план. А затем у нас есть различные шаблоны, которым он будет следовать, основываясь на том, что у нас уже есть в кодовой базе. Это очень важно для разработки в существующей среде. Мы должны убедиться, что мы следуем соглашениям, которые у нас уже есть в кодовой базе. В противном случае наша кодовая база станет неуправляемым беспорядком по мере создания новых функций, если они не будут следовать тому же соглашению. А затем у нас есть список задач. Так что он очень хорошо разбил для нас вещи, которые нам нужно изменить в базе данных. бэкенд и фронтенд. А затем другая вещь, на которую я хочу обратить особое внимание, это проверка. Я хочу убедиться, что она очень исчерпывающая с точки зрения сквозной проверки с использованием Versell Agent Browser CLI. Итак, вот все пользовательские пути, которые он будет тестировать. И да, это много, но это действительно важно. Мне стоит потратить дополнительные токены во время проверки, чтобы убедиться, что мы тестируем каждый способ, которым пользователь может использовать новую функцию, которую мы создали. И поэтому это выглядит фантастически для меня. На самом деле, я собираюсь взять это и сразу же отправить на реализацию. И поэтому я собираюсь, и это здорово, потому что мы никогда даже не сжимали наш разговор. Мы сделали все, что нам нужно для планирования, в рамках одного окна контекста для Cloud Code. Это здорово. Так что я открою новый экземпляр. Я оставлю этот открытым на случай, если мне понадобится что-то скорректировать в плане или задать вопросы по плану. Я собираюсь перейти в T-Mox, чтобы я мог использовать команды агентов. А затем в этом репозитории у меня уже включено. Если я зайду в папку cloud, вы увидите в settings.local.json, что у меня установлен experimental agent team в 1. Так что мы включили его. Мне просто нужно перейти в cloud. И затем, очевидно, снова я просто буду использовать dangerously skip permissions, чтобы все шло быстро. Не хочу утверждать вещи посреди прямого эфира. А затем то, что я сделаю дальше, это я использую команду. Так что build with agent team. Это команда, которую я недавно освещал на своем YouTube-канале. Так что позвольте мне на самом деле вернуться на свой канал. Я хочу показать это очень быстро для всех, кто любопытен. Потому что сам по себе Cloud Code не очень хорошо использует облачные команды агентов, потому что это такая экспериментальная функция. Проблема с параллельной разработкой заключается в том, что есть много блокировок, которые у вас есть, например, вам нужно определить схему базы данных, прежде чем бэкенд-агент сможет что-либо сделать, и тому подобное. И поэтому я создал команду, которая фактически направляет Cloud Code на то, как более эффективно использовать команды агентов. Так что он не пытается сделать буквально все параллельно. Есть некоторые вещи, которые мы можем делать параллельно, но моя команда реализует то, что я называю подходом "контракт в первую очередь". Ведущий агент определяет контракты между фронтендом, бэкендом и базой данных и любым другим подобным. А затем он отправляет это в виде части подсказки каждому из агентов, работающих в команде. Так что они могут работать параллельно, но у них все еще есть эта своего рода координация, определенная заранее. И это работает для меня очень, очень хорошо. Так что я освещаю это в этом видео прямо здесь. Если вам интересно, если вы хотите углубиться в это на моем канале, у меня есть это. Итак, что делает build with agent teams, это команда, которая включает все эти инструкции. И поэтому все, что мне нужно сделать, это передать путь к плану. Так что я скопирую относительный путь здесь. А затем второй параметр, который у меня есть с этим навыком, я просто покажу это очень быстро. Так что я перейду к, где это? skills build with agent team. Второй параметр здесь — количество агентов. И поэтому, если вы не укажете это, вы фактически позволяете Cloud Code решать, сколько агентов будет в команде. Так что он может выяснить это на основе вашего плана. Это действительно динамично, потому что эта команда берет план, выясняет, как я могу разделить эту работу на разных агентов в команде, а затем как я определяю, что является параллельным, а что мне нужно определить как контракты заранее, верно? Например, у нас есть подход "контракт в первую очередь". Определите контракты, сопоставьте их, прежде чем начать запускать всех агентов, верно? Например, это только пятый шаг, где мы фактически запускаем всех агентов параллельно. Так что мы все еще делаем большую часть работы параллельно, но мы делаем всю эту действительно важную работу заранее, чтобы агентам не приходилось так сильно наступать друг другу на ноги. Так что в данном случае, чтобы сделать это более детерминированным, я скажу, что хочу трех агентов. Так что я сам это определю. Хорошо. Хорошо. Так что я собираюсь отправить это. Также скажу, убедитесь, что вы используете навык ChargeB при реализации. Очень важно, чтобы бэкенд- и фронтенд-агенты делали это. Так что это то, что я, вероятно, должен был включить в свой план, но я просто буду очень откровенен здесь, потому что это будет очень важно, чтобы убедиться, что он не делает никаких галлюцинаций кода с ChargeB. Так что я собираюсь воспользоваться этим навыком. Это то, что я очень ценю в ChargeB и большинстве SaaS-платформ, которые вы собираетесь использовать в качестве инструмента в своей кодовой базе, библиотеки или просто какой-либо возможности, за которую вы платите. Это довольно важно. Я думаю, это также будущее агентского кодирования: каждая платформа, которую вы интегрируете, будет иметь какой-то навык, который вы можете принести своему кодирующему агенту, чтобы он знал, как лучше всего использовать SDK. Правильно. Это как бы руководство о том, как мы можем использовать SDK ChargeB для правильного создания вещей с первой попытки в нашем коде Next.js, и это действительно имеет значение. Я тестировал сборку как без этого навыка, так и с ним, и это очень, очень полезно, давая контекст агентам, потому что часто агенты из-за ограничения обучения не знают правильную документацию для этих библиотек или, возможно, вообще не знают ее, потому что это более новая платформа, и поэтому возможность дать ей легкий доступ к обновленной информации — это то, над чем я много работал в прошлом году с Archon, но теперь многие из этих инструментов просто встраивают это, как то, что у нас есть здесь с навыком ChargeB. Хорошо, очень круто. Мы видим, что у нас есть наш первый, у нас есть основной основной агент. Я полагаю, наш ведущий агент решил создать основной агент для нашей реализации ChargeB. Очень, очень круто. Итак, он начинает с присвоения задачи номер один в этом общем списке задач. А затем, тем временем, наш ведущий агент запускает других двух агентов параллельно. Итак, хорошо, у нас три агента ChargeB работают одновременно. Итак, у нас есть основной, фронтенд и бэкенд агент. Я предполагаю, что основной агент больше работает над схемой базы данных и авторизацией. Я не совсем уверен. Но вы всегда можете спросить его, верно? WSL-shutdown. Иногда приходится это делать. К сожалению, WSL иногда доставляет неприятности. Хорошо, так что вернемся к моим терминалам. Я запущу новый WSL. Мне приходится это делать, потому что команды агентов не работают просто в Windows. Если я хочу иметь разные терминалы T-Mux. Так что я перезапущу все здесь. Dangerously skip permissions. Хорошо, очень хорошо. А затем я сделаю build with team. А затем я передам план снова. Так что скопирую относительный путь. Вот оно. И тогда, надеюсь, мы не разобьемся на этот раз, потому что мы не запускаем 12 сессий, 12 агентов или фактически 13 всего. Хорошо, вот оно. Так что да, теперь мы вернемся к делам, как только он запустит всех агентов. Я думаю, агенты на самом деле работали параллельно, мы просто как бы пропустили это. Так что он разбился. Он разбился, но все агенты, они фактически работали за кулисами. Это было просто так, что терминал был багнутым. Так что мы фактически, мы имели всех агентов, работающих параллельно. Теперь нам просто нужен наш ведущий агент, чтобы вернуться и исправить вещи. Так что интересно, интересно. Так что он исправит ошибки линтинга, а затем проведет окончательную проверку. Так что косвенно, у нас работала команда агентов. Так что я знаю, что, возможно, это была не лучшая демонстрация, потому что мой WSL разбился, но агенты фактически построили все. Так что это довольно круто. Мы просто не увидели все журналы, которые с маленькими терминалами в T-Mux, обычно это не было бы так, что мы бы увидели что-то происходящее. Но это круто. Итак, он запустил еще одного агента в команде здесь, чтобы заняться исправлениями бэкенда. Так что, хорошо, это довольно здорово. Итак, вернемся к вашему вопросу, Шон. Я покажу это снова. Как мы можем отслеживать межкоммуникацию агентов? Ну, мы не можем. Единственное, что я скажу, это то, что мы можем перейти к ведущему агенту. Например, я могу нажать Ctrl+B обратно к ведущему агенту и сказать: "Как агенты общались друг с другом?" И я не буду этого делать. Я позволю ему просто продолжать. Это довольно круто. Он запустил целую другую команду для исправлений. Так что мы прошли большую часть пути с предыдущей командой агентов, затем она разбилась. Теперь мы вернулись, просто проверяя вещи и проводя окончательное сквозное тестирование. Итак, да, на самом деле нет способа, кроме как просто спросить: "Как вы общались с агентами?" Вы получите приличный ответ, если сделаете это. Так что у него есть это мета-рассуждение о том, как агенты говорили друг с другом, но нет никакой панели управления, которая бы говорила: "Этот агент взял эту задачу и отправил эти сообщения этим агентам". Я думаю, вы могли бы построить это с помощью хуков или чего-то подобного. Я не удивлюсь, если Anthropic улучшит команды агентов в ближайшем будущем, добавив больше наблюдаемости, но сейчас этого явно не хватает, на мой взгляд, в инструменте. Почему команды агентов стоят дороже, чем вызов под-агентов? Справедливый вопрос. Основная причина — это просто все эти накладные расходы на связь. Управление общим списком задач, отправка сообщений друг другу. Большая часть этого пока не оптимизирована, но это не так уж и страшно. На самом деле, давайте посмотрим на это прямо сейчас. Итак, пока это работает, давайте перейдем к моим настройкам файла использования. Мне нравится использовать Cloud Desktop, чтобы проверять использование Cloud для моей подписки. И взгляните на это. Это не так уж плохо. Я использовал только 16% моей текущей сессии, и она сбрасывается через 37 минут. И мы провели полную реализацию. Я знаю, что она разбилась, и нам пришлось все перезапускать. Но мы все равно использовали команды агентов для всей этой реализации, и это было всего 16%. И я использовал только 11% для моего недельного лимита. И это много всего, что я делал вчера и позавчера, или, я думаю, он сбрасывается каждую пятницу. Так что просто работа, которую я делал вчера, тоже. Это не так уж плохо. Я удивлен, что люди так сильно жаловались на то, что он потребляет много токенов, потому что с планами от 100 до 200 долларов в месяц для Claude вы сможете запускать команды все время и не столкнетесь с ограничениями. Это нормально. Это действительно, они, вероятно, могут сделать много оптимизаций, но это все еще не так уж плохо прямо сейчас. Круто. Итак, три агента работали параллельно. У нас есть исправления бэкенда, страница биллинга и исправления тестов. Так что он говорит, что все идеально. Теперь одна вещь, которую Opus 4.6 упустил. И, к сожалению, Opus 4.6 конкретно часто упускает это для меня: он всегда игнорирует сквозное тестирование, которое я хочу, чтобы он сделал с помощью Agent Browser CLI. И поэтому я собираюсь перейти в AquaVoice и потребовать, чтобы он провел полное тестирование, потому что я хочу, чтобы он, как я уже говорил ранее, прошел через все пользовательские пути и убедился, что все работает идеально, прежде чем управление вернется ко мне. Так что я собираюсь сказать: "Хорошо, мне нужно, чтобы вы прошли сквозное тестирование с помощью Agent Browser CLI. Вы совершенно упустили это. Нам нужно пройти через все пользовательские пути, и я не хочу, чтобы вы останавливались. Вы не можете остановиться, пока не протестируете каждый пользовательский путь, и вы уверены, что приложение работает идеально. Так что приступайте к запуску приложения. Убедитесь, что вы проходите через каждый из пользовательских путей, которые мы наметили в структурированном плане. Вы можете снова прочитать структурированный план, если вам нужно.
который не должен был понадобиться, потому что нам даже не пришлось сбрасывать окно контекста. Так что, вероятно, мне даже не нужно было этого говорить. Но в любом случае, я просто очень ясно даю понять, что вы не можете пропустить этот шаг. Я не знаю, почему Claude с Opus 4.6 конкретно, это начало происходить со мной. Это не самая большая проблема, потому что я могу просто заставить его, э-э, начать все заново и, э-э, подхватить все это тестирование, которое он не смог выполнить, но просто раздражает, что мне приходится это делать. Хорошо, так что, э-э, давайте посмотрим. Мне не нравится, что он делает curl напрямую, как будто "Хорошо, вам нужно использовать браузерный CLI агента Verscell". Честно говоря, Opus 4.5 произвел на меня большее впечатление, чем Opus 4.6. У меня есть навык здесь. У вас есть возможность использовать браузер агента. С Opus 4.5 он автоматически переходил к сквозным сценариям, без необходимости просить его. Хорошо, вот оно. Итак, теперь он использует навык. Так что мы в порядке. Мы на правильном пути. Но мне не нравится, что мне приходится просить его об этом. Это как бы довольно последовательно сейчас. Э-э, теперь, вероятно, это означает, что у меня есть возможность улучшить свой план или улучшить свою команду, чтобы она была более ясной, и ему пришлось бы заняться этим. Но, э-э, это немного раздражает, когда выходит новая модель. Иногда приходится корректировать свои подсказки и команды, чтобы они работали с этой новой моделью. Это может быть более мощная модель, но она по-другому понимает ваши подсказки. И это происходило со мной много раз, особенно при переключении между разными поставщиками. Но даже если есть, скажем так, обновленная версия LLM от другой, она просто по-другому понимает ввод. Вот и все. Но очень здорово видеть, как он использует браузер агента. Я мог бы также заставить его работать в режиме с графическим интерфейсом. На самом деле, давайте сделаем это. Э-э, сделайте режим с графическим интерфейсом, чтобы мы могли наблюдать за валидацией, потому что сейчас он делает все за кулисами с браузером без графического интерфейса. Но было бы очень здорово, если бы мы могли наблюдать, как он проходит пользовательские пути, такие как покупка токенов и взаимодействие с агентом. Э-э, так что позвольте мне закрыть текущий браузер, снова открыть режим с графическим интерфейсом, чтобы вы могли наблюдать. Думаю, это будет хорошо для трансляции, чтобы мы могли видеть, как все происходит. Итак, он находит проблемы по мере продвижения, что нормально. Я полностью этого ожидаю. Это не обязательно вина использования команд агентов, но именно поэтому я провожу сквозное тестирование. Независимо от того, насколько ясен мой план, всегда будут те мелкие проблемы с кодом, которые ему придется решать, и он найдет эти вещи, когда попытается фактически использовать веб-сайт, как это сделал бы пользователь. Так что это хорошо. Это то, что мы здесь ищем. Э-э, и да, это именно то, что я видел и раньше. Он скажет, например, "все тесты завершены" внизу, но затем будет стена текста с этой скрытой вещью, вроде "ой, тест X не сработало". Ну, это просто из-за какой-то другой проблемы, которая уже существовала. Черт возьми, это меня бесит. Именно это происходит все время. И есть определенно способы, как это улучшить, будучи конкретным в ваших глобальных правилах или командах, чтобы, скажем так, не говорить этого, верно? Например, вы можете включить в свои инструкции. Э-э, не игнорируйте неудачный тест только потому, что вы думаете, что он вызван чем-то другим, что произошло раньше, верно? И, как иногда это помогает, но это все еще природа LLM, где они делают это, и это очень раздражает. Так что в любом случае, позвольте мне, э-э, могу ли я сделать это больше здесь? Хорошо, я не могу. Так что размер окна здесь несколько ограничен. Так что, возможно, вам трудно действительно прочитать мелкий шрифт того, что происходит, но да, давайте, давайте позволим ему идти. Итак, он регистрирует новую учетную запись в Superbase. Очевидно, э-э, есть проблема с браузером, так что ему придется это определить. Всегда есть те вещи, которые ему приходится выяснять, что не так сначала, а затем он исправит эти, скажем так, глупые сбои сначала, а затем сквозное тестирование станет намного более плавным. Так что он доберется туда. Он доберется туда. Но это меня не удивляет. Но именно поэтому мы позволяем ему делать это автономно, потому что мне все равно, что у него сначала возникают такие глупые проблемы, потому что тогда, когда он вернется ко мне, все будет отлично. Но, хорошо, давайте посмотрим, как мы выглядим. Итак, хорошо, делаем снимок экрана для входа. Выглядит хорошо. Хорошо, так что в любом случае, наконец, наш агент разобрался с этими проблемами в бэкенде. Но это, это здорово, верно? Мне просто, это отличная демонстрация. Даже несмотря на то, что раздражает, что это заняло около 10 минут, чтобы найти эти проблемы, он может решить все за кулисами, потому что он может тестировать так же, как я бы, если бы сам запустил приложение. Но теперь мне не нужно говорить: "Эй, Клод, агент не ответил мне здесь. Тебе нужно разобраться с этим." Он просто сам все это выясняет. Он будет повторно тестировать автоматически. Все делается автоматически. В этом вся прелесть сквозного тестирования. Теперь, теоретически, я мог бы использовать команды агентов здесь, чтобы делать больше сквозного тестирования параллельно. И поэтому, возможно, я не использую команды агентов так много, как мог бы, но обычно я люблю использовать команды для самой реализации, написания всего кода, а затем я оставляю проверку главному агенту в конце. И так получается, что сквозная проверка обычно занимает много времени, но это все равно большая работа, выполняемая параллельно на начальном этапе. Вы видели, что вся реализация заняла всего 5-10 минут, и да, здесь есть некоторые исправления, которые нужно сделать, но он смог очень, очень быстро пройти через эту сборку. Клоду самому потребовалось бы около 30 минут. Так что было очень здорово это видеть. Теперь нам просто нужно пройти через мелкие сбои, которые возникают, и которые произошли бы, даже если бы мы не использовали команды агентов. Так что это хорошие вещи. Хорошо, теперь мы дошли до точки, где все работает с агентским чатом. мы можем правильно потреблять токены. Теперь мы переходим к вещам с Chargebee, и он пытается приобрести токены. Он уже сталкивается с некоторыми ошибками, которые, как мы знали, возникнут, потому что мы сами столкнулись с некоторыми проблемами, когда тестировали его, но теперь он просто устранит все это. И это как бы тема, которую мы здесь имели: да, с командами агентов это не было идеально, реализация могла произойти и без них, но это не имеет значения, потому что, когда мы дойдем до сквозной проверки, он найдет все эти проблемы и исправит их автономно, и я действительно не думаю, что это вина команд агентов, потому что это более сложная реализация, которую мы делаем здесь, интегрируясь с Chargebee, но я просто показываю вам, что с помощью сквозной проверки мы можем пройти через все трудности, и в этом вся прелесть. И вот оно. Он нашел и исправил все проблемы во время своего сквозного тестирования. И у нас включен горячий перезапуск. Так что Mona Truth просто должна перенести вкладку браузера сюда. Итак, хорошо, у нас есть 318 токенов, потому что он купил их для нас во время тестирования, я полагаю. И так, давайте посмотрим. Я нажму на это, и хорошо. Мы на нашей странице биллинга. У нас есть 318 токенов. Давайте купим. Давайте возьмем 250 здесь. И это просто использование тестовой учетной записи в Chargebee. И поэтому я не ввожу реальную информацию о кредитной карте, но это симулирует полный рабочий процесс покупки. И поэтому у меня настроена просто фальшивая информация о кредитной карте, фальшивый адрес. Я нажму "оплатить". И хорошо, обработка платежа. Ожидание зачисления ваших токенов. И вот оно. Токены добавлены на ваш счет. 568. Черт возьми, это работает идеально. У нас также есть история транзакций. О, черт возьми, это потрясающе. Хорошо, так что я вернусь к чату. И тогда давайте просто протестируем все снова сквозным образом. Итак, я просто скажу, э-э, сколько будет 2 + 2? Просто мне все равно. Какое-то случайное сообщение. 568 до 567 токенов. Мы получили ответ. Очень здорово. Хорошо, чувак. Это работает идеально. Итак, снова, нам пришлось подождать некоторое время, пока сквозное тестирование найдет все проблемы, возникшие в результате сборки команд агентов, но я думаю, что это произошло бы в любом случае, и он смог решить все. Так что теперь я бы рассмотрел это, когда управление будет передано мне, и приложение идеально подходит для довольно нетривиальной реализации с этой полной интеграцией платежей с Chargebee. Так что это фантастика. Хорошо, так что теперь я вне прямой трансляции, просто даю краткое заключение к видео. Я надеюсь, что вам понравился полный процесс разработки brownfield с новой функцией команд агентов Claude Code. Это действительно кажется будущим агентной инженерии. Вы видели там скорость этих параллельных агентов. Я думал, что это сбой, но на самом деле он работал все время, и всего за пять минут все было построено. Это была скорее сквозная проверка, которая заняла время. Но я надеюсь, что это было ценно для вас, чтобы увидеть, как агент может проходить пользовательские пути, как и мы, и проверять все, заменяя большую часть ручной проверки, которую нам приходится делать самим. Так что это планирование на начальном этапе и проверка в конце, которые действительно делают так, что у нас есть стабильные реализации с нашими кодовыми агентами. И поэтому, если вы цените это видео и с нетерпением ждете большего по агентной инженерии, я был бы очень признателен за лайк и подписку.