Transcription
Привет всем вам, ребята. Большое спасибо, ребята, за то, что присоединились. Я искренне, искренне ценю всех вас. >> Я ценю вас. >> Хорошо, мы собираемся провести последний сегмент, где мы попытаемся разобраться с Gemini CLI. Хорошо, тогда мы пойдем сюда. >> Время пришло. Хорошо. Итак, мы собираемся сделать так, чтобы я перешел локально в uh studio, и мы скажем калькулятор стоимости времени. Мы скажем, укажите это здесь. Да. И мы скажем, давайте используем Gemini CLI, и мы скажем SH, и давайте сделаем specify check. И он говорит, что Gemini CLI доступен. Так что мы сделаем это. И мы скажем, как мы попали в Gemini CLI в прошлый раз, Gemini загрузил учетные данные, и если бы я сделал specify oh, посмотрите на это. Так что давайте сделаем конституцию. О, давайте сделаем конституцию. И теперь я скопирую конституцию, которую я получил из подсказки, которую я получил от Gemini. У меня это есть. Um, хорошо. Давайте пойдем сюда. И я скопирую эту конституцию. И я вставлю это сюда. И посмотрим, что он нам даст. Убедимся, что у нас все есть. Хорошо. Давайте посмотрим, что произойдет, используя Gemini CLI. Хорошо. Доставка черновика. Построение контента. Um, давайте посмотрим. Первое последнее изменение. Итак, я полагаю, он что-то создал, но я не смог этого увидеть. Uh, давайте посмотрим. Применить изменение последнее изменение. Uh, давайте скажем, давайте пока остановимся на одном. Я полагаю, он сделал это, но это было безумие в VS Code. Иди. Я снова завис? Нет. Хорошо, вот оно. Um, хорошо. Итак, я жду пользователя. Я думал, я сказал или давайте сделаем это снова. Uh, хорошо. Давайте посмотрим. Итак, у нас есть конституция. Мне нравится шаблон имплантата. Теперь обновите конституцию. Хорошо, давайте сделаем это. Итак, что я собираюсь сделать, я собираюсь вернуться в Android Studio. Закрыть. VS Code. Android Studio. И внутри Android Studio я должен увидеть, я должен увидеть Конституцию. Итак, если мы перейдем к specify templates constitution. Uh, давайте закроем это. Итак, у нас здесь есть наша конституция. Хорошо, круто. Да, я полагаю, это началось, но это было так странно в приложении. Uh, и у меня его здесь до сих пор нет. О, теперь он здесь. Это так странно. Ну, нет, может быть, это то. О, я думаю, я знаю, что происходит. Итак, теперь он снова здесь, потому что я не Это так странно. В любом случае, неважно. Давайте перейдем к Хорошо. Итак, далее, um, мы хотим. Давайте вернемся к Spec Kit. Давайте вернемся сюда, и если мы Хорошо. Итак, Итак, сначала мы делаем конституцию. Далее мы собираемся сделать. Итак, далее мы собираемся сделать specify, чтобы создать приложение. Создать приложение, которое может мне помочь. Хорошо. Итак, я скажу, что функция, которую мы хотим реализовать, это интеграция умного таймера с отображением стоимости. Um, так что, если бы мы сделали это, скажем, specify, опишите, что вы хотите построить, используйте план, чтобы предоставить ваш технический стек. Хорошо. Итак, я собираюсь. Итак, вот что я собираюсь сделать. Я собираюсь скопировать это. И я собираюсь попросить Gemini дать мне подсказку для команды specify, которая um, которая создаст спецификацию для этой пользовательской истории. Так что давайте посмотрим, какую команду specify мы можем получить. И делая это таким образом, верно, делая это таким образом в Gemini, это поможет вам сформулировать, какими должны быть ваши подсказки при передаче их в эти, в эти различные приложения. Uh, это идеальный вариант использования для команды specify. Вы хотите перевести свою пользовательскую историю с четкими критериями приемки и технической заметкой в виде спецификации. Вот хорошо структурированная um подсказка для spec kit, которая отражает этот um черновик. Итак, specify, составьте техническую спецификацию для новой функции focus timers. Основная цель — позволить пользователям отслеживать время для действий, видя денежную стоимость в реальном времени. Спецификация должна основываться на следующей пользовательской истории. Как пользователь, я хочу использовать таймеры, которые показывают стоимость в реальном времени um денежной стоимости моего времени во время действий. Ключевые функции для детализации режимов таймера включают um предустановленный Pomodoro и пользовательский таймер, где пользователь может определить любую продолжительность. Итак, Итак, это означает, что вы можете сделать P Pomodoro, или вы можете сделать что-то вроде глубокой работы, где вы устанавливаете, скажем, два прямых часа работы или четыре прямых часа работы um без отвлечений um в реальном времени расчеты в реальном времени отслеживание сессий и сводная история и статистика um, давайте посмотрим, так что, по сути, скопируйте все это сюда, и если я верну это в, давайте посмотрим, если это будет [вздох] Uh, давайте оставим это в, давайте оставим это в Gemini пока, верно, давайте скажем, что мы делаем um specify, и я вставляю эти функции, и я говорю, введите um, так что разрешите выполнение create new feature.sh. Давайте сделаем Так, я полагаю, create new feature.sh происходит из um, да, из specify specify scripts bash create new feature. Хорошо, выглядит хорошо для меня, давайте сделаем это. О, позвольте мне переключить экраны. Ха. Хорошо, круто. Uh, о, черт. Позвольте мне снять это тоже. Uh, давайте посмотрим. Запись в спецификации. Давайте посмотрим. Давайте скажем, разрешить. Um, хорошо. Давайте посмотрим, что это говорит. Давайте посмотрим. У меня есть имя ветки и путь к файлу спецификации. Uh, переключиться на новую ветку 001, составить технический план, используя систему шаблонов, необходимо регистрировать все завершенные сессии таймера в разделе истории. Каждая запись в истории должна регистрировать um, должна включать дату. Хорошо. Пример маркировки неясных требований. Пример маркировки неясных требований. Uh, требуется уточнение. O метод не указан. Электронная почта. Сейчас нет входа в систему. Um, сессии таймера. Итак, спецификация готова. Uh, хорошо для рассмотрения, вы теперь можете перейти к плану comm. Итак, давайте посмотрим на спецификации. Затем он расположен в specs specs. Um, f, хорошо, краткие руководства, сосредоточьтесь на том, что нужно пользователям и почему, избегайте как реализовать. Uh, написано для бизнес-стейкхолдеров, не разработчиков. Spec um раздел требований. Обязательные разделы должны быть заполнены для каждой функции. Uh, необязательные разделы включают только то, что относится к функции. Когда раздел не применяется, удалите его полностью. Не оставляйте как NA для генерации ИИ. При создании спецификации из пользовательского ввода отметьте все неоднозначные. Uh, хорошо, вот оно. Сценарии пользователей и тестирование. Основная пользовательская история. Как пользователь, я хочу использовать таймеры. Uh, хорошо, мы все это поняли. Учитывая, что пользователь установил свою ставку, когда когда они запускают таймер Pomodoro. Uh, требования к крайним случаям. У нас есть все эти требования. Не буду читать все подряд. Круто. Итак, далее, далее мы собираемся перейти к тому, что говорится, что спецификация готова для рассмотрения и планирования. Вы теперь можете перейти к /plan. Итак, давайте сделаем это. Выполнить рабочий процесс планирования реализации с помощью плана. Давайте посмотрим, что произойдет тогда. Реализация спецификации. Хорошо. Итак, um, настройка плана. Хорошо. Итак, по сути, что происходит, это внутри specify, внутри specify есть разные скрипты, которые um, которые он запускает, которые находятся, знаете, что мы можем сделать, может быть, не сегодня, но мы можем сделать, мы можем на самом деле углубиться в то, как, потому что если мы действительно поймем, как работает spec kit. Итак, мы можем пойти и прочитать код, например, когда вы запрашиваете um constitution, что um, что это um, что это выполняется, когда вы идете, и это означает для для Windows, есть команда PowerShell, которую он выполняет, а также, но вы идете и смотрите на, хорошо, что внутри setup plan, что внутри внутри create feature, что внутри constitution, верно um, и таким образом мы можем получить еще лучшее понимание, и имея эти фоновые знания, это сделает наше использование его еще сильнее, верно, но просто глядя на это, это помогает нам. Это очень помогает. Итак, давайте скажем, да. И планирование рабочего процесса выполнения, просмотр путей к файлам. В спецификации есть нерешенные вопросы. Давайте посмотрим, что это. Um, добрались до пути к файлу. Теперь проверяем спецификацию функции для уточнения. Uh, в спецификации есть нерешенные вопросы. Требуется уточнение. Каково допустимое окно потери данных? Сохранять прогресс каждые um, чтобы избежать повторной работы. Пожалуйста, запустите команду clarify, чтобы разрешить эту неоднозначность. Итак, давайте скажем clarify um clarify говорит, определите неуказанные области в текущей функции. Хорошо. Итак, если мы сделаем clarify, и мы скажем, что сохранить прогресс um, давайте скажем, сохранять прогресс каждую минуту, верно, давайте скажем, что мы посмотрим, что произойдет. Давайте посмотрим здесь um, проверить предварительные условия. Хорошо, давайте скажем, да. Но именно поэтому я всегда говорю, что, фактически используя эти функции, используя эти инструменты, это добавит гораздо больше понимания, гораздо больше ясности, потому что теперь у нас есть совершенно новая идея, совершенно новое um, совершенно новое шоу, и что нужно изучить, и как um, как лучше понять эти um, эти um, эти инструменты, знаете. Хорошо. Uh, давайте посмотрим. Основной пользователь. Хорошо. Окей. Пользователь хочет прогресс каждую минуту сохранен. Я обновлю спецификацию um раздел уточнения с вопросами и ответами. Пересмотрю образование, чтобы соответствовать потребностям тега уточнения, и я обновлю контрольный список. Затем я сообщу о завершении. Uh, давайте посмотрим. Давайте скажем, да. [вздох] Uh, давайте посмотрим. Давайте скажем, да, снова. Итак, похоже, что спецификации не были полностью завершены. Uh, объем четко ограничен. Хорошо. Давайте скажем, да. Окей. Итак, поскольку было что-то, что требовало уточнения, нам пришлось сделать clarify. И теперь, когда мы сделали clarify, теперь мы можем перейти и сделать plan. Я полагаю, um, команда не найдена, модель потока закончилась с недействительным блоком или отсутствующей причиной завершения. Uh, давайте посмотрим. Я создам, я я ошибся. Неправильно использовал echo. Я просто выведу текст. Нет подстановки команды. Um, хорошо, давайте попробуем plan снова. Верно. Я не знаю, что это значит. Почему Почему они Что? Пытаюсь пошутить. Хорошо. Итак, теперь мы собираемся сделать setup plan. Давайте скажем, да. Итак, теперь он смотрит на. Итак, теперь он читает файл спецификации, файл конституции, и он читает план реализации. Помню ли я, что видел план, и он говорит, применить это изменение, я создаю сводку плана, которая охватит функцию focus timers, Pomodoro, стоимость в реальном времени, все это, о чем мы говорили, я определю сессию таймера в модели данных и создам quick start md, никаких API-контрактов не требуется, наконец, я опишу tab ask. Хорошо, давайте скажем, да. И давайте посмотрим, что он говорит. Окей, я обновляю структуру проекта, структуру в опции три на опцию три для этого мобильного проекта, удаляя другие опции и пересматривая решение о структуре. Давайте скажем, да, давайте разрешим это. Um, Google поиск, который, я думаю, у нас уже есть локальное хранилище, но um, неважно. Мне нравится тот факт, что он также выполняет весь поиск. Это довольно круто. Хорошо. Um, запись файла, подтверждающая детали реализации, применить это изменение [вздох] [вздох] фаза один, окей, фаза один, дизайн и контракты, я создаю модель данных и quick start, никаких контрактов не требуется, начиная с модели данных, хорошо, давайте сделаем. Давайте запишем этот файл. Фаза ноль и фаза один завершены. Я обновляю план. Фаза два, генерация задач, стратегия генерации. Uh, давайте посмотрим. Разрешить объявление результатов пользователю. Хорошо, давайте посмотрим. Планирование отчетности о результатах. Смотрите, теперь, теперь, когда я поиграл с API specit, ошибкой, делая звук немым um, давайте посмотрим, что здесь происходит. Статистика. Я не знаю, почему он истек. Давайте перейдем к >> обеденному перерыву. Обеденный перерыв. >> Давайте попробуем plan еще раз. Давайте посмотрим, что здесь происходит. Uh, я уже запустил команду plan gener. Окей. Хорошо. Хорошо. Um, теперь могу перейти к задаче. Итак, давайте посмотрим на план. Итак, мы сделали um 001, составили технический план, исследовали модель данных. Quick start. Итак, давайте быстро посмотрим на quick start. Итак, у нас есть наша спецификация. У нас есть наш quick start. Хорошо. Итак, quick start focus timers. Это руководство. Позвольте мне посмотреть. Могу ли я сделать это больше? Могу ли я сделать это больше? [хмыкает] Изменить размер шрифта. И давайте сделаем только это, верно? Итак, Итак, quick start, um, это руководство демонстрирует, как использовать um, focus. О боже. Вы, вы знаете, что, вы знаете, что только что произошло? Он создал нам документацию, прежде чем даже что-либо кодировать, верно? Как фактически использовать это. Прежде чем вы сможете использовать таймеры, вам нужно установить свою почасовую ставку. Перейдите на экран настройки дохода. Введите свою почасовую ставку и сохраните. Запустите таймер Pomodoro. Перейдите в фокусный таймер. Uh, таймер начнет 25-минутную сессию фокусировки. Вы увидите оставшееся время и накапливающуюся стоимость в реальном времени. Запустите таймер. Uh, запустите пользовательский таймер. Перейдите на экран фокусировки. Просмотр сводки сессии. Просмотр истории. Хорошо. Итак, затем мы переходим к исследованию. Uh, использование пакета Hive для локального хранения. Hive — это легкая и быстрая база данных noSQL, написанная на чистом Dart. Uh, это позволяет хранить пользовательские объекты Dart. Рассматривалась альтернатива shared preference. Я думаю, мы использовали shared preferences для чего-то еще. Не подходит для хранения списка. Окей, это имеет смысл. Фоновое выполнение. Хорошо. Uh, все это идеально um, модель данных, модель данных для этого. Окей, круто. И затем план md, поток выполнения um, загрузить спецификацию, загрузить спецификацию функции из ввода, если не найдено. Хорошо. Все эти сводные данные. Хорошо, круто. Итак, документация, исходный код. О, приятно. У нас есть все, что разложено для нас. Uh, давайте посмотрим. Фаза ноль, план и исследование. Фаза один, дизайн и контракты. Фаза два, подход к планированию задач. Фаза три, будущее внедрение. Отлично. Хорошо. Uh, давайте, я запущу последний, и тогда мы перейдем к чтению нашей последней статьи, а затем вернемся к этому. Но мы не будем тратить на это полный сегмент. Мы вернемся к нему по команде task, а затем мы завершим шоу на сегодня. Окей. Итак, uh, позвольте мне сделать task, это сгенерировать действенный план задач в порядке зависимости task.md для времени. Хорошо. Итак, давайте сделаем это, верно, мы сделаем task, а затем мы tasks, а затем мы увидим, что произойдет дальше. Сделайте это. Бум. Призываем код-гремлинов помочь, конечно, определяя генерацию задач. Uh, позвольте мне посмотреть. И это пойдет на проверку предварительных условий. Так что это скрипт, который будет проверять. Мы определенно проведем шоу, посвященное глубокому погружению в то, как работает Speckit, все базовые скрипты, которые обеспечивают эту генерацию. Хорошо. Um, давайте посмотрим. Я сделаю allow always в этом случае, просто чтобы um, чтобы он мог пройти, сделать все, и пока мы читаем эту последнюю статью. Окей. Итак, давайте сделаем это, и мы пойдем на перерыв. Мы пойдем на перерыв task command chat, завершим шоу. Окей. Uh, давайте посмотрим, что здесь произошло. Давайте посмотрим. Итак, мы запустили команду task. Она выполнила кучу задач, кучу записей файлов. И давайте посмотрим shell command. Я сгенерировал task. подстановка команды, сгенерированный task, отчет о завершении, я уже сгенерировал task, я сообщу пользователю, я уже сгенерировал task, вы можете найти. Хорошо, так что давайте быстро посмотрим на task, и если мы перейдем к tasks, и мы откроем этот task focus timers um, добавьте hive для t001, добавьте hive um, hive flutter um, все это в pubspec, а затем инициализируйте hive в main dart. Uh, давайте посмотрим. Итак, как бы мы это запустили? Создайте пользовательский интерфейс сессии таймера. Итак, по сути, это все um, и мне нравится, мне нравится, что write unit test, write unit для timer service, для storage service, для test um, write integration test для этих зависимостей, параллельный пример. Отлично. Итак, если мы вернемся сюда, каким будет следующий шаг для реализации, для реализации этих? Вы теперь можете перейти к реализации задач. Uh, как мы реализуем задачу? Давайте посмотрим. Implement execute the implementation of implementation plan plan by proceeding um by by proceeding, и хорошо, вот что мы собираемся сделать, мы оставим это здесь, и мы pro, позвольте мне посмотреть, если я пойду сюда, сюда, и мы сделаем /imp, хорошо, хорошо, отлично, так что мы оставим это на этом. Если я пойду в specs specify здесь, у нас есть templates tasks, отлично. >> Думал, ты едешь. >> Круто. Хорошо. >> Что второе солнце светит. Это круто, хотя. [музыка] Это круто, хотя. Ты только что научил меня двигаться. Сказал мне, как двигаться. [музыка] Смотри. Ты думаешь, мы [музыка] были едины. Думал, спина была прикрыта. Думал, ты мой бриллиант. Думал, ты [поет] мой брат. Улыбаешься мне в лицо. Да, ты сыграл свою роль. Притворяясь [поет] со мной. Заставил меня отдать тебе свое сердце. Но верность была классической. Чувак, это был [музыка] секрет. Ждал своего момента. Вот [поет] что делают фальшивые люди. Как только появилась возможность, постучалась в дверь. Ты даже не колебался. Ты просто пошел и попросил большего. Ты даже не оглянулся, просто пошел своим путем. Покажи мне, кто ты был, чувак. Мне больше нечего сказать. Я не злюсь, я не горький. Нет соли, которую можно пролить. Ты просто зажег огонь, чувак. Ты просто сделал фокус реальным. Это полный [музыка] пресс. [поет] Я не сдаюсь. Ставлю себя на первое место. Я чувствую себя своим. Без сочувствия, без симпатии. Я на своем пути. [поет] Вы просто непостоянные люди, чувак. Вы меня нервируете. Это полный прессинг. Я полностью сосредоточен. Если ты не в моей команде, тогда ты просто локус. [музыка и пение] Я не мотивирован. Время набирать очки. Да, я заперт и выбиваю дверь. Ты думал, что этот ожог остановит меня, чувак. Ты [поет] ошибался. Ты просто дал мне топливо, и я двигаюсь только быстрее. У меня нет времени на то, что говорит непостоянный человек. Я на миссии. Ты на моем пути. Я отрезаю [поет и музыка] мертвый путь. Мне все равно, кто страдает. Если ты не с видением, то ты под прикрытием. Спишь на работе. Я [поет] широко открыт. Каждое, что ты мне дал, просто сказало мне, что взять. И я беру [поет] все. Я ставлю себя на первое место. Вся эта любовь, чувак, это было чертово проклятие. Теперь проклятие сломано. Теперь я вижу путь. [поет] Ты просто разбудил монстра. Ты можешь сделать их, это полное давление. Я не сдаюсь. Ставлю себя на первое место. Я чувствую [поет] себя своим. Без сочувствия, без симпатии. Я на своем пути. Вы просто непостоянные люди, чувак. Вы меня нервируете. Это полный прессинг. Я полностью сосредоточен. Если ты не в моей команде, тогда ты просто [музыка] локус. Я не мотивирован. Время набирать очки. Да, я заперт [поет] и выбиваю дверь. [музыка] Так что я не смотрю по сторонам, я просто смотрю вперед. Каждое обещание, которое я дал себе, справедливо. Полная концентрация, полный догадка. Мне не нужно ломаться. Мне [поет] неважно, что ты чувствуешь или твои новые ошибки. Ты сделал свой выбор, и теперь я делаю свой. [поет] Моя цель — единственное, что я вижу. Я на линии. Ты просто призрак, чувак. Урок, который [поет] я усвоил. Спасибо, что показали мне, что моя собственная спина — это все, что я имею, поэтому я держу ее [поет] вниз. Я тот, кому я доверяю. Превращаю все предательства в пыль. Смотри, как я строю империю, пока ты смотришь на меня со стороны. Тебе следовало остаться внизу. [поет] Чувак, тебе следовало научиться ездить. Оу, соответствуй. [музыка] [музыка]