📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

OpenSpec & Spec Driven Development with Claude Code

ExamPro27:36

Transcription

Хорошо. Итак, Джефф Грегори Хантли — разработчик. Я знаю его по эпохе Ruby в конце 2000-х, начале 2000-х, э-э, 2010-х годов. Эм, и он вернулся, и он говорит о том, что, возможно, он никогда и не уходил, но я просто не замечал его годами. Но, эм, он говорит о том, как, эм, нужно мыслить иначе с агентами. И я не говорю, что я обязательно с этим согласен. Я просто говорю вам, что это то, что, когда мы используем Ralph, это мышление, лежащее в основе инструментов Ralph. Хорошо. Итак, первые принципы — это фундаментальные истины или предположения, которые нельзя вывести из какого-либо другого, э-э, утверждения. И идея программирования и разработки заключается в том, что у вас есть эти, э-э, фундаментальные первые истины, которым вы следуете. И идея в том, что, эм, с агентами вам нужно мыслить иначе и менять свои первые принципы. И я не буду говорить о том, во что именно мы их меняем, потому что это может быть много работы, но мы получим общее представление здесь. Итак, э-э, Джеффри утверждает в какой-то момент, что Claude sonnet 3.5 может работать в, я знаю, есть более новые sonnets, но идея в том, что если бы он работал в цикле в течение 42 часов, это стоило бы всего 10 долларов. Хорошо, так что буквально вы могли бы заставить его кодить почти 2 дня, и это будет дешево. И поэтому идея здесь в том, что стоимость разработки программного обеспечения ниже стоимости работника фастфуда. Обратите внимание, что я поставил разработка программного обеспечения в скобки. Идея в том, что разработка программного обеспечения — это написание кода. Хорошо? А инженер программного обеспечения — это архитектура программного обеспечения. По сути, написание спецификаций, предоставление ему руководства и тому подобное. Хорошо. Эм, так что идея здесь в том, что вся экосистема разработчиков была спроектирована вокруг людей, и поэтому, если бы мы спроектировали их вокруг агентов, это устранило бы многие проблемы разработки программного обеспечения, или если вы просто поймете, как работают агенты, то вы сможете, э-э, сосредоточиться на том, чтобы быть инженером программного обеспечения, верно? И поэтому идея здесь в том, что если бы мы перешли от того, чтобы быть в цикле, буквально писать код с агентом или работать над ним напрямую, а вместо этого мы были бы в цикле, проектируя сам цикл и позволяя ему работать. По сути, быть инженером программного обеспечения, э-э, программного обеспечения. Хорошо. И вы знаете, есть некоторые вещи, которые нужно учитывать, например, тот факт, что стоимость прямо сейчас может быть низкой, потому что она субсидируется подписками или другими способами, э-э, или они работают очень специфическим образом. Но в любом случае, я думаю, что нам стоит это изучить, и вы можете решить, хотите ли вы придерживаться этого подхода. Э-э, я все еще очень сильно придерживаюсь подхода "в цикле", и я нахожу все это еще очень хлопотным. Так что, э-э, я не знаю, я не на 100% э-э, э-э, э-э, убежден, но, э-э, мы будем, вы знаете, пытаться использовать все и вся, чтобы у нас были открыты все наши технические пути. Хорошо, давайте посмотрим на Ralph. Итак, Ralph — это автономный цикл AI-агента, который повторяет инструменты AI-кодирования до тех пор, пока все элементы PDR не будут, э-э, элементы PRD не будут завершены. Итак, причина, по которой он называется Ralph, заключается в том, что идея в том, что вы думаете о Ralph Wiggum, и он играет в песочнице или на игровой площадке, и у него есть цель, и он идет на игровую площадку. Он должен спуститься с горки, но в итоге он, знаете ли, спотыкается о, э-э, качели. И идея в том, что, э-э, знаете ли, мы здесь, чтобы помочь им в цикле. И поэтому, каждый раз, когда они идут и повторяют цикл снова, мы добавляем очень четкие знаки. Так, говорится, избегайте качелей, а затем они идут, знаете ли, как поднимаются по лестнице. И поэтому, пытаясь помочь ему выбраться из тупика, в котором он застревает. Хорошо. Эм, итак, концепция Ralph — это одно, а затем есть много реализаций, вероятно, Ralph. Э-э, так что просто поймите, что мы смешиваем, мы говорим об очень специфическом инструменте Ralph, который кто-то сделал, а затем также есть концептуальные идеи рабочего процесса Ralph. Итак, каждая итерация имеет свой собственный свежий экземпляр с, э-э, чистой памятью контекста, сохраняемой через историю git, прогресс и PRDJSON. И, э-э, способ, которым мы можем его установить, — это использовать, э-э, этот здесь. На самом деле, этот сделан Райаном Карсоном, э-э, что интересно, потому что он был у меня на буткемпе, э-э, в качестве приглашенного инструктора раньше. Просто так получилось, что это тот, который у него был. Я слышал, что был и один от Anthropic, но я его не видел. Так что, опять же, вероятно, есть несколько реализаций этого, и поэтому у вас может быть немного отличающаяся от моей, но концепция должна быть похожей. Эм, идея в том, что у нас есть некоторые доступные навыки, поэтому мы можем сгенерировать документ с требованиями к продукту, а затем преобразовать его в формат PRD JSON. Так что документ с требованиями к продукту, я полагаю, это файл markdown, а затем мы превращаем его во что-то, э-э, основанное на коде, так что это более исполняемо. Итак, у нас есть навык, или мы можем просто вызвать его таким образом. Э-э, затем идея в том, что мы можем затем выполнить скрипт Ralph, и он будет итерировать, используя claude, э-э, используя инструмент claude в нескольких итерациях. Извините. Эм, но в любом случае, давайте поговорим больше о Ralph в целом. Итак, чтобы получить хорошие результаты с Ralph, вам нужно попросить Ralph сделать только одну вещь и довериться Ralph в определении того, что является самым важным для реализации. Спецификации формируются в ходе беседы с агентом в начале фазы проекта. Вы не просите агента реализовать проект, как в видении проекта, типа "сделай мне приложение для списка дел". Вы ведете долгие беседы о требованиях к проекту. Так что, по сути, представьте, что вы клиент, и вы, по сути, должны, или как технический специалист, вы очень техничны, и вы клиент, и вы пытаетесь предоставить ему как можно больше информации, по сути, написав текстовую спецификацию, но вам не нужно, э-э, иметь ее. Так что, хорошо отформатированную, хотя я бы предположил, что мой подход заключался бы в том, чтобы написать все за один раз, а затем попросить его разбить это и подать в Ralph, чтобы они переинтерпретировали это. Вот как я бы, вероятно, это сделал. Э-э, так что суб-агенты Ralph в значительной степени полагаются на rip grep. Так что это средство рекурсивного поиска каталогов, э-э, для регулярных выражений, э-э, шаблонов, при этом учитывая ваши файлы gitignore. На самом деле, я думаю, что большинство агентов делают это. Вы увидите, что они будут, они будут постоянно делать, как, э-э, регулярные выражения и идти и идти через, э-э, как вы это называете? Э-э, как подкаталоги. Вы увидите это. Вы увидите, что они делают это все время. И поэтому идея в том, что если он застрянет или пойдет по неправильному пути, именно там мы ставим знаки, чтобы помочь направить его. По-видимому, в Ralph может быть много отладки, но, надеюсь, эти, э-э, плагины позаботятся об этом. Так что мы не говорим о мелочах, если мы просто реализуем это сами, как без плагина. Но Ralph обычно создает ветку функции. Затем он выбирает историю с наивысшим приоритетом, где прошло, или, я полагаю, прошло как ложь. Он реализует одну историю, запускает проверку качества, коммитит, если проверки проходят, обновляет PRD JSON. Добавляет полученные знания в текст прогресса. Повторяет до тех пор, пока все истории не пройдут или не будет достигнуто максимальное количество итераций. Ruff работает только при наличии циклов обратной связи. Так что проверка типов улавливает ошибки типов. Тесты проверяют поведение. CI должен оставаться зеленым. Так что, э-э, это еще одна вещь. Так что это хорошо. Это гарантирует, что тесты работают непрерывно. После каждой итерации Ralph обновляет соответствующие файлы MD агентов полученными знаниями. Это ключевой момент, потому что инструменты AI-кодирования автоматически читают эти файлы. Таким образом, будущие итерации выигрывают от обнаруженных шаблонов, подводных камней и соглашений. Вот такая идея. Эм, и поэтому мы немного поиграем с этим, но, очевидно, может потребоваться много работы, чтобы это вовлечь. Так что, возможно, в будущем вы увидите, как я добавлю настоящую правильную вещь Ralph, если это меня заинтересует. Но, эм, да, я просто хочу убедиться, что у нас есть охват этих инструментов. Привет, ребята, это Эндрю. Мы просто быстро упомянем, что такое OpenSpec. Это легкая фреймворк для разработки, управляемой спецификациями, которая может преуспеть как в brownfield, так и в greenfield проектах, аналогично, э-э, э-э, файлу спецификаций. Так что у него есть свои команды или навыки. И поэтому у нас есть четыре навыка здесь. Предложить, исследовать, применить изменение, архивировать изменение. Э-э, так что это очень просто. Исследовать позволяет вам исследовать вещи. А предложить позволяет вам, э-э, делать предложения в спецификациях и задачах. А затем применить изменение пойдет и применит. Архивировать будет переместить, э-э, старые вещи в архив. Очень просто. Э-э, мы могли бы поговорить об этом больше, но я бы, скорее, просто использовал это. Э-э, это нормально. Мне нравится это больше, чем, э-э, другой файл спецификаций или набор спецификаций. Но, знаете ли, это просто еще одна, э-э, спецификация, и мы просто получим некоторый опыт с ней. Хорошо. Привет, ребята, это Эндрю, и в этом видео мы рассмотрим openspec, потому что opensp spec кажется другим, о котором люди говорят, кроме spec kit. Э-э, и поэтому некоторые люди могут предположить, что это для brownfield работы, как вещи, которые, да, здесь говорится, что он создан для brownfield, а не только для Greenfield. Greenfield означает новые проекты. Brownfield означает для существующих, хотя мы, вероятно, сделаем что-то Greenfield. Э-э, и, э-э, я не знаю, он должен быть легким и другим. Но давайте попробуем. Итак, мы собираемся установить его. Так что я просто отменю это и нажмем Enter. И вы можете представить, что я собираюсь создать приложение link tree, потому что почему бы и нет? И поэтому мы вернемся сюда. Мы скажем, создать каталог. Мы скажем, э-э, последний link tree. Это как последний, э-э, я это фильм с последним, как последний самурай. Вы понимаете, что я имею в виду? Так что мы собираемся сделать это. И я просто очищу это и наберу код. Так что мы откроем новый контекст здесь. И что мы собираемся сделать, это настроить этот проект. Так что мы пойдем сюда, в последний link tree. И он на самом деле не открылся там. Так что я открою это снова. Он на самом деле открыл весь наш репозиторий. И мы откроем терминал здесь. И мы собираемся набрать opensp spec. Мне также интересно, могу ли я просто реализовать свой собственный, потому что я не знаю. Я чувствую, что они используют много токенов. Я имею в виду, набор спецификаций использовал довольно много токенов, и я не был очень доволен этим. Мы собираемся нажать, и мы скажем open spec, и мы скажем init. И я предполагаю, что он инициализируется в текущем каталоге. Здесь ничего нет, так что я не уверен, что он сделает. И поэтому настройка настроит навыки агента. Э-э, и у нас есть некоторые другие вещи здесь. Так что создать изменение. Следующий артефакт реализовать. Мы нажмем Enter. И мы выберем cloud code. О, хорошо. Ну, я выбрал инструмент. О, пробел. Вот так. И теперь он добавил его. Мы собираемся обновить это. Посмотрим, есть ли у нас какие-либо навыки здесь. У нас есть. У нас есть openspec с конфигом. Мне нравится файл YAML. Так что это хорошо пока. Контекст проекта. Это показывает, когда создаются артефакты. Возможно, артефакты — это компоненты или вещи, которые нам нужно знать. Итак, здесь, правила, предложение, держите предложение менее 50 слов. Мы перейдем к нашим спецификациям. Здесь ничего нет. Мы перейдем к нашим изменениям. Там ничего нет. Мы перейдем к нашему claude. У нас есть некоторые навыки. Мне нравится, что у него есть навыки. Навыки, очевидно, новее. Э-э, я не знаю, почему они все еще команды, но это нормально. Они кажутся точно такими же. Так что, возможно, это старый способ делать вещи. Я не уверен, почему они там. Но мы перейдем сюда. Этот, возможно, Нет, это просто это. И поэтому мы просто быстро взглянем сюда. Возможно, предложить, потому что это, вероятно, э-э, внести изменение. И поэтому здесь нет ничего действительно захватывающего. Это действительно кажется, что все довольно легковесно. Но давайте перейдем сюда и посмотрим. Итак, теперь скажите своему AI, что вы хотели бы предложить. Если вы хотите расширить рабочий процесс, тогда мы сделаем это. Итак, у нас есть новый, продолжить, FF, проверить, синхронизировать, массово архивировать, онбординг. Ага. Ну, давайте начнем. Давайте получим этот опыт. Предложить, применить, архивировать. Хорошо. Расширить путь, новый, fff, продолжить и так далее, и так далее. Что создает opensp spec. Хорошо. Итак, мы видели, что есть файл спецификаций и изменения в конфиге. Y и что дельта пространства, первое изменение. Хорошо, но мы еще ничего не сделали. Так что давайте запустим это и посмотрим, что мы можем сделать. Итак, я собираюсь набрать claude. Но это просто выглядит как задачи. Итак, здесь у нас openspec. Это интересно. У нас есть openspec, а затем opsx. Почему оба? Новое изменение, все артефакты генерируются за один шаг. Используйте, когда вы хотите создать и сгенерировать артефакты за один шаг. В чем разница? Так как это выглядит как старая версия, верно? Так что мы идем сюда. Предложить новое и создать артефакт изменения. Мы перейдем сюда. Мудрее 2. Это, должно быть, новый способ делать вещи. И поэтому я думаю, что у них просто смесь старого и нового. Это то, что я должен действительно думать. И поэтому здесь мы просто скажем, э-э, создать, э-э, приложение link tree, используя Rails с, э-э, min в качестве MVP. Давайте посмотрим, что он сгенерирует. Я не говорю, что я эксперт в этом. Мы просто пытаемся немного ознакомиться с этим, чтобы мы могли, знаете ли, вернуться к этому позже. И мы собираемся сказать, да, мы скажем, да, не спрашивайте меня снова, у меня не включен авторежим, но я не думаю, что авторежим здесь поможет, потому что авторежим, кажется, довольно глупый половину времени, и поэтому мы ждем, пока он выдаст какие-то изменения, так что у нас уже есть изменения, хорошо, так что мы собираемся сказать, да, создать инструкции, я пока не уверен. Ага. Предложить. Итак, предложение, спецификации, дизайн, задачи, верно? Ага. Мы вернемся сюда. И теперь у нас есть наше предложение. Конечно, мы его примем. Да. Где оно, однако? Вот оно. Создание этого приложения установит MVP. Новое приложение Rails с аутентификацией пользователей. Пользователи могут создавать и управлять личными профилями. Пользователи могут добавлять, редактировать, переупорядочивать, удалять ссылки, публичная страница профиля, доступная базовая панель администратора. Возможности: CRUD для ссылок, публичный профиль, имя пользователя, правильно, использовать rail 7, device, он хочет использовать device, SQL, Tailwind очень любит использовать их по умолчанию. Я имею в виду, что SQLite будет немного проще, потому что я сказал MVP. Нет существующей кодовой базы для модификации. Это правда. Теперь у нас есть дизайн. Итак, новое приложение Rails, созданное с нуля. Каковы его цели? Каковы его нецели? Итак, здесь он не занимается аналитикой. Если бы, э-э, если бы мы не поставили MVP, возможно, он бы это включил, верно? Итак, здесь есть куча вещей, которые он мог бы пытаться сделать. Итак, он говорит о вещах, которые он хочет реализовать. Это вполне логично. Риски и компромиссы, конфликты пользователей при регистрации, план миграции, но гораздо меньше информации в плане того, как именно он будет это реализовывать. Ну, это интересно. Я имею в виду, это файл спецификаций, и поэтому я думаю, что он загружается как таковой. Я думаю, он путается, потому что у нас есть spec kit, и это не то, что мы используем здесь. Так что мне нужно перейти к моим расширениям и отключить это, потому что это просто не имеет отношения, верно? И поэтому мы собираемся, и я просто отключу это. Интересно, есть ли что-нибудь для openspec. Давайте посмотрим здесь. Opensp spec. И мы пойдем сюда. Я имею в виду, это самый популярный. Он просто позволяет вам запускать его напрямую. Так что мы не получим никакой видимости в плане того, что мы делаем. Так что это не принесет нам никакой пользы, но давайте перейдем сюда и посмотрим. Это будет продолжать делать это, когда мы откроем этот файл, что довольно раздражает. Мне придется перезапустить, но похоже, что мы можем сделать это сейчас, потому что, э-э, это сделано. Я просто хочу прочитать, что он делает здесь. Итак, у него есть куча вещей в задачах. Мы посмотрим на это через минуту. Мне нужно отключить это расширение. Так что мы пойдем сюда или, по крайней мере, обновим это. Так что мы идем сюда. И я не думаю, что это действительно имеет значение, какой из них. Мы просто пойдем и, э-э, мне нужно обновить. Мы скажем, обновить. Обновить контекстное окно. Я забыл, как оно называется. О, перезагрузить окно. Это кнопка, которую я ищу. Перезагрузить окно. И это позволит нам фактически просмотреть файлы без этого мусора. Итак, здесь у нас есть наша спецификация. Я хочу посмотреть задачи, предложения, задачи. Сгенерировать новое приложение Rail 7 с Tailwind. Добавить device. Запустить Rails DB. Установить device. Сгенерировать device. Добавить имя пользователя. Добавить проверку имени пользователя. Сгенерировать представления device. Разрешить имя пользователя. Сгенерировать модель ссылки. Да, знаете что, что действительно интересно, опять же, это то, что я делал давно, это то, что у меня был большой файл YAML, где я бы, э-э, имел разные конфигурации, и он выглядит очень похоже на это, но это просто своего рода текстовый markdown. Но здесь мы снова определяем кучу вещей, которые он должен делать, что нормально. Мне нравится, как он разбивает по категориям. Но мы перейдем сюда, и мы позволим ему, э-э, работать. Итак, здесь мы скажем применить. Мы позволим ему пойти на бега. Одна вещь, которую я хочу знать, это то, что это обновится. Ой. Нет, нет, нет, нет, нет, нет, нет, нет. Не этот. Потому что это команда. Мне нужен навык. Так что я скажу применить. Это сбивает с толку, что у них есть оба, верно? У нас есть команды и у нас есть навыки. И я собираюсь здесь, и мы скажем, да, для этого. И мы дадим этому минутку. И посмотрим, как это пойдет. Но идея в том, что, возможно, если он легче и более сфокусирован, то он будет потреблять меньше токенов. Я не уверен. Но даже когда я смотрю на это, я думаю, все эти задачи, я чувствую, что вы могли бы иметь разные агенты, делающие эти вещи параллельно и работающие вместе в команде агентов. И поэтому круто, что это выполняется, но я думаю, я бы предпочел это с командой агентов. И я чувствую, что это была бы следующая эволюция, э-э, такого рода вещей, это было бы запуск правильных заданий для выполнения правильных вещей, чего, я думаю, это не делает прямо сейчас. Так что, хотя спектр и разработка интересны, вы можете использовать их как компонент для агента. Я чувствую, что у каждого агента будет свой контрольный список для работы или, возможно, он будет брать задачи и говорить, типа: "Эй, я работаю над этим. Я работаю над тем". Как настоящая вещь. Так что мы скажем, да, и мы позволим ему идти. Так что он генерирует приложение. Хорошо. Но определенно легче, определенно чище. Другой был просто кучей всего, и есть вопрос, помогло ли это вообще, верно? Но мы продолжим здесь. Я просто нажму продолжить, пока это не закончится. О, и здесь он уже хочет обновиться. Так что, смотрите, он выполнил задачу. Он вычеркнул ее. Мы скажем, да. Я просто позволю ему редактировать. Таким образом, мне придется делать меньше. Хорошо, так что он на бегах. Я имею в виду, до сих пор он был действительно хорош в вычеркивании вещей и прохождении списка. И это очень ясно. Я вижу свои вещи. Давайте посмотрим на наше использование. Поскольку это будет четким показателем того, нравится ли мне это или нет. Но мы перейдем к, и я имею в виду, есть еще один вопрос о качестве кода и о том, действительно ли он соответствует нашим требованиям, что, я думаю, гораздо сложнее ответить, потому что, если вы очень придирчивы, как я, вы будете заботиться гораздо больше. Но да, использование токенов было чрезвычайно, чрезвычайно хорошим. Мы собираемся нажать, да. Но я буквально могу видеть, где мы находимся. Но я также немного сократил объем на этот раз. Так что я сказал, что это MVP, но я не чувствую, что другой был намного сложнее, вы понимаете, что я имею в виду? Но он запустил, э-э, исследования и сделал кучу других вещей, но этот кажется немного лучше структурированным. Все задачи выполнены, готовы к архивированию этого изменения с чем угодно. И поэтому я собираюсь оставить это в покое на данный момент, но я представляю, что вы должны это почистить после этого. Единственное, что еще здесь, это, э-э, нам нужно будет настроить инфраструктуру. Так что я собираюсь просто сказать, открыть, э-э, архив, архивировать завершенное изменение в экспериментальном потоке, когда пользователь хочет окончательно архивировать изменения. Не обязательно хочу делать это, но я собираюсь сделать предложение и обдумать идеи, исследовать проблемы, уточнить требования. Не обязательно то, что я хочу делать прямо сейчас, но мы собираемся предложить. И поэтому, э-э, э-э, сделать приложение Rails, мы хотим использовать Docker Compose для подготовки приложения Rails. Запустить приложение Rails. Убедиться, что оно настраивает базу данных, работает, и приложение доступно и находится в рабочем состоянии. Но, возможно, этот не пишет, как спецификации и тому подобное в больших деталях. Так что, если мы перейдем к кодовой базе здесь, другой был как бы навязыванием текстовых спецификаций и делал здесь гораздо больше. Но я иду сюда, и я ищу наши тесты. Обычно есть что-то вроде, э-э, штуки под названием specs или даже tests. О, у нас есть тесты. Ну, а тесты действительно есть? И поэтому ни один из тестов не реализован. Так что он остается немного более легким. И, честно говоря, когда вы занимаетесь реальной разработкой приложений, у вас обычно нет такого количества тестов. Но, э-э, ну, мы пойдем сюда и как бы пройдем через это. Но, знаете ли, самое главное для меня — это то, что я чувствую, что есть много работы по планированию и попыткам понять, что именно вы хотите построить. И я думаю, что эти инструменты могли бы быть намного лучше в проведении вас через эти шаги. Как если бы вы работали с клиентом или заказчиком, и они задавали бы вам вопросы, это помогло бы сформировать, что именно делает эта вещь. И я чувствую, что было бы лучше иметь, как бы, такой консультант. Но я не думаю, что многие люди, которые создают эти инструменты, построили тонны и тонны приложений для клиентов, и поэтому, как бы, я думаю, что они хорошие разработчики, но я не думаю, что они хороши в, как бы, управлении веб-фирмой как таковой. И поэтому они не думают так, чтобы проектировать эти инструменты, они просто буквально думают о технической реализации. Но, по сути, способ построения плана определяет реализацию. Я не знаю, и это могло бы быть чем-то, что я мог бы построить, если бы мне было не все равно, но посмотрим. Но, да, посмотрим, будет ли это работать. Нам не нужен Docker Compose, потому что мы можем просто реализовать, э-э, один здесь. Он говорит, что новый, специально для Rails 8, что интересно, потому что я думаю, что он сказал, что будет использовать Rails 7. Мне все равно, семь или восемь, но пока это будет реализовано здесь. Да, я только что понял, что, вероятно, есть версия восемь. И поэтому мы просто подождем здесь и посмотрим, что мы получим. Хорошо. Хорошо. Давайте посмотрим сюда. Итак, я собираюсь посмотреть, есть ли у нас новый план или нет. Так что, я думаю, это под openspec и нет specs. Изменения, изменения, docker compose. Вот оно. И у нас есть наше предложение. Я полагаю, мы используем Rails 8. Меня действительно интересует только эта часть. Итак, создайте это с мастер-ключом. Хорошо. Docker compose, сопоставьте порты. Docker compose. Он ничего не говорит о базе данных, но я не думаю, что это будет проблемой, потому что он использует SQLite, и поэтому он, вероятно, создаст ее сразу. И мы просто узнаем. Так что мы собираемся сюда, и мы выполним, э-э, это здесь, что будет реализовать. Вот оно. Надеюсь, он знает, что реализовать. Я думаю, что знает. Как бы, если бы у вас было больше одного, как бы он знал, верно? И мы подождем, пока это закончится. Хорошо. Хорошо. Вы скажете, да. Это не полностью закончено. Там еще восемь из 12 задач. Я надеюсь, мне не придется настраивать что-то, как это говорит, знаете ли, помещать вещи сюда и туда. О, нет. Он поставил вещь для нас там. Это хорошо. Я имею в виду, очевидно, мы должны поместить туда свою собственную, но это нормально, что он это сделал. Мне нравится, что он действительно держит нас в курсе того, над какими задачами мы работаем. Так что это действительно делает этот фреймворк, э-э, намного лучше, чем другие вещи, которые мы рассматриваем прямо сейчас. Хорошо. И мы спустимся сюда, до самого низа. И поэтому он просто предлагает все изменения. Я собираюсь поставить на паузу здесь. Хорошо. После долгого ожидания, похоже, он работает. Давайте посмотрим на наши контейнеры. Давайте посмотрим сюда. Также, как у нас использование кредитов? Оно очень хорошее. Оно все еще довольно низкое. Хорошо. Э-э, так что я ищу контейнер. Он работает. Он говорит, что он на localhost 30, э-э, 3000, что имеет гораздо больше смысла, потому что у нас здесь много всего происходит. Но в любом случае, мы откроем это. Я даже не уверен, что это все. Это не может быть хорошо. Столько всего работает, но я не знаю. Так что мы пойдем на localhost 3000. И у нас есть, ну, у нас есть приложение для списка дел. Это не то, это не то, что мы, это то, что мы построили раньше. Так что говорится H. Хорошо. Так что у нас уже что-то работает на этом. Это приложение для списка дел. Я даже не уверен, как и где, и что, и почему оно работает, но я собираюсь, и Является ли это здесь? Давайте остановим это. Остановим это. Остановит ли это? Ну, по крайней мере, мы знаем, что это занято. Секунду. Я собираюсь остановить порт 3000. Так что команда killport 3000. Я никогда не знаю эту команду. Это команда, которую я должен использовать постоянно. Это вот. Вот оно. Однажды я сделаю для этого вещь. Знаете, на самом деле было бы полезно сделать навык. Я не собираюсь делать это прямо сейчас, но, э-э, давайте вернемся сюда. И поэтому этот порт теперь должен быть, э-э, идеально доступен. И поэтому здесь мы должны просто сделать docker compose up. Он должен просто работать. Э-э, здесь говорится одноразовая настройка. Разве мы не сделали это уже для нас? Мы сделали. Так что это должно быть нормально. И поэтому нам просто нужно будет сделать docker compose up. Так что мы пойдем на эту другую вкладку. Мы скажем docker compose up. И посмотрим, сработает ли это. И вернемся через минуту. Если только это не уже сделано. О, это. Это. И вот оно. Вот оно. Давайте зарегистрируемся. Эндрю Браун. Andrew@exampro.co. Заглавное Тестирование 1 2 3 4 5 6. Заглавное Т Тестирование 1 2 3 4 5 6. Восклицательный знак. Заглавное Т Тестирование 1 2 3 4 5 6. Мы создадим наш аккаунт. Он должен совпадать. Заглавное Т Тестирование 1 2 3 4 5 6. Восклицательный знак. Заглавное Т Тестирование один два три четыре пять шесть восклицательный знак нажать создать аккаунт и мы добавим ссылку, и мы просто скажем мой веб-сайт, э-э, https ww.examppro.com exampro.co. Мы создадим ссылку. У нас есть ссылка. Могу ли я посмотреть свой профиль? У меня есть профиль. Круто. Круто. Э-э, так что, да, я бы сказал, мне нравится. Э-э, он гораздо легче. Э-э, он работал намного быстрее. Единственное, что я просто задаюсь вопросом, будет ли он действительно полезен, если мы используем команду агентов, и, возможно, есть лучший способ оркестровать все это создание и иметь более специализированные вещи. Если мы посмотрим на кодовую базу, э-э, знаете ли, как код в порядке. Э-э, но это просто, когда вы начинаете строить вещи в большем масштабе, и у вас есть очень сильные мнения, вы захотите, чтобы это было очень специфическим образом. И, э-э, мы еще не видели никакого способа добиться этой применимости. Теперь, другой, похоже, имеет больше, но это то, что есть. Но, вот так.