📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

5 Ways I Use Coding & Background Agents Every Day to Boost Productivity

James Montemagno21:25

Transcription

Сегодня я хочу разобрать пять различных способов использования мной кодирующих агентов, фоновых задач или фоновых агентов, или как бы вы их ни называли — вещей, которые выполняют асинхронную работу для вас. Я хочу поделиться своими советами, хитростями и руководствами по настройке, которые позволяют этим асинхронным агентам выполнять свою работу наилучшим образом. Итак, приступим. [Музыка] Хорошо, давайте сначала определим, что я имею в виду, когда говорю «кодирующий агент». Иногда о кодирующих агентах часто говорят или ссылаются на них как на фоновые задачи или фоновые агенты. По сути, это вещи, которые происходят асинхронно. Они могут быть асинхронными на вашей машине, но чаще всего они происходят в облаке. Теперь многие из вас, вероятно, привыкли использовать, например, чат и агентский режим в редакторах кода, таких как VS Code или Visual Studio, или других IDE. Когда я нахожусь в режиме чата или агента и набираю то, что я хочу, чтобы функция была, или исправление ошибки, или отладка, или получение информации в чате, вещи возвращаются потоком, и изменения применяются синхронно внутри моего редактора кода. Это не то. Когда мы говорим о кодирующих агентах, это агенты, которые работают, пишут и выполняют работу для вас где-то еще, и их много одновременно. Например, я использую кодирующий агент GitHub Copilot, и он позволяет мне назначать работу из многих мест, включая VS Code, Visual Studio или другие IDE, и даже github.com, кодирующему агенту, чтобы он делал что-то для меня. Их существует множество. Поэтому я люблю работать с кодирующими агентами, потому что это позволяет мне иметь любую идею в любое время, назначать ее ему и позволять ему действовать. Вы можете делать это на нескольких ветках. Вы можете делать это, э-э, несколько функций одновременно. И это здорово, потому что, когда я работаю и углубляюсь в свой код на своем локальном компьютере, я хочу работать с агентским режимом локально. Но я хочу, чтобы другие вещи происходили одновременно или, возможно, прежде чем я лягу спать, дать ему задачу, и проснуться, и у меня будет что-то там. И это, по сути, для меня разница между кодирующим агентом и такими вещами, как чат и агентский режим. Итак, давайте перейдем к моему первому способу использования этих кодирующих агентов. Хорошо, давайте начнем и поговорим о способе, которым любой может начать использовать кодирующие агенты сегодня, а именно просто назначать задачи конкретному кодирующему агенту. Теперь я буду использовать кодирующий агент GitHub Copilot здесь, в моем приложении Feedback Flow. И если мы перейдем к задачам, мы увидим, что у меня есть множество различных задач здесь, и некоторые из них уже назначены Copilot, и были открыты pull-запросы. Итак, если я посмотрю на недавнюю задачу, которую я только что создал, мы можем увидеть, что у меня есть некоторая информация о ней, используя эти скелетные загрузки. И если я перейду к назначенным, я могу назначить ее себе или Copilot. Теперь она там, потому что я включил это в настройках GitHub Copilot, а в разделе «Кодирующий агент» мы видим, что у меня установлены все репозитории. Итак, что это значит, я могу прийти сюда, назначить ее Copilot, или я могу сделать это напрямую из VS Code. Итак, здесь я могу посмотреть на расширение GitHub. И если я обновлю это здесь, мы должны увидеть новую задачу, которую мы только что создали. И я могу просто назначить ее Copilot. Итак, когда я это делаю, это, по сути, делает то же самое, что я бы сделал, если бы сделал это через github.com, но все интегрировано непосредственно в IDE, что действительно, действительно приятно. Теперь мы видим, что назначен Copilot. Если я нажму на эту шестеренку, я увижу те же назначенные там, что тоже здорово. Итак, если я прокручу вниз, мы увидим, что здесь есть маленькие глаза Copilot, на которые Copilot отреагировал, что он увидел эту задачу, и он фактически создал для меня pull-запрос, на который я могу нажать и загрузить его прямо здесь, в VS Code. Итак, это будет означать, что он хочет объединить изменения в main из этой ветки исправления функций Copilot, которую он создал автоматически для меня, и назначил это мне здесь, и самому Copilot. Итак, что он будет делать сейчас, это он скажет: «Привет, спасибо, что назначил мне задачу». Он начнет работать. И он изложит исходную задачу. Если я прокручу вниз, мы фактически можем просмотреть сессию здесь. И это асинхронная сессия кодирующего агента, которая автоматически началась здесь для меня. Итак, мы можем видеть, что он запускает серверы MCP, проверяет код, устанавливает зависимости и автоматически запускает различные вещи для меня, что действительно приятно. Он начнет реализовывать эти скелетные экраны загрузки, что очень круто. Теперь я могу просмотреть все здесь. Но место, которое я фактически использую почти больше всего, честно говоря, это новые сессии чата здесь. Если у вас их нет, вы можете перейти в настройки и просто набрать «сессии чата». И тогда вы увидите это расположение представления сессий агента и просто измените его с «отключено» на «просмотр». И это даст вам этот маленький значок здесь, который покажет вам все ваши локальные сессии чата, которые находятся здесь из агентского режима. Но затем он также покажет вам все активные сессии кодирующих агентов. Теперь это действительно здорово, потому что вы можете фактически общаться с кодирующим агентом GitHub в реальном времени. Так что вы можете наблюдать за его работой, вы можете остановить ее, вы можете ответить ему, вы можете увидеть, идет ли он по неправильному пути, по сути, или когда он завершен, вы можете попросить его внести изменения для вас. Итак, у меня была еще одна задача, и я фактически назначил ее ему. Итак, давайте посмотрим на эту сессию. И мы видим, что он добавил 350 строк кода и удалил 26. Итак, я собираюсь прокрутить вверх. И это, по сути, та же самая задача. И мы видим, что он проверил код. Он читал разные файлы и сделал для меня кучу вещей. А затем он сказал, что реализовал тяжелые сессии. Он начал отмечать вещи. Начал редактировать файлы. Он использовал Playwright для навигации. И затем, знаете ли, в какой-то момент он начал фактически делать визуализацию, автоматически менять вещи, и теперь мы можем видеть, что я могу нажать на любую из них и фактически получить этот диф кода прямо в VS Code, что действительно, действительно круто. Итак, у нас есть скелет сравнения уровней, который он создал для нас прямо там, у нас есть еще один, а именно панель аналитики администратора, который был создан для нас. Итак, мы видим все это там. Теперь этот вид очень похож на вид, который вы увидите, если перейдете к этому pull-запросу. Вот тот, который был завершен. И если вы прокрутите вниз, это будет то же самое, что мы видели в VS Code. И вы также можете сказать «просмотреть сессию». Это позволит вам пройти и увидеть эту сессию. Она длилась почти 18 минут. И мы увидим все те вещи, которые показывались в VS Code. И вы можете нажать на них. Вы можете получить больше информации о том, что именно он делал по пути, чтобы фактически завершить эту работу для нас. Но мне нравится возможность видеть, что происходит непосредственно в VS Code, видеть все мои рабочие сессии кодирования. Мы видим, что он начинает работать прямо здесь, и у него есть этот контрольный список автоматически для меня. Итак, это первый способ, которым вы можете легко начать использовать кодирующие агенты. Хорошо, давайте перейдем ко второму способу, которым я люблю использовать кодирующие агенты, а именно просто назначать ему работу случайным образом из множества различных мест. Итак, вот мои ленты контента. Итак, это позволяет мне, например, брать вещи с YouTube, Reddit или Hacker News, а затем анализировать их, по сути, используя Feedback Flow. Теперь это круто, но на самом деле, если вы заметите, когда я нажимаю на Hacker News, он должен просто загрузиться автоматически. Итак, я могу вернуться к своему репозиторию и нажать здесь на панель агентов, и это покажет мне мой репозиторий, а затем любую другую ветку, на которой я хочу, чтобы он работал. А затем я могу просто дать ему задачу. Итак, я могу сказать на странице ленты контента, когда пользователь нажимает на Hacker News, загрузить ее автоматически. Просто сделайте это. А затем я могу нажать «Перейти». Поскольку я часто работаю в VS Code, было бы здорово фактически делегировать напрямую кодирующему агенту оттуда. И вы можете полностью это сделать. Итак, если вы находитесь в чате, и мы поговорим об этом немного больше в другой функции, которую я люблю использовать, вы можете просто набрать все, что хотите, а затем нажать эту кнопку «Делегировать кодирующему агенту». Это полезно, когда у нас есть много контекста. Но место, откуда я действительно люблю это делать больше всего и рекомендую, это перейти к сессиям чата, и здесь, под кодирующим агентом GitHub Copilot, просто нажмите «плюс». Это начнет новую сессию чата, которая будет перенаправлена кодирующему агенту. Введите сюда то, что мы хотим отправить, и просто нажмите «Перейти». Здесь здорово то, что это немедленно начнет и запустит сессию кодирующего агента именно для того, что я хочу. И мы видим, что заголовок был обновлен здесь. И мы видим, что он был добавлен сюда для меня. Теперь это запустит кодирующего агента. Он запустит этот pull-запрос для меня. А затем я начну получать уведомления здесь. Итак, пока мы видим, что это работает, нам просто нужно дать ему несколько секунд, чтобы запустить этот фоновый агент. И вот он. Pull-запрос был создан для меня. В нем есть вся эта информация. Теперь я также отмечу, что я нахожусь на main, поэтому он будет использовать main для работы, и он создаст ветку от нее. Но если бы я был на другой ветке, он создал бы ветку от этой ветки. Я расскажу об этом немного больше. Вы всегда можете просто нажать «Показать больше», что затем приведет вас к этому pull-запросу, мы можем увидеть, что он хочет объединить эти изменения. Я могу проверить его. Я могу обновить это. Я могу просмотреть сессию. Это даст мне все непосредственно в VS Code, что абсолютно восхитительно. Хорошо, давайте поговорим о третьем способе использования кодирующего агента, который, по сути, продолжает работу, которую я выполняю в ветке, и даже в рамках чата. Итак, здесь я нахожусь в этой ветке функций, над которой я работал, по сути, реорганизуя мои серверы MCP, и в ней много работы, но я хотел добавить некоторые новые инструменты. Итак, я поднялся сюда в режим запроса изначально. Просто получил информацию о моих серверах MCP, как они построены, как добавить этот новый метод к ним, что мне нужно будет обновить. Итак, снова, он просматривает кучу вещей и дает мне план. Он предлагает мне некоторые изменения кода, а затем я иду и реализую их здесь, что здорово. Итак, если я нажму на это здесь, мы увидим, что да, он рефакторил кучу кода, что довольно потрясающе, и это действительно приятно. Но мне все еще нужно обновить документацию, документацию на веб-сайте, README, кучу других вещей. Итак, здесь я могу просто сказать: да, давайте обновим документацию, а также документацию на веб-сайте, а затем я нажму эту маленькую кнопку «Делегировать кодирующему агенту». Это, конечно, проанализирует историю чата, которую мы видели ранее. И появляется это окно. Вы, возможно, видели его раньше. И что он спрашивает меня, говорит: «Привет, ваш контекст чата будет использован для продолжения работы. Хотите ли вы включить изменения или игнорировать изменения?» Итак, есть два способа, которыми я мог бы это сделать. Я мог бы закоммитить код, а затем, знаете ли, попросить его работать с этой веткой. И вот как это работает. Если я в VS Code и просто говорю «иди поработай над чем-нибудь», если я нахожусь в ветке, он будет работать с этой веткой. Но в данном случае я хочу фактически включить изменения в это. Хорошо. Итак, что здесь поразительно, так это то, что он просто ушел и создал новую ветку, но принес с собой изменения, а затем делегировал эту задачу ему. Так что это на самом деле своего рода удивительно в некотором смысле, что эти как бы ожидающие изменения были отправлены в удаленную ветку, с которой он затем может работать в целом. И теперь этот чат запускается для меня здесь. И мы видим, что там есть реализация документации. И затем я могу видеть всю эту различную информацию в этом pull-запросе, который поступает, и сессию как бы в реальном времени. И теперь он работает. Правильно. Итак, это круто, потому что я нахожусь в ветке ветки, и он перенес мои изменения в эту ветку, над которой я только что работал. Так что я могу продолжить этот поток. Если я не закончил свою работу на день, я могу сказать: «Да, продолжай и закончи это для меня». Хорошо. И теперь, когда мы поговорили о создании задач, назначенных Copilot, создании новых сессий, назначении дел, знаете ли, работе над существующими сессиями и фактическом использовании различных веток. Что насчет фактического взаимодействия с этими кодирующими агентами? Итак, вот довольно большой PR, который я сделал для унификации этой системы комментирования. Это был большой рефакторинг, как вы можете видеть здесь. И первое, что мы заметим, это то, что он дает отличный обзор. А затем у меня есть немедленная настройка для запуска в staging. Итак, мы видим, что staging настраивается здесь. Итак, я могу пойти и протестировать его. И первое, что вы заметите здесь, это то, что я просто тестирую PR или просматриваю PR. И все, что я делаю, это просто добавляю комментарий. Итак, я говорю @copilot, это ошибка, которую я получаю. А затем я также говорю, можешь ли ты также исправить любые предупреждения о нулевых ссылках при запуске API-сервиса, которые возникали. Итак, он приступает к работе, имеет новую сессию, а затем комментирует, что он исправил эти ошибки для меня, как если бы я работал с коллегой здесь. Он ставит на staging. Снова приходит. Вау. И я говорю: «Вау, это работает. Однако эти вещи не работают». Правильно. Итак, вот некоторые вещи, которые нужно сделать. Он возвращается, исправляет все для нас, а затем в этом случае я говорю: «Вау, это потрясающе, но я на самом деле просто хочу внести некоторые изменения в пользовательский интерфейс, о которых я изначально не думал». Итак, я просто работаю с Copilot, чтобы сделать это. И в конце дня он дает нам хороший разбор, и я фактически могу развернуть его. Итак, это тот тип работы, который я делаю с Copilot. Теперь я также скажу, что вы также можете просто скачать эту ветку и начать коммитить код в нее, а затем работать туда и обратно. И мне также очень нравится добавлять эти маленькие PR-мердж вещи, когда эти GitHub-действия запускаются. Это тоже заставляет меня чувствовать себя довольно хорошо. Итак, я действительно люблю видеть, как все это происходит, и это общение туда и обратно с Copilot. Хорошо, еще один способ, которым я работаю с кодирующими агентами, — это фактически обзоры кода. Итак, внутри VS Code, Visual Studio или других IDE вы можете фактически проводить обзоры кода прямо там. Я на самом деле предпочитаю просто заходить на GitHub и проводить асинхронные обзоры кода. И все, что мне нужно сделать сейчас, это просто перейти к моим рецензентам и назначить его Copilot. Теперь, когда я это делаю, по сути, произойдет то, что Copilot запустит для меня полную сессию обзора. Что позволит мне просто итерировать с ним туда и обратно. Итак, он пойдет, он сделает обзор кода этого и затем даст мне рекомендации на основе изменений в этом pull-запросе. И снова, вы можете сделать это фактически до того, как закоммитите код в VS Code, или в данном случае после того, как pull-запрос был создан. И это просто отличный способ получить прямую обратную связь и рекомендации относительно того, что ваш код был закоммичен в этом pull-запросе. Итак, давайте посмотрим, что он нам даст. Хорошо, это было на самом деле очень быстро. Итак, мы получили обзор pull-запроса. Он дает нам хорошую информацию о том, о чем этот pull-запрос, что здорово. А затем он также просмотрел 16 из 30 измененных файлов, сгенерировал два комментария. Итак, мы фактически можем увидеть все, что он нам дал, знаете ли, показать сводку по каждому файлу всего, что он просмотрел. Затем мы можем увидеть здесь, что фактически, знаете ли, здесь он рекомендует, например, использовать console.WriteLine для логирования в производственной библиотеке не рекомендуется. Рассмотрите возможность использования зависимости ILogger для правильного логирования. Если я прокручу вниз, то же самое здесь. Итак, он не нашел слишком много проблем в этом, но да, я на самом деле, вероятно, не заметил бы этого вообще и, вероятно, хотел бы использовать, например, консольный логгер здесь или логгер VI, например, что действительно, действительно приятно. Теперь, на данном этапе, я могу просто назначить это Copilot и пусть он сделает свое дело. Но даже с этой маленькой вещью, и снова, это довольно маленький pull-запрос, он способен определить некоторые немедленные действия, которые я могу предпринять и фактически решить. Хорошо, я хочу поговорить еще об одном кодирующем агенте, который на самом деле с нами уже давно, а именно о том, чтобы убедиться, что наши зависимости безопасны и обновлены, и это Dependabot. Он с нами как бы вечно, и, знаете ли, вы должны включить его в своих репозиториях. Если вы перейдете в свой репозиторий и зайдете в настройки, прокрутите вниз до «Дополнительная безопасность» и здесь есть куча вещей, которые вы можете включить, такие как граф зависимостей, вы можете включить оповещения о зависимостях для обновлений безопасности Dependabot, группировать обновления безопасности, а также вы можете разрешить Dependabot здесь автоматически создавать pull-запросы, чтобы поддерживать эти зависимости в актуальном состоянии, когда доступны новые версии, и вы можете определять пользовательские правила, например, здесь для правил Dependabot, а также как часто вы хотите, чтобы вещи запускались. Итак, здесь вы также можете открыть свой Dependabot, и здесь я указываю .NET SDK, каталог и расписание, и когда вы это делаете, вы переходите в свою сеть и видите граф зависимостей, и вы видите все зависимости в графе и экосистеме здесь, вы можете посмотреть на зависимые, которые поступают, и у меня нет ни одного в этом случае, а затем фактически Dependabot здесь, и он фактически смотрит на указанный мной .NET SDK и смотрит на недавние обновления заданий и понимает, что происходит здесь, и обновляет различные номера версий. номера тоже, что круто. Как это выглядит в реальности, видя, что я только что включил это, если я перейду к репозиторию .NET Aspire и просто найду Dependabot, мы можем увидеть, что на прошлой неделе он добавил обновление для npm и Yarn Group в трех каталогах и обновлениях. Если я нажму на это здесь, мы можем увидеть, что да, он изменил кучу файлов, которые были здесь, в файлах package-lock, обычных пакетах, и это просто потрясающе, что он делает это автоматически для вас. То же самое верно и здесь. Если вы вернетесь к закрытым, вы можете увидеть, что это все различные pull-запросы, которые Dependabot открывал в этом репозитории в рамках этого. Итак, когда я думаю об этой расширенной безопасности и думаю о том, как Dependabot может просто работать асинхронно, это еще один отличный агент, который просто ждет, чтобы вы его использовали. Ладно, немного бонуса. Давайте поговорим о том, как я управляю всеми этими агентами, как я получаю представление о них, а также поговорим о советах и ​​хитростях по настройке среды, которую вы хотите, и соблюдению лучших практик в вашем репозитории. Один, я много использую GitHub Copilot. Итак, я могу перейти на github.com/copilot. Здесь есть агенты, и это фактически позволит мне делегировать задачи любому из моих репозиториев в любое время. Так что мне даже не нужно заходить в каждый отдельный репозиторий. Я могу просто, знаете ли, выбрать его из выпадающего списка здесь и выбрать ветку, на которой я хочу, чтобы он работал. И затем я могу видеть все мои открытые и закрытые вещи и вещи, которые работают, знаете ли, в настоящее время, что очень приятно. Теперь, когда эти агенты запущены или, надеюсь, до того, как они будут запущены, вы можете помочь им создать лучшую среду для них, предоставив им немного контекста. Если я зайду в свою папку GitHub, у нас есть здесь такие вещи, как режимы чата и подсказки, а затем у меня есть этот dependy, но у меня также есть рабочие процессы. Вы думаете о рабочих процессах как о сборке и публикации ваших приложений CI/CD, но вы также можете помочь Copilot настроить среду, которая вам нужна, когда он работает с кодирующим агентом. Итак, есть copilot-setup-steps.yaml. Это пользовательские шаги, которые вы можете использовать для настройки среды, по сути. И вы видели это, это было первое, что он делал, проверял код. Он устанавливал .NET и устанавливал зависимости. Итак, здесь, например, я просто даю ему workflow_dispatch. Я запускаю на Ubuntu latest. Я читаю содержимое здесь. Предоставляю разрешение, проверяю код, получаю действия, устанавливаю .NET 9, устанавливаю зависимости и устанавливаю Aspire CLI, потому что это то, что я использую здесь. Если вы занимаетесь работой с MAUI, у меня также есть один, настроенный в моем приложении Blazer Scorekeeper. У меня фактически есть рабочий процесс специально для шагов настройки Copilot, или я фактически настраиваю и устанавливаю конкретный workload MAUI здесь, что круто. Так что вы можете посмотреть и этот репозиторий. Итак, вы можете определить, какие вещи вы используете для своей среды, что действительно здорово. Теперь, чтобы он следовал лучшим практикам, это, по сути, то же самое, что и работа с агентским режимом в VS Code или Visual Studio, а именно инструкции Copilot. Инструкции Copilot — это основа, корень, если хотите, для лучших практик, как структурировано ваше приложение. Итак, убедитесь, что у вас есть отличное понимание того, как оно работает, архитектура, стек, интеграции, лучшие практики CSS, как вы хотите, чтобы ваше приложение было построено, и практики, которым вы хотите, чтобы оно следовало. И, конечно же, есть не только инструкции Copilot. Он также работает с agents.md. Если вы используете несколько кодирующих агентов, вы также можете использовать файл agents.md для указания некоторой информации и использования ее вместе. Итак, вы можете использовать agents.md или, если вы просто используете кодирующий агент GitHub Copilot и агентский режим, вы можете использовать инструкции Copilot, и он найдет общий или специфичный для каждого языка программирования, как вы хотите его указать. Но это чрезвычайно важно для того, чтобы кодирующий агент и агентский режим в VS Code, VS и других IDE следовали лучшим практикам, так же, как это делал бы ваш товарищ по команде или вы сами. Ну вот и все. Это всего лишь несколько способов, которыми я использую кодирующий агент GitHub Copilot каждый день для выполнения работы за меня. Честно говоря, с момента его выпуска я использовал его безостановочно. И поскольку интеграции в VS и VS Code становились все лучше и лучше, я действительно использовал это как центр для выполнения множества работ одновременно локально на моем компьютере и асинхронно с этими кодирующими агентами. Ну, как вы используете кодирующие агенты? Итак, какие из них вы используете? Нашли ли вы разные советы и хитрости? Дайте мне знать в комментариях ниже. Я хотел бы знать, что вы используете. Если это похоже на то, как я это использую, или я хотел бы получить некоторую информацию о том, как вы используете эти кодирующие агенты. Если вы здесь впервые, меня зовут Джеймс. Я постоянно публикую видео о разработке на .NET, агентской разработке и многом другом. Так что, если вам понравилось это видео, поставьте лайк, подпишитесь и нажмите на колокольчик уведомлений, чтобы получать уведомления каждый раз, когда я выпускаю видео. На этом все. До следующего раза, спасибо за просмотр. [Музыка]