Transcription
Что такое GitHub Copilot CLI? Зачем его использовать? И как начать им пользоваться? Ну, об этом мы и поговорим в этом видео. Итак, прежде всего, если вы хотите им воспользоваться, вы можете перейти на сайт github.com/features/copilot/cli, URL, который вы видите здесь на экране. И существует множество различных способов его установки: от Homebrew до скрипта Windgit, если вы используете Windows, или npm, просто зависит от того, что вам нравится. Но как только вы его установите, вы сможете использовать его для генерации кода, проверки кода, просмотра PR, отправки PR, и этот список можно продолжать бесконечно. Так что я лично являюсь большим поклонником Cloud Code и Codeex, например. Я активно использовал оба этих инструмента за последние 6 месяцев или около того. И Copilot CLI, хотя он и немного новее, теперь является одним из моих любимых. Теперь, самые проницательные из вас могут сказать: "Да, Дэн, ты работаешь на Microsoft. Конечно, ты будешь так говорить". И если бы вы знали меня, вы бы знали, что нет, это неправда. [смех] Если мне что-то не нравится, я просто не буду об этом говорить. Я не буду много об этом говорить. Я не собираюсь это продвигать, если я действительно не верю в то, что он делает. И поэтому это то, о чем я могу сказать с уверенностью, потому что я использовал его, я не знаю, сколько часов уже, но много, и он работает чрезвычайно хорошо, и он сейчас на одном уровне с моим использованием Cloud Code и моим использованием Codeex, и я использую все три часто. Я использую их для проверки кода, например, потому что у каждого из этих AI-помощников на основе CLI есть разные оболочки и, конечно, разные модели, и мне нравится сравнивать их друг с другом, смотреть, что они мне дают, а затем получать консенсус. Так что, если вы хотите начать с этого, вам придется его установить. Следующий вопрос, конечно, заключается в том, зачем его устанавливать? Зачем мне делать это вместо использования GitHub Copilot, который работает прямо в VS Code или в Visual Studio, или Xcode, или инструментах Jet Brains, или других. И ответ действительно прост: это просто зависит от ваших предпочтений. Я часто нахожусь в терминале, потому что я выполняю различные команды сервера или проверяю журналы или что-то еще. Я много работаю с Docker-контейнерами, например, обычно это делается в терминале. Так что для меня это был просто естественный способ делать то, что я уже делал. И многие AI-инструменты должны интегрироваться с командами терминала в любом случае. И поэтому это просто ощущалось очень естественно, супер быстро, и мне это нравится. Теперь, означает ли это, что мне не нравится графический подход, который вы можете использовать с GitHub Copilot и VS Code? Нет. Я на самом деле до сих пор время от времени использую это, но моим основным инструментом в наши дни определенно является CLI. Это просто мои предпочтения. Теперь, сказав это, мы только что выпустили новый курс по этому поводу. Так что, если вы хотите начать с ним, он будет содержать гораздо больше, чем я успею охватить в этом видео, но вы можете перейти на gh.io/copilot-cli-course. Опять же, я выведу это на экран. И если вы прокрутите вниз, там будет объяснено, о чем все это. Но мне нравится эта строка, которую мы добавили. "Научитесь ускорять свой рабочий процесс разработки с помощью ИИ-помощника командной строки". Теперь вы можете использовать это буквально для очистки, я не знаю, старых файлов на вашем жестком диске, например. Как будто он сделает это, если вы захотите. Вам придется быть очень осторожными, потому что, конечно, вы не хотите удалять то, что не должно было быть удалено. Но он действительно мог бы это сделать. Или он мог бы создавать полноценные приложения. Он мог бы создавать API. Он может проводить проверки кода. И опять же, список можно продолжать бесконечно, чтобы понять, почему я бы это использовал. Теперь, если вы никогда раньше не пользовались ничем подобным, прокрутите вниз, во-первых, будет хорошее сравнение с тем, как это соотносится с GitHub Copilot, или есть Copilot на GitHub, есть GitHub Copilot coding agent на GitHub, и, знаете, есть много вариантов. Мы сосредоточимся прямо здесь на CLI, но если вам интересно, есть ссылки для сравнения. И вы можете увидеть сводку здесь. Теперь, в этом курсе, я бы рекомендовал начать с "быстрого старта", если вы собираетесь пройти это видео со мной, потому что он не только поможет вам установить его, вы войдете в систему, он проведет вас через этот процесс, но вы также выполните свою первую команду Copilot. Я сделаю это через секунду. Но это отличный способ начать. А затем, если вы хотите узнать больше, вы узнаете о контексте и разговорах, рабочих процессах и навыках, MCP и агентах, и там много всего хорошего. Так что проверьте это, если вам интересно. Теперь, что я собираюсь сделать в конце этого, когда мы продвинемся немного дальше, это фактически перейти к этому проекту. И я построил это для презентации, которую я дал некоторое время назад. И это просто инструмент для погоды. Теперь, я признаюсь, с личной точки зрения, да, я, вероятно, не буду создавать много погодных приложений. Их полно. Но это был хороший способ интегрироваться с API и фактически увидеть, что возможно. Так что вы можете проверить это, если вам интересно. И у него есть эти различные функции, и есть некоторая информация о нем. Но причина, по которой я хочу показать вам это, заключается в том, что здесь есть подсказки, которые мы рассмотрим через минуту, которые могут помочь вам начать процесс, если хотите. Теперь, прежде чем мы перейдем к этому, давайте перейдем прямо в терминал. Итак, поскольку я его установил, я собираюсь просто набрать Copilot. Здесь появится классный баннер. Вы можете настроить его так, чтобы он всегда появлялся, если хотите, в настройках. Напоминает мне старые добрые видеоигры 80-х или что-то в этом роде. Мне нравится. Теперь, первое, что я сделаю, это осмотрюсь. Итак, вы заметите, что наверху я вижу версию. Есть несколько советов. Внизу я вижу модель, которую я использую. Я покажу вам, как мы можем ее изменить. У меня здесь загружено много всего. Мы пропустим это и, возможно, поговорим об этом в будущих видео. Но давайте просто скажем, что вы можете сделать для меня? Обычно это делается путем проверки документации, а затем возврата и предоставления сводки. Вероятно, будет сказано, что я могу отлаживать, писать код, работать с PR, такие вещи. Так что да, я могу помочь с большинством задач разработки на основе терминала. Понимать кодовую базу, редактировать файлы, реализовывать функции, отлаживать, все эти вещи. А затем обратите внимание, что он дает мне пару команд. Он может проводить проверки кода. Так что вы можете набрать /review, дать ему свою подсказку о том, что вы хотите, чтобы он проверил. Я хочу проверить эти API на безопасность или что-то еще. Вы можете сделать это. /pr может быть использован для работы с запросами на слияние, которые у вас могут быть. Очень круто. Теперь я использую GPT-4, но одна из приятных особенностей Copilot CLI — это выбор модели. Теперь я большой поклонник, как я уже говорил, некоторых других CLI-инструментов, потому что я часто использую их все одновременно. Но одна из отличительных черт Copilot CLI заключается в том, что если я перейду к модели, здесь есть много разных моделей, которые вы можете выбрать. И поэтому вы можете увидеть все это здесь, что на самом деле довольно круто. Теперь я оставлю его на GPT-4, но, например, если бы мы провели проверку кода, я мог бы сказать что-то вроде этого. Проверить, я не знаю, проверить API, используя, я мог бы сказать GPT-4, Opus 4.6, знаете, какую-то другую. Он фактически получит консенсус по всем трем. Так что вместо одной точки зрения вы могли бы иметь три точки зрения, что очень круто, если вы занимаетесь проверкой кода и тому подобным. Я не скажу, что это замена человеческой проверке, потому что я так не думаю, но это очень полезно. Я проверяю почти после каждой добавленной функции, я мгновенно провожу проверку. После любого изменения, которое я вношу, я провожу проверку. Я постоянно заставляю его оценивать код, который он пишет. Так что это довольно круто. Теперь я уже показал вам /model, /plan. Мы сделаем это по-другому. Но если я перейду к плану, я могу перейти в так называемый режим плана. Теперь я покажу вам другой способ сделать это, еще один способ. Итак, давайте сделаем что-нибудь полезное. Итак, я очищу контекст. Теперь я покажу вам очень быстро. Если я наберу /context, эти команды с косой чертой, посмотрите, что я получу. Итак, я упоминал ранее, что у меня есть MCP и навыки и агенты. У меня сейчас загружено все, что не всегда хорошо, потому что обратите внимание, что это занимает 24% моего общего окна, которое доступно для отправки AI-модели. И если вы новичок в этом, вы можете почти представить себе, что у вас есть окно в дом, и вы вливаете воду из шланга в дом. Как только вы наполните этот дом водой, вода начнет вытекать, и вы ее потеряете, понимаете? Ну, мы этого не хотим. И поэтому у нас здесь еще много места. Осталось 60%. 15% зарезервировано в качестве буфера, потому что как только это окно заполнится, Copilot сожмет его, а затем передаст сводку того, что только что произошло в этом последнем окне, в новое окно. И это происходит автоматически. Но это хороший способ просмотреть контекст. Теперь я очищу его. Скажу очистить контекст. Теперь я нахожусь в этой папке desktop/test, и я собираюсь сказать: "создай приложение NodeJS CLI hello world". Хорошо, вот и все. Это ужасная подсказка. Очень расплывчатая, но эй, это hello world. Посмотрим, что получится. С помощью магии видео я ускорю это для вас. Хорошо. Итак, вы увидите, что он создаст крошечный CLI в новой папке и проверит его работоспособность. Похоже, он добавил todo, потому что у него есть небольшая база данных, где он будет отслеживать. Мне нужно сделать это и это. Этот настолько прост, что всего один todo, похоже. Хорошо. И теперь он спрашивает меня, не возражаете ли вы, если я продолжу, потому что теперь он начнет создавать папку и добавлять файлы и все эти вещи, которые вы, возможно, захотите, особенно когда вы новичок в этом, проверить, что вы согласны. Так что я собираюсь сказать "да", но я скажу "да". Не спрашивайте меня снова о таких вещах. Так что я просто нажму Enter. И теперь он начнет создавать все это для нас. Хорошо, готово. Это было довольно быстро, потому что, знаете, это Hello World. Так что он создал автономное приложение Node.js. Hello world CLI. Показывает, что есть package.json. Есть index. И если я перейду, давайте откроем новую вкладку. И давайте сделаем ls. Вот оно. Так что у нас есть hello world CLI. Давайте перейдем в него. Давайте сделаем ls. И похоже, у нас есть index.js и package.json. Хорошо, вполне нормально. Давайте посмотрим package.json. И вы можете видеть, что он чрезвычайно минималистичен. Но у него есть npm start. Так что он запустит node index.js. Хорошо, хорошее начало. Давайте посмотрим index.js. И, как и следовало ожидать, он чрезвычайно минималистичен. Консольный вывод hello world. Хорошо, очень просто, но это то, что он может сделать для нас. Итак, закроем это. И хорошо. Так что у нас есть первая вещь. И он уже проверил, что она работает. Он фактически проверил это тремя разными способами, что, вероятно, избыточно, но эй, это круто. Теперь я очищу. Итак, я очищу контекст. И снова, если я перейду к /context, обратите внимание, что я использую 0% для моих сообщений прямо сейчас, потому что я только что очистил его. Хорошо, это хорошо. Хорошо. Хорошо. Теперь у меня есть этот GitHub Copilot get started. И это погодный просмотр. И внутри этого проекта у меня есть некоторые подсказки. Теперь я не буду запускать все это. Я просто возьму этот. Я хотел бы создать веб-сайт под названием weatherview, который выглядит очень профессионально. Он получает погоду из этого API openweathermap.com и отображает карточки для следующих 5 дней прогноза погоды. Так что, очень просто. Но давайте поиграем с этим. Теперь, что я собираюсь сделать, даже если это то, что я мог бы просто дать ему подсказку, и он бы справился довольно хорошо, я покажу вам еще один маленький трюк. Вы заметите, что у меня есть этот shift-tab switch mode. Давайте сделаем это. Shift-tab. Ах, режим плана. Круто. Автопилот. Это как просто позволить ему работать, выполнять кучу вещей и просто продолжать, пока он не закончит. И тогда мы вернемся в обычный интерактивный режим, как мы его называем. Так что я перейду в режим плана. Обратите внимание, что написано "опишите план". Хорошо. Так что я вставлю: "Я хотел бы создать веб-сайт". Теперь, что я обычно делаю в конце этого, это говорю: "Есть ли у вас вопросы ко мне?", потому что часто, даже если вы написали более подробную подсказку для планирования, в ней все еще есть некоторая неопределенность. И часто он это улавливает, а затем начинает задавать вам вопросы. Теперь посмотрим, сделает ли он это для этого, потому что это довольно простой запрос. Но теперь мы перейдем в режим планирования. Хорошо. Так что давайте сделаем это. Теперь, пока он это делает, я сделаю кое-что здесь. Я создам еще одну вкладку и сделаю здесь mkdir. Давайте назовем ее weather. И затем мы перейдем в нее. И тогда мы могли бы начать копировать это. Но я покажу вам другой способ сделать это. Так что теперь у нас есть эта пустая папка, и вы заметите, что она проверяет доступные проекты, чтобы увидеть, как сформировать план. Теперь я нажму Escape. Я хотел показать вам это, потому что если мы вернемся, и позвольте мне фактически подняться на уровень выше и сделать ls. Видите, как у меня здесь есть все эти другие вещи? To-dos. И это фактически то, над чем я работаю по-настоящему для работы. Hello world CLI. Это то, что мы только что сделали. Скопированный агент, размещенный автооблак, знаете, все эти разные вещи. Так что я на самом деле не хочу, чтобы он смотрел на эти другие вещи. Он как бы относится к этому так, как будто у вас уже есть подпапки для существующего проекта или что-то в этом роде. На самом деле мы этого не хотим. Так что, если я сделаю /CWD или /CD, обратите внимание, CWD или сменить рабочий каталог. И обратите внимание, что он дает мне список. Ну, я спущусь до weather, и обратите внимание, где мы сейчас. Мы находимся в desktop/test/weather. Теперь, что это сделало, это фактически исключило контекст, который у меня был бы раньше со всеми этими другими вещами, потому что он делал глоббинг и перечислял каталоги, и поскольку он не знал, он думал, что я начал проект, например, там могли быть уже доступны API. Так что я сделаю clear. Мы очистим контекст. Я вставлю свой план обратно, которого у меня, видимо, нет. Давайте возьмем это снова. Вставим это. Есть ли вопросы ко мне? И давайте запустим его снова. Так что я хотел показать вам, что если вы начинаете с чего-то, где уже есть код, на самом деле нет способа узнать, следует ли его использовать. Теперь, мог ли я обновить подсказку, чтобы сказать "не смотри ни на какие другие папки"? Конечно. Но я просто хотел показать вам, что если вы начинаете с нуля, вы, возможно, захотите это сделать. Так что проверяя, что уже есть в проекте, там ничего нет, так что, надеюсь, он не сделает многого. И тогда он должен сделать. Хорошо, вот оно. Я могу смотреть на пустой каталог. Так что мне нужно создать план. Ну, вот почему мы перешли в режим плана. Так что я планирую с чистого листа, а не адаптирую существующее приложение. И именно поэтому я начал с некоторых папок, потому что я хотел показать вам, что он пытается быть полезным. Но в этом случае я говорю: "Нет, я этого не хочу". Теперь посмотрите на это. Он создал документ планирования. Теперь я часто, даже если вы можете получить к ним доступ, скажу ему сохранить вывод плана в папке, и я помещу точку plans, и мне на самом деле нравится их хранить, потому что часто я возвращаюсь и смотрю, как я начал конкретный проект. Хорошо, теперь он спрашивает, какой стек вы хотите использовать, потому что это была пустая папка, ничего нет. Так что вы хотите Next.js, вы хотите React и Vit и Typescript? Обычный HTML, CSS, знаете, JavaScript. Посмотрим, насколько хорошо он справится только с обычным. Давайте оставим его максимально простым. И посмотрим, что получится. Так что я собираюсь с этим согласиться, а затем с помощью магии видео я ускорю это для вас. Хорошо. Итак, для V1, должен ли Weatherview включать поиск города? Хорошо. Это на самом деле хороший вопрос. Или должна быть местоположение по умолчанию? Давайте сделаем поиск города. Это имеет смысл. Теперь имейте в виду, что он еще не начал кодировать. Мы только планируем. Это как сидеть на совещании и начинать проходить, знаете ли, возможно, вы обходите комнату со стейкхолдерами и пытаетесь собрать первоначальные функции для первого спринта или как бы вы это ни делали. Хорошо, он говорит, что план готов. Хотим ли мы принять план и построить на основе разрешений по умолчанию? Хорошо, выйти из режима плана, и я сам выполню подсказки. Принять план и построить на автопилоте. Теперь я собираюсь сделать это, потому что это запустит его и просто будет работать, пока он не закончит. Действительно, действительно круто, на самом деле. Так что давайте выберем это. Теперь я включу все разрешения, но именно здесь, знаете ли, вы хотите быть осторожными. Я нахожусь в своего рода тестовой области, или если вы находитесь в песочнице, то, вероятно, не беспокоитесь о разрешениях. Но если вы находитесь в области, где есть, я не знаю, какие-то конфиденциальные файлы или что-то еще, во-первых, я бы рекомендовал работать где-нибудь в другом месте, в другой области вашего компьютера. Но вот здесь, знаете ли, вы хотите использовать здравый смысл. Теперь я в порядке с тем, где он работает, так что я не очень беспокоюсь об этом. Так что я включу все. Теперь обратите внимание здесь, внизу, он теперь в режиме автопилота. Хорошо, круто. Хорошо, план готов. Обратите внимание, что он сказал, что сохранил его здесь. Я обнаружил, что проект в настоящее время пуст. Так что он сделает все эти вещи. Обычный API OpenWeatherMap, API геокодирования. Это круто. Профессиональный стиль дашборда, все эти хорошие вещи. Так что у меня есть план. Он переходит к реализации, потому что мы на автопилоте. Так что снова я ускорю это для вас. Теперь, несколько вещей, которые вы можете заметить здесь. Он фактически говорит: "Эй, может быть, я буду использовать debounce". Хорошо, это круто. Так что он не вызывает API слишком часто. Я также говорил об этом немного раньше, имея некоторые скелетные карточки, потому что, знаете, пока вы не вызовете API и не получите данные, это будет просто пустая страница. Так что посмотрим, как это получится. Но вы можете видеть, что он много думает, и я только на GPT-4 medium. Если бы я выбрал high, он думает еще больше, но он действительно обдумывает это и задает вопросы, как бы мы задавали. Хорошо. Теперь он пробует слой данных API. Похоже, он проверил. Запускает сервер, чтобы попробовать. И вот здесь обычно мне пришлось бы перейти в окно терминала, чтобы запустить команду. И поскольку мы уже находимся в окне терминала, это просто очень приятно. Я имею в виду, я действительно больше не набираю команды терминала, потому что я могу просто сказать ему: "Эй, сделай это", и он пойдет и выполнит эту команду прямо здесь, что очень приятно. Хорошо, он говорит, что все готово. Теперь, скажем, мы хотим знать, как это запустить? Как я могу это запустить? И давайте посмотрим, что он говорит здесь. Хорошо, он уже запустил сервер. Так что давайте возьмем это сейчас. И момент истины, барабанная дробь, пожалуйста, здесь, ребята. Так что давайте перейдем сюда. И вот оно. Хорошо. Мне не нравятся цветовые решения, честно говоря. Но это легко исправить. Обратите внимание, что он уже вставил Сиэтл здесь. И поэтому мы будем искать. И еще одна вещь, я в США. Мы не сказали ему, хотим ли мы использовать, знаете ли, Цельсий или Фаренгейт. Теперь все мои друзья за пределами США, которые используют Цельсий, вы говорите: "Нет, это правильный путь". И это, вероятно, так и есть. Но обратите внимание, у нас есть 5-дневный прогноз, быстрый поиск города. Так что я живу в районе Финикса, Аризона. Давайте попробуем. О, приятно. Он даже вставил что-то вроде автозаполнения. Давайте попробуем. И да, вот оно. Это на самом деле довольно точно. Я знаю Цельсий достаточно хорошо, чтобы понимать, что происходит. Похоже, у нас будет немного ветра. О, и еще несколько карточек здесь. Теперь в репозитории, если мы вернемся сюда, у меня есть некоторые другие вещи, например: "Давайте добавим тесты Playwright". Мог бы я использовать это для создания скриншотов? Я, вероятно, зайду, потому что мы ничего не говорили о цветах. И я мог бы даже сказать: "Давайте сделаем светлый режим, темный режим", например. Но, знаете, неплохо для начала. Как будто это действительно, действительно хорошая отправная точка. Теперь мы можем просто уточнить цвета и все такое. Но эй, даже пришло в голову "weather intelligence refined". Да, конечно. Вот и все. Это введение в GitHub Copilot, от Hello World до фактического создания чего-либо. Надеюсь, это даст вам хорошее представление. Добавьте любые комментарии, если у вас есть вопросы об этом. Я надеюсь сделать еще несколько видео в ближайшем будущем. Но опять же, если вы хотите углубиться, проверьте этот курс Co-Pilot CLI для начинающих. Но спасибо, что присоединились, и подпишитесь и поставьте лайк, и знаете, все эти вещи, которые люди любят говорить на YouTube, потому что я надеюсь, что сделаю еще что-нибудь для вас. Большое спасибо.