📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Going Full Ralph, CLI, & GitHub Copilot SDK?!?! | Merge Conflict ep. 499

Merge Conflict Podcast48:42

Transcription

Добро пожаловать обратно всем на Merge Conflict, ваше еженедельное подкаст-шоу разработчиков, посвященное всему, что связано с разработкой программного обеспечения. Сегодня мы погрузимся глубоко, высоко и низко в мир кодирующих агентов. Фрэнк, о чем мы сегодня говорим? Что происходит? >> Я кодирующий агент? Я высоко или низко? Я не знаю, кто я. Я думаю, что ты определенно кодирующий агент, потому что в последнее время ты производишь много кода. Кажется, не проходит и недели, чтобы Джеймс не отправлял сообщения о каком-нибудь новом приложении, которое он написал, или о какой-нибудь новой библиотеке, или о чем-то сумасшедшем. И я говорю: "Джеймс, ты это написал?" Он отвечает: "Вроде того". В этот раз я был в аэропорту. Думаю, он собирался на Мауи. Так что у него было немного времени. Поэтому он сидел в аэропорту и писал код. Просто отдыхал. Просто парил в небесах. Нет, я думаю, что всегда нужно кодировать. Кодирующие агенты, твоя машина, CLIs, редакторы, облачные агенты, они все ждут тебя, Фрэнк. Они просто ждут, пока ты приступишь к работе. >> Ты видел мое новогоднее обещание? >> Нет. Какое было твое новогоднее обещание? >> Мое новогоднее обещание — использовать каждый из моих кредитов co-pilot каждый месяц. [смех] >> И знаешь что? Я уже отстаю. Этот месяц был странным, потому что мы выходим из праздников. Так что у меня есть несколько кодирующих агентов, которые нужно израсходовать. Э-э, так что готовьтесь увидеть, как Krueger Systems запустит 10 новых приложений в ближайшие пару недель, но, к сожалению, наши отношения имеют свои преимущества. Джеймс, я не уверен, что ты в курсе, но ты смог подкинуть мне несколько дополнительных э-э, кредитов co-pilot. Так что у меня на самом деле много кредитов, которые нужно израсходовать. >> Э-э, у тебя их много, так что я могу, у тебя их много. Э-э, я смотрю за кулисы. Мое первое приложение, которое я собираюсь написать, будет таймером обратного отсчета co-pilot, который просто будет говорить мне, использовал ли я уже все свои кредиты. Это будет просто приложение, которое будет сидеть в строке меню, и оно будет говорить: "Нет, друг. Твой индикатор, твой индикатор слишком низкий. Тебе нужно начать использовать эти кредиты co-pilot". >> Ну, у меня есть, меня кто-то спрашивал в одном из моих видео, э-э, там есть маленький индикатор co-pilot, потому что у меня установлен posh в моем CLI >> и он покажет тебе, он покажет тебе внутри. Однако, знаешь, это в твоем CLI, но на самом деле тебе нужен счетчик, большой огромный таймер обратного отсчета. Например, ты не можешь от него избавиться, знаешь, пока не используешь все свои кредиты >> и он говорит мне, нахожусь ли я на графике, знаешь, отстаю ли я? Не использую ли я все свои кредиты? Потому что, честно говоря, если ты за это платишь, то лучше получить то, за что ты платишь. >> Да. Я наполовину шучу, но и наполовину говорю правду. Типа, эй, мы даем этим мегакорпорациям деньги. Стоит [смех] потратить на них немного процессорного или графического времени. >> Оно там сидит. Оно ждет тебя, Фрэнк, чтобы ты дал ему работу. Я имею в виду, вот одно открытие, которое я сделал недавно, это то, что у меня есть приложение GitHub на моем телефоне, и ты можешь зайти в любой репозиторий, запустить задачу с агентом и просто дать ему работу. Теперь оно просто создаст pull request, как если бы ты назначил что-то copil. И я, вероятно, упоминал это раньше, но каждый раз, когда я ночью, когда я где-то, у меня появляется идея, я просто открываю его, назначаю ему, бум, готово. Я также тестирую myswitchl.com, где Фрэнк еще не обновил свои приложения играми Switch, но я прошел долгий путь. Новые темы, куча всего, но у меня есть люди, которые дают мне обратную связь через DM в Twitter. И каждый раз, когда они дают мне что-то, что я делаю? Просто захожу и запускаю, и бум, бум, бум, бум. Правильно. Так что оно просто ждет тебя, готово к работе, Фрэнк. Я просто говорю. Но я думаю, что открытие мобильного приложения — это хорошо, потому что иногда ты будешь использовать свое собственное приложение на телефоне. Ты говоришь: "Ах, это, вероятно, даже не приложение, над которым ты работал какое-то время, но у тебя есть идея. Дай ему работу. Дай ему что-нибудь сделать, Фрэнк. Оно ждет. Оно готово, Фрэнк". >> Я хотел бы реализовать код для тебя сейчас. >> Просто позволь мне сделать это. Почему ты не позволяешь мне сделать это, Фрэнк? >> Я скажу тебе, у меня есть две проблемы. Почему? Во-первых, мне не нравится приложение GitHub, потому что независимо от того, что ты меняешь в настройках, оно все равно перенаправляет каждый GitHub-ссылку. Нет, оно все равно всегда >> Они исправили это. >> Я нажал эту опцию. Оно все равно постоянно перенаправляет ссылки. Постоянно. Я нажимал настройку. Я пробовал все. >> Э-э, а потом оно становится еще и приложением-аутентификатором, что хуже всего. Э-э, так что у меня все еще проблемы с приложением GitHub. И моя вторая проблема, мы отложим ее. Мы отложим ее. Им действительно нужно прекратить перенаправление ссылок. Э-э, я беспокоюсь о конфликтах слияния, Джеймс. Как ты, я имею в виду, динь, я полагаю. [смех] Тебя не беспокоит, что если у тебя открыто 20 задач, и ты говоришь co-pilot начать работать над ними, возникнут конфликты слияния. Их будет много. Э-э, мне интересно, как ты с ними справляешься, или ты просто говоришь ему разрешить конфликт слияния. [смех] >> Ты понял. Вот и все. Да, есть несколько способов, которыми я это делаю. Итак, один, [вздох] э-э, знаешь, когда я запускаю кучу кодирующих агентов, у меня есть представление о том, какой код они будут затрагивать. Так что прагматично в моем уме я думаю: "Хорошо, я просто создам задачу или сделаю что-нибудь?" Однако, совсем недавно я просто давал ему работу. И тогда я буду просматривать PR. И есть один из двух способов, которыми я это делаю, Фрэнк. Один, я буду сливать сливать и затем просто осмотрюсь и скажу: "Хорошо, что еще не имеет конфликтов слияния?" И пойду туда. Но скажем, у меня есть, знаешь, пять вещей, сливаю одну, все имеет конфликты слияния, верно? Так что, бум. >> Так что есть два способа сделать это, и это зависит от того, насколько активным я хочу быть. Итак, вариант первый: перейти к кодирующему агенту и сказать copilot: "Эй, я только что добавил кучу новых коммитов в домен. Можешь ли ты поднять и разрешить любые конфликты слияния и дать мне полный отчет?" И тогда он просто пойдет и сделает это. Э-э, теперь, конечно, нужно подождать. Ему нужно запустить среду. Нужно сделать что-то. Но, возможно, ты просто говоришь: "Знаешь что, эти пять PR готовы". Другое, что я делаю, это тот же самый запрос, но внутри VS Code, знаешь, или где бы ты ни был с Copilot CLI. Я скачиваю его и говорю: "Эй, иди. Я на этой ветке. У меня куча всего на мейн. Подними, разреши конфликты". Бинго, банго. И это приятно, потому что ты можешь фактически просмотреть диффы и все такое. И на самом деле в VS Code есть кнопка "Разрешить конфликты слияния с помощью ИИ", но я на самом деле просто говорю модели сделать это. Я говорю: "Эй, я делаю это. Иди работать и иди". И тогда она просто делает это. >> Э-э, и >> еще не живу своей мечтой. Ладно. >> Да, я имею в виду, это лучший способ. Так что это лучший способ сделать это, знаешь, потратить эти кредиты, верно? Знаешь, внутри этого. Но по сути, в моем сознании, в моем сознании, у меня обычно нет 20 PR, ожидающих меня. В лучшем случае у меня был репозиторий, может быть, четыре или пять. И поэтому я чувствую, что мои конфликты слияния не так уж велики. Я стараюсь всегда что-то делать, не обязательно много всего. Иногда делаю, но обычно нет. Как обычно, это одна или две вещи, которые относительно разделены. И тогда одна приятная вещь в том, что я начинаю входить в этот ритм, давая ему как бы небольшие порции. Так что раньше я делал так: кто-то говорил: "Вот пять вещей", и я брал все пять вещей и просто запихивал их в задачу. Я говорил: "Сделай это >> YOLO". >> А потом я разбиваю это на пять отдельных частей. Так что легче видеть, как происходит слияние. И это на самом деле хороший подход, я думаю, просто потому, что так я, вероятно, обычно делал бы это в реальной жизни: я бы >> исправил одну вещь, сделал бы что-то, сделал бы следующую вещь. Так что это делает это немного лучше и помогает в этом. Да. >> Грустно, что ты перешел от дизайнера приложений к техническому руководителю. >> Э-э, потому что дизайнер приложений, ты просто говорил, что хочешь. Технический руководитель — это человек, который на самом деле должен выяснить, как разбить это на под-PR и распределить их, и в каком порядке их нужно исправить, и все такое. Да. >> Я думаю, мы все еще немного далеки от панацеи, которую я хочу. Я хочу, чтобы, знаешь, если у меня есть PR, и GitHub action терпит неудачу, Copilot автоматически не исправляет это. Типа, я должен сказать @Copilot, у тебя тут есть сбои, приятель. Типа, это раздражает. Это глупо. Типа, он не действует, как действовал бы человек. Человек, когда делает PR и видит сбои, идет и исправляет их. Так что я думаю, я просто оплакиваю то, что мы так близки к великолепию, но мы все еще не там. И ты начинаешь видеть промахи вместо огромных преимуществ, но ты начинаешь замечать промахи больше, чем преимущества. >> Да. Я думаю, мы находимся в какой-то средней фазе. Я имею в виду, сколько фаз существует, но, скажем так, я думаю, мы за пределами обычной фазы. И мы с тобой говорили об этом прямо перед подкастом, и мы будем говорить о многом сегодня, но ты говорил о Ральфе и технике Ральфа Виггама, о которой все говорят в интернете, и я посмотрел несколько видео, и мы с тобой переписывались и спорили о том, как, в некотором смысле, эта парадигма программирования с агентами немного изменилась, верно? И мы были в этой фазе, когда у нас были, например, завершения кода, затем редактирование, а затем агент мог начать делать что-то. Хорошо, затем он мог делать вызовы инструментов, так что он мог изменять ваш код. О, хорошо, теперь он может делать MCP, так что он может фактически вызывать внешние вещи, как я делаю это сейчас с э-э э-э приложением библиотеки Switch, и это так круто, потому что у меня установлен Superbase MCP, а Superbase — это бэкенд как услуга. Я люблю хороший бэкенд как услуга. Ты знаешь меня. >> И крутая часть этого, если люди не знают, я просто чувствую, что как мобильный разработчик каждый день новый бэкенд как услуга — это наш лучший друг, и это нам очень помогает. Так что, и мы только что сделали целый эпизод. >> И все они исчезают каждые 5 лет. >> Да, кроме iCloud, возможно, останется навсегда. Cloudkit, я не знаю. >> Посмотрим, пока не выйдет Cloud 2. Да. >> Но Superbase был крут, потому что я смог запрашивать и э-э, заставлять его проверять базы данных, выполнять для меня миграции, выполнять скрипты, создавать новые таблицы, э-э, делать разные разрешения — все автоматически. И я подумал, что это так круто. И я могу просто попросить ИИ: "Иди, проверь это". Он знает, как написать скрипт и вернуть его мне. Немного страшно, но, конечно, ты нажимаешь кнопку "ОК". И тогда, знаешь, мы эволюционировали во многих отношениях, где у нас есть пользовательские инструкции, у нас есть эти пользовательские агенты, которые мы можем как бы изменять системные запросы. Э-э, у нас есть эти навыки, чтобы мы могли учиться, что как бы раскрывает все детали, как человек. Мы учимся новому и новым возможностям по мере роста. Э-э, и у нас есть новые инструменты, верно? Мы можем использовать co-pilot внутри VS, VS Code и других мест на github.com с кодирующим агентом и, конечно, теперь в CLI с C-pilot CLI. Так что в любом случае, как ты хочешь работать, верно? Это как эта растущая экосистема всего. Но интересно, как эти агенты и как мы разбиваем задачи, и как они разбивают задачи, тоже действительно изменились. И я думаю, мы находимся на этом пороге с несколькими классными вещами, о которых мы поговорим ближе к концу с SDK, который выходит. >> Но ты как бы говорил о том, где мы находимся сегодня, где все говорят о Ральфе, но я возвращался. Я говорю: разве это не просто старый добрый список дел? Список задач, разве это не просто режим планирования? Так что, если вы думаете об истории, и когда я говорю об истории, я говорю о последних шести месяцах, Фрэнк [смех], что безумно, но >> подожди шесть месяцев, что до времен [смех] >> до времен, да, что 2025 год, я возвращаюсь в темные века. >> Я не помню, да, были ли тогда компьютеры? >> Я видел предстоящую конференцию Techama, которую я очень люблю. Думаю, это бельгийская, нет, это нидерландская. Она как бы средневековая, и я подумал, что это довольно смешно, потому что это как будто мы возвращаемся в прошлое, о чем мы будем говорить? >> В любом случае, э-э, так вот, я думаю, что интересно, как развивались инструменты, чтобы привести нас к точке, где они смогли бы разбивать вещи, планировать их, выбирать, как их выполнять и делать вещи, но это всегда было решение. Но теперь с пользовательскими агентами и пользовательскими скриптами у нас больше контроля. Так что я собираюсь разбить это, а потом дам тебе говорить, потому что я много говорил, но я пытаюсь как бы раскрепостить свой разум, как мы говорили о Ральфе: у тебя есть агент, ты говоришь ему что-то сделать, он просто делает. Это как бы черная коробка. Это как бум. Но потом у тебя есть список задач, и список задач такой: "Эй, вот что я думал, верно? И вот шаги, которые он собирается разбить". И ты можешь сказать: "О, это кажется неправильным". И тогда ты можешь как бы исправить себя. И есть этот режим планирования, который такой: "Эй, давай сделаем это вместе, бро. Давай просто сделаем шаг назад. Давай спланируем. Давай разобьем. Задавай мне вопросы, собери все вместе, а потом он пойдет и реализует этот список". Но сверх того, этого было недостаточно, Фрэнк, потому что мы бы нигде не были в этом мире без полных спецификаций и спецификаций. Появился Speckit, и это было еще больше и более проработано, где ты разбиваешь проблему и конституцию и большие функции, и ты прорабатываешь все эти вещи в этой вещи, а потом ты говоришь: "Реализуй это", но тогда эта часть реализации всегда была как бы одинаковой до тех пор, пока этот импульс Ральфа не начал меняться, думая о том, как мы можем настроить агентов таким образом. Я не говорю, что это было невозможно, но я говорю, что для большинства пользовательских опытов, я думаю, эволюция того, что я только что сказал, существует. И не все используют Speckit. Я не так много использую Speckit, потому что я, знаешь, создаю более мелкие вещи, и у меня нет времени на спецификации. Я просто хочу писать код, понимаешь? Я просто хочу его писать. Но я даже больше не пишу задачи. Я просто назначаю работу и потом возвращаюсь позже. Так что я даже много планирую. Я думаю, планирование — это мой как бы ярлык. >> В любом случае, я думал об этой эволюции немного. Мы модели развиваются, инструменты, вещи, которые могут делать инструменты, и агенты, и LLM, как, знаешь, огромное изобилие знаний, на которых он был обучен, растет, но потом в конце концов ему все равно приходится выполнять задачу или разбивать задачи, и вот где, я думаю, возможно, эта штука с Ральфом набрала обороты, исходя из моего разговора с тобой, что ты контролируешь, потому что ты тот, кто пишет, как работает цикл. [хрюкает] Так что вот где сейчас мои мысли, Фрэнк. >> Это были безумные шесть месяцев, чувак. [смех] >> Да. Я думаю, я полностью согласен с тобой. Я не уверен, что ты сказал что-то противоречивое. Я думаю, все, что у нас происходит, это то, что по мере улучшения инструментов наши ожидания растут, и поэтому инструменты должны улучшаться, чтобы соответствовать нашим ожиданиям, а затем наши ожидания растут еще больше. И мы будем продолжать этот цикл до тех пор, пока, я не знаю, тепловая смерть Вселенной или что-то в этом роде. Так идет технология. >> Э-э, я просто ненавижу слово "агент", потому что я думаю, что этот термин все еще слишком аморфен на данный момент, потому что я не думаю, что мы решили, что такое агент, потому что мы продолжаем добавлять к ним способности. Знаешь, сначала агент мог вызывать инструменты. Затем стало ясно, что инструменты могут быть внешними с MCP. Теперь агенты могут вызывать других агентов. Хорошо, вот что такое агент. Э-э, так что я чувствую, что всякий раз, когда мы говорим слово "агент", мы останавливаем разговор, потому что мы еще не определили, чем они будут. Ты хорошо сказал в начале. Завершение кода — это то, с чего мы начали. Затем редактирование было следующим, а затем окно чата. Я имею в виду, мы можем даже вернуться к версии ноль, где я использовал GPT3 и даже не имел чата, просто говоря ему: "Сгенерируй мне код", и мы продолжаем повышать уровень абстракции. То, к чему я стремлюсь, это все еще к этой интеллектуальной части. Как мы всегда говорим вместе, я хочу немного проактивности. Когда он видит ошибку сборки, он должен проактивно исправить ее. И, возможно, это не в системном запросе сегодня. Возможно, нет триггера, который заставляет его выполнять. Так что я думаю, э-э, эта штука с Ральфом, и, возможно, мы должны начать ее определять, но для меня это просто больше людей, работающих над тем, чтобы сделать этих агентов более проактивными и делать больше вещей в фоновом режиме, потому что я думаю, что главное преимущество, которое люди сейчас говорят, это то, что ты даешь ему большой список дел, ложишься спать, а утром видишь, где он оказался. И я думаю, что эта идея того, что он делает больше, не заставляя меня постоянно быть техническим руководителем, — это то, куда все мы стремимся в этой технологии. >> Да. Нет, я согласен с тобой. Я думаю, что есть следующая фаза, которая на самом деле является своего рода автономными агентами, работающими рядом с нами в нашем репозитории >> и делающими больше вещей. Э-э >> Да. >> Знаешь, вероятно, сначала с нашим разрешением, но, возможно, с большей свободой. Так, например, есть, и я думаю, мне нравится твой пример, кстати, это сбой сборки, сбой развертывания. >> Угу. >> Иди выясни, почему это произошло, верно? Как, например, агент S sur, который является агентом выпуска, по сути, инженером выпуска. >> И эта штука подключается к, о, я заметил, что веб-сайт замедляется, и у нас возникают все эти ошибки 500. Типа, иди посмотри, что он делает. Иди создай задачу, назначь ее copilot, и приступай к работе. Это довольно автономно, Azure SR agent, что довольно круто. Однако мне нравится идея, что, эй, этот PR терпит неудачу, верно? Типа, сборка провалилась. Я не знаю, э-э, это развертывание провалилось. Это не сработало, как должно быть. Нет ничего, что могло бы помешать ему запустить другой агент, чтобы создать другой PR, который исправит это. И я видел это на днях, что я очень строг, когда пишу TypeScript. >> Который заключается в том, что я всегда убеждаюсь, что линтер проходит, чтобы иметь возможность развернуть. Я просто чувствую, что это лучшая практика. Я ничего не знаю о TypeScript, но я думаю, что ты должен линтить. Это там не просто так, верно? Это как игнорировать предупреждения, верно? Ты и я говорили об игнорировании предупреждений, но это как бы линтинг. Это как, эй, у тебя есть эти предупреждения. Я всегда запускаю линтер, а затем сборку и развертывание, верно? И если линтер терпит неудачу, то бинго-банго. Теперь, я должен сказать, что иногда код, сгенерированный ИИ, не проходит линтер. И даже несмотря на то, что я говорю в пользовательских инструкциях: "Убедись, что линтишь, убедись, что делаешь это", иногда он не всегда это делает, потому что он просто делает свое дело. Но, как ты сказал, сборка провалится, потому что либо я отправлю туда код, либо что-то еще, но он должен немедленно обнаружить это, открыть PR, бинго, банго, исправить мои проблемы с линтером, и он должен быть в гонке. Как это >> беспроигрышный вариант в целом. И тогда есть целый другой процесс, который такой [хрюкает] даже придумывание идей для приложения, верно? Типа, о, я заметил, что ты реализовал эту функцию. Может быть, ты мог бы сделать эти другие функции, верно? И тогда, возможно, он просто сделает работу за тебя, верно? Это как бы нет ничего, что могло бы навредить ему, пытаясь что-то сделать, кроме сжигания сладких сладких токенов и GPU. Но помимо этого, мне нравится эта идея, которая заключается в том, что, о, я только что добавил, например, темы NES и Famicom >> в приложение. Но не было бы здорово добавить всю линейку тем Nintendo к нему? И я сделаю это как выбор, потому что их так много, и все остальное. Это просто >> делает свое дело. О, это хорошая идея. Мне тоже придется придумывать идеи, которые я люблю придумывать, но я уже придумал большинство идей. Так что, как ты сказал, это как бы добавление сверху. >> Да. Как почему это не так, когда я просыпаюсь утром, и это как, эй, три человека оставили отзывы о твоем приложении, и они говорят, что эта часть сломана, и они очень хотели бы эту функцию. Я создал для тебя задачу, и, кстати, есть ветка с реализованной функцией. Может быть, ты должен ее просмотреть. Вот как я хочу просыпаться утром. Не с, о, теперь я, я имею в виду, очевидно, я должен прочитать все отзывы пользователей. Я должен делать свою работу. Я не говорю, что меня заменят. Платите мне. Мне нужны деньги. >> Но, знаешь, если это будет инженер-программист, все продолжают говорить, что эти ИИ заменяют инженеров-программистов. Прямо сейчас они этого не делают. Они заменяют легкую часть кодирования, которая является кодированием. [смех] Они не делают сложную часть, которая заключается в анализе отзывов пользователей и планировании приложения и выполнении этих вещей, и именно поэтому я безумно заинтересован в постоянном повышении планки, поднимаясь на шаг выше. Так что круто, агенты теперь могут вызывать инструменты, хорошо, но давайте поднимемся на шаг выше. Почему он не предлагает мне инструменты? Потому что ты всегда рассказываешь мне об этих крутых MCP-серверах, о которых я никогда не слышал. Я никогда не слышал об этой штуке S sur. У тебя есть сумасшедшие, вроде Xcode? Почему нет ИИ, который бы говорил: "Эй, Фрэнк, кстати, в твоем agents MD, мы, вероятно, должны поместить туда эту штуку с инструментом Xcode, потому что Джеймс это делает. Мне просто нужен ИИ, который постоянно наблюдает за тобой и говорит: "Эй, ты видел, что сделал Джеймс здесь?" >> Знаешь, почему у нас есть токены, если мы не будем жутко использовать свои токены? [смех] >> Нет, это хороший, это обоснованная точка, верно? Типа, почему, я имею в виду, и ты можешь даже расширить это на мою машину, верно? Которая такая: "Эй, о, я заметил, что ты открыл OBS. Давай просто изменим твое разрешение и сделаем все это". Почему я нажимаю кнопки и меняю разрешения вручную? Сделай это за меня. Ты видел, что я открыл OBS. Я явно собираюсь записать видео. Я больше ничего не делаю. Но ты узнал, что я, Джеймс, изменил разрешение. Я перешел в темный режим. Я сделал эти вещи. Сделай это за меня. Нет, но мне нравится эта идея, потому что я почти хочу открыть VSVS Code. Я хочу, чтобы это был центр управления >> всем, что происходит, верно? Я хочу видеть всю деятельность, все, что происходит. И ты прав, как бы, он должен рекомендовать все эти вещи. Например, Фрэнк, ты такой умный. Представь, что ты просто открываешь его, и он говорит: "Эй, я заметил, что SQLite-net стал еще лучше. Мне даже не нужно его открывать. Он уже должен быть таким: Фрэнк выпустил новую версию SQLite-net с улучшением безопасности. Эй, я сделал PR, pull request для тебя. Я обновил его и сделал все необходимые миграции". Это на самом деле то, чем это должно быть. Это было бы действительно круто в целом. Теперь, в дополнение к этому, мне нравится идея того, что ты говоришь, что, эй, я вижу, что ты кодируешь, и даже лучше, что я вижу, что ты продолжаешь использовать пробелы вместо табуляции. Давай добавим это в твой f, знаешь, добавим это в твой файл для тебя. Понимаешь, что я имею в виду? ETA, ты используешь m_ или что-то в этом роде. Типа, ты можешь обогащать как бы все время. Отличный пример, я знаю, возможно, воспоминания уже там, я не уверен, но другой пример — это как инструкции, пользовательские инструкции и агенты MD. Если я продолжаю делать что-то 20 раз, помести это в инструкцию. Типа, если я всегда говорю: "Сборка, линт, сборка, линт, сборка, линт", типа, просто помести это в инструкцию. Так что, типа, ты просто делаешь это, и это должно происходить автоматически. >> Да. Так что, э-э, давайте на самом деле поговорим о Ральфе в частности, и не потому, что я думаю, что он супер особенный. Честно говоря, я думаю, что это просто естественная эволюция, но потому, что э-э, ну, во-первых, он действительно делает то, что ты только что сказал. Одна из его директив — если ты заметишь общий шаблон, который должен повторяться все время, пожалуйста, помести его в файл agents MD. >> Но я действительно хочу поговорить о том, чтобы просто поднять планку немного. И я чувствую, что Ральф — это просто один из способов, которым мы поднимаем планку того, что могут делать эти агенты. Так что такое Ральф, если кратко? Ральф — это э-э, я даю ему высокоуровневое описание. Он разобьет мое высокоуровневое описание на кучу подзадач и сделает это определенным образом. Он действительно задаст мне несколько вопросов в начале для уточнения. Я бы хотел, чтобы больше из них делали это тоже. Типа, я ненавижу, когда я создаю задачу, назначаю ее copilot, и он просто начинает работать, и я такой: "Серьезно, чувак, у тебя не было вопросов?" Типа, почему он не спрашивает меня, не допрашивает меня немного? Типа, я знаю, что я и так не пишу хорошие задачи. Так что я действительно люблю эту функцию Ральфа. Он сначала задаст тебе несколько уточняющих вопросов, и это обязательно. Это в его системном запросе. А затем из этого он разобьет некоторые э-э, он создаст структурированные задачи, где вместо простого файла markdown с требованиями к продукту или функциональной спецификацией, как я люблю ее называть. >> Это фактически формат JSON, где это как контрольный список: сделано это или нет? Вот что пользователь должен иметь возможность делать. Вот как мы можем определить тесты принятия, что бы ты ни называл. Может быть, это реальные тесты. Может быть, это модульные те тесты. Вот как мы можем определить, была ли эта функция реализована правильно. Вот куча стандартов, которым нужно соответствовать, приоритет. И, как я сказал, старая добрая галочка, сделано это или нет. И э-э Ральф затем, как все говорят, это просто большой цикл. И по одному. Ему будет дан этот э-э список [прочищает горло] задач для выполнения. Он выберет одну из этих задач для выполнения и продолжит ее реализацию, пока не достигнет тестов принятия и не будет удовлетворен тем, что она выполнена. Затем он обновит твой файл agents MD всем, что он нашел в частности. Он отметит галочку в своей собственной маленькой базе данных и через историю git, чтобы знать, сделано это или нет. И тогда он остановится. Он выбросит все, что сделал. Мне нравится говорить, что многие из этих высокоуровневых инструментов — это на самом деле управление контекстом. Так что это его управление контекстом. Он выбросит все это и начнет новую сессию, где он загрузит этот файл, выберет следующую подходящую задачу для реализации и сделает это. Так что во многих отношениях Ральф не особенный, но Ральф особенный, потому что он кодифицирует во многих отношениях, как и Speckit, процесс, которому нужно следовать, чтобы выполнить задачу создания программного обеспечения для пользователей. [смех] Это все, что мы все делаем на высоком уровне. Мы создаем некоторое программное обеспечение для некоторых пользователей, чтобы они могли его использовать, и мы разбиваем эту высокоуровневую задачу на более мелкие задачи, более мелкие задачи, более мелкие задачи. Ральф — это способ достичь конечной цели создания пользовательского программного обеспечения. Есть миллиард других способов, и будет еще миллиард других способов. Э-э, но я думаю, людям нравится Ральф. Мы должны посмотреть, почему людям нравится Ральф сейчас, потому что это процесс, который продолжает работать, даже если тебя нет, потому что он создал свой список заранее. Это хороший процесс, потому что он выбрасывает контекст. Мы все сталкиваемся с проблемой, когда наш код слишком большой, а наши задачи слишком большие, когда у нас заканчивается контекст. Мы все знаем, что большие облачные компании лгут о том, сколько контекста эти вещи могут на самом деле обрабатывать. Э-э, и, да, я думаю, он получает много признания прямо сейчас по уважительным причинам. Это новый процесс, но если мы сделаем шаг назад через 6 месяцев или год, у нас будет еще один процесс под названием Bart или что-то в этом роде, который будет использовать немного другой подход, и так далее. Но все это будет в целях разбиения задачи и проактивной попытки помочь построить твое приложение для тебя. Это имеет большой смысл, потому что я чувствую, что именно это и сделал Speckit, но очень, очень, очень структурированным образом, верно? Вся идея заключалась в том, что каковы руководящие принципы, каковы принципы? Хорошо, какова функция? Как мы собираемся ее разбить? Разбить на тесты? Сделать что-то? И тогда у него был пункт "реализовать", который как бы проходил через этот цикл и разбивал вещи, отмечал их и шел дальше. И там есть требования к тестированию, это и то, очень высоко, очень, очень структурировано. Я бы сказал, что там, где этот делает некоторые из этих вещей, но как бы по-своему. >> Это делает некоторые из этих вещей, но в этом цикле снова и снова, где, я думаю, со Speckit ты управлял каждой частью этого снова и снова, где эта штука просто как бы как бы более автономна, к твоей точке зрения ранее, она автономно проходит и пытается решить вещи, вместо того, чтобы говорить: "Хорошо, ты закончил задачу один, переходи к задаче два. О, ты закончил эту функцию, переходи к следующей функции". И я видел это также, где это не просто одна задача. Ты как бы описываешь ее как одну задачу, которую ты можешь выполнить одним выстрелом, но у тебя может быть бэклог из ста элементов. >> Да. >> Верно. [хрюкает] И они все могут быть разными, и тогда ты можешь сказать: "Иди", и ты, и в твоем случае ты контролируешь, какова логика, чтобы определить, что самое важное, что самое релевантное, что ты бы как бы сделал, а затем он бы начал разбивать эту задачу и переходить к следующей проблеме, например. Верно. Где прямо сейчас, как ты говорил раньше, ты назначаешь это copilot, ты действуешь как copilot, ты делаешь эту вещь, это как бы >> следующий подход, который, знаешь, может работать. >> Я не знаю, подходит ли это для всего, но по крайней мере для некоторых вещей. >> Нет, это определенно не для всего, потому что, например, он уже не делает некоторые вещи, которые я хотел, чтобы он делал, знаешь, что он не делает? >> Это метод. Это не конец. Это далеко не конец. Это, особенно, действительно поднято в методологии пользовательских историй. Знаешь, вся эта >> разработка, управляемая поведением, помнишь весь этот мир >> пользователь хочет сделать это, так что это выходит из этого мира, и у него есть все те же проблемы, которые возникали в этом мире, и он подойдет некоторым людям, а другим — нет. Что мне нравится, так это то, что мы поднимаем планку, и крутая вещь, которую я нахожу [прочищает горло], потому что я всегда мета. >> Забавная вещь для меня в том, что все написано просто как файлы markdown и навыки и agent MD и, по сути, системный запрос. Так что это означает, что я могу выйти туда, если бы я был более амбициозным, и создать процесс Фрэнка, где, знаешь, он будет делать вещи немного по-другому, так, как я думаю, вещи должны быть сделаны. Но круто то, что ты можешь немного поднять планку, создав этот файл markdown, который описывает процесс. Это мой процесс разработки программного обеспечения. Теперь приятно взять отлаженное программное обеспечение другого человека, особенно если они говорят: "Это хорошо работает и совместимо с этой моделью, и совместимо с этой библиотекой, и это готовое решение, и ты можешь просто скачать его и просто использовать и начать работать над ним". Но, знаешь, так же, как Copilot. Так же, как Geminy и все остальные кодексы и все эти вещи. Все они делают то же самое. Но вот что мне нравится: это просто несколько файлов markdown, которые я могу изменить, чтобы они соответствовали моим потребностям. >> Да, я думаю, ты как бы говорил о том, как вещи странно меняются. Так что мы строим с более высокоуровневыми строительными блоками, в то время как фактические модели теперь фактически выталкиваются обратно на более низкий уровень. Типа, они просто те, кто выполняет, что они всегда делали, но теперь мы построили над ними слои, и мы строим над ними слои, и я думаю, интересная часть этого одновременно, как на этой неделе буквально, заключается в том, что вышел совершенно новый GitHub Copilot SDK, о котором мы говорили заранее, и все это строится поверх этого, что твой Ральф — это куча файлов markdown и куча вещей и куча всего остального, но я, возможно, просто хочу сказать: "Эй, Ральф, иди, пиши". Типа, эй, дай мне, как я делаю copilot go, но, типа, эй, используй copilot в механизме Ральфа, верно? >> И создай пользовательское мини-приложение, как я делаю. Или Фрэнк, иди, пиши. >> Так что, типа, ты можешь делать эти разные вещи. И SDK интересен, потому что он добавил уровень абстракции, против которого мы можем программировать, чтобы напрямую вызывать GitHub Copilot CLI для выполнения работы и иметь доступ к этим моделям, верно? В целом, ты можешь сказать: "Ну, Джеймс, разве это не просто, знаешь, вызов Open AI или Microsoft Foundry или другого бэкенда?" И ответ такой: да, но также и нет, потому что GitHub Copilot CLI также может делать все, о чем мы только что говорили. Он может иметь навыки. Он может иметь MCP. Он может делать вызовы инструментов. Он может просто >> делать модельные вещи, верно? Он также может создавать файлы. Я могу делать все это, где, если я сделаю это, мне придется потом вернуть это в мое приложение, а затем заставить это работать. >> Да, это на самом деле, э-э, когда ты впервые отправил мне это, ты отправил мне: "Эй, Фрэнк, есть эта крутая штука. Тебе понравится. GitHub CLI SDK", и я такой: "Что?" [смех] Я даже не ответил на твое сообщение, потому что я все еще был слишком сбит с толку. Я не был сбит с толку тем, что ты имел в виду, очевидно, хорошо, будет способ, которым я смогу говорить с Copilot CLI из API. Но что у меня в голове было: зачем, зачем мне это делать? Потому что, как ты сказал, я могу просто вызвать э-э, я э-э [прочищает горло] написал библиотеки, чтобы просто вызывать модели и делать все это. Но преимущество, и мне потребовалось некоторое время, чтобы это понять. Преимущество не в прямом общении с ИИ или э-э Точно. Это общение с ИИ, который имеет доступ к инструментам и моему исходному коду. >> Да. И его способность. Он может читать мой исходный код и писать мой исходный код, не заставляя меня писать все это. Так что это супер круто. Э-э, GitHub или кто-то открыл исходный код расширения C-pilot, которое технически является исходным кодом того, как читать и писать исходный код. Боже, это так мета. Это так сложно описать эти вещи. [смех] Расширение Copilot было открытым исходным кодом, так что технически я мог бы создавать инструменты на его основе. Но, знаешь что? Этот код ужасен. Это все сервисы и JavaScript, и я не знаю, как им пользоваться. Я бы не хотел писать приложение вокруг него. Но хорошо то, что есть эта штука под названием GitHub CLI, которую я едва ли трогал. И теперь на ее основе есть SDK. Но на самом деле это моя способность как программиста вызывать некоторые функции, которые могут манипулировать моим кодом. Вот что такое GitHub CLI SDK для меня. И это заставило меня задуматься: "О, круто. Хорошо, так ты просто поднял уровень абстракции здесь". Как я сказал, мы начали с LLM, а затем получили завершение кода, а затем мы получили чаты внутри наших редакторов кода. И теперь мы можем просто получить доступ к этим чатам в редакторах кода из SDK. Теперь мы на шаг выше. Что я могу с этим сделать, будучи на шаг выше? Вот почему я снова заинтересовался Ральфом на этой неделе. Опять же, не потому, что я особенно заинтересован в Ральфе, а потому, что я заинтересован в том, чтобы подняться выше. И это такие вещи, как этот GitHub CLI SDK, которые это позволяют. Они позволяют нам подняться на шаг выше. >> Да. Да, я думаю, это 100% правда. действительно позволяет тебе определять и настраивать системные запросы, инструменты, навыки, уровень выполнения именно так, как ты хочешь, и создавать свои собственные приложения и встраивать агента в свое приложение. Но в то же время это не замена фреймворка агентов. Это просто библиотека, которая позволяет тебе делать эти вызовы выполнения и настройки, которые делегируются CLI для выполнения некоторой работы, а затем возвращают тебе результаты. >> Да, я даже не уверен, что стал бы встраивать это в приложение, потому что это потребовало бы, чтобы пользователи установили GitHub CLI и аутентифицировались. И это нишево. Уже очень сложно заставить программистов сделать что-либо из этого. Программисты, мы уже >> Я собирался сказать, что разделились, но это не разделение. Мы фрагментировались на столько лагерей. Я в лагере Claude. Я в лагере Geminy. [смех] Я в лагере Codex. Существует так много лагерей. Так сложно управлять всеми этими кошками. Но для моей команды, которая состоит из меня, привет. [смех] Или если бы я был в корпорации, наша команда могла бы создавать более высокоуровневые инструменты, которые соответствуют нашему процессу через что-то вроде этого. >> Да. >> Мне нравится, если бы я писал медицинское приложение, я бы не стал требовать от врачей установки GitHub CLI. [смех] >> Нет, нет, нет. Я думаю, есть как бы этот уровень, типа, строю ли я и распространяю ли я эти высокоуровневые производственные, действительно пользовательские вещи, которые нуждаются, как бы, в бэкенде foundry или open AI и вызовах в базы данных и выполнении этого, а затем есть этот поворот, который такой: "Эй, у меня есть, у меня есть куча маленьких инструментов, маленьких автоматизаций, куча маленьких скриптов, куча маленьких э-э вещей, которые помогают мне каждый день, и могу ли я влить в это немного ИИ, используя GitHub Copilot, который здесь". Так, например, >> Фрэнк Крюгер, как ты помнишь, я написал целое приложение для подкастов Mac, чтобы помочь мне управлять метаданными, делать все остальное, и я пытался использовать Apple Intelligence, которая требует, чтобы я был на Mac и включил Apple Intelligence, что, кстати, ничем не отличается от установки GitHub Copilot CLI и входа в систему. Теперь, э-э, я тогда, потому что наш подкаст идет так долго, просто должен отправить его чертову OpenAI в любом случае, потому что контекст ушел туда. Так что Фрэнк, я переписал это приложение, используя GitHub Copilot SDK, и менее чем за 10 минут я создал новый генератор метаданных подкастов как в командной строке, используя Spectre console, так и в приложении Blazer server, потому что CLI работает в серверном режиме. Он может общаться сервер к серверу с твоей локальной машиной. Так что я создал целое красивое приложение командной строки и CLI, которое я направил на файл, и оно делает всю тяжелую работу автоматически для меня, используя CLI и просто используя мой обычный токен. Так что мне не нужно иметь OpenAI или делать все это остальное. Это просто на моей машине, верно? Так что я думаю, что это как бы не связанный с кодированием аспект, который я использую. Я думаю, есть тонны связанных с кодированием аспектов, но я также думаю об идеях, типа потенциала. Есть тысячи мелких вещей, которые я мог бы, знаешь, иметь tool calling, чтобы делать это автоматически для меня, делать анализ, делать планирование, писать эти маленькие циклы, которые некоторые из них связаны с кодированием, некоторые нет, верно? Которые он мог бы затем захватить и автоматизировать для меня. Так, например, ты мог бы написать кучу маленьких, знаешь, скриптов и командных строк, которые автоматизируются с помощью Copilot SDK, а затем, да, ты просто запускаешь его по cron job, и он запускается, и каждое утро ты говоришь: "Вот твой отчет", и он сделал все эти вещи для тебя, верно? Он подключил MCP, посмотрел на твою базу данных, анализирует это. Представь, что ты говоришь: "Иди, посмотри на все мои вещи, или если какие-либо сборки терпят неудачу, запусти и делегируй задачу в облако, потому что он мог бы сделать это автоматически для тебя". Так что это способ для нас почти написать эти э-э наши собственные автоматизации для нас, но я думаю, есть тонны не связанных с кодированием сценариев, которые позволяют тебе встроить это в свое приложение. Теперь, я не говорю, что ты будешь встраивать это в, знаешь, eye circuit, верно? Потому что это не имело бы смысла. Однако, если ты такой: "Было бы действительно круто. Что, если у меня есть свой собственный создатель eye circuit для Фрэнка Крюгера?" И было бы действительно круто, если бы я мог, знаешь, создать что-то, что затем использует GitHub Copilot через SDK, чтобы, типа, использовать кучу LLM и кучу tool calling, чтобы, по сути, помочь тебе автоматически генерировать кучу образцов, а затем он выгружает вещи в файл, и ты вытаскиваешь их. Тебе не пришлось бы писать приложение для этого. Ты пишешь эти своего рода мета-мини-приложения, которые помогали бы тебе каждый день. >> Вот о чем я думаю. >> Боже, мы живем хорошей жизнью как разработчики. Мне интересно, когда эти инструменты расширятся на другие отрасли, знаешь, как хорошие автоматизаторы. Мы сначала ставим себя без работы, но будет весело посмотреть, какие инструменты и MCP-серверы будут созданы.

для врачей и строителей, а не для юристов. Давайте не будем помогать юристам, а, знаете, всем остальным. Будет интересно посмотреть, например, знаете, прямо сейчас мы не можем жить без нашего инструмента поиска и редактирования кода. Это самый фундаментальный инструмент, к которому имеет доступ GitHub CLI. Читать код и, э, добавлять больше кода в файлы. Как это выглядит для врача? Знаете, когда-нибудь разговаривать с базой данных пациентов и тому подобное. Эм, будет интересно посмотреть, когда эти инструменты станут настолько высокого уровня. В любом случае, это была просто побочная мысль, которую я хотел высказать. Да. Эм, я, я есть эта тонкая грань между тем, что дает вам GitHub CLI, и тем, что дает Open AI, и я не пытаюсь сравнивать компании. Вы просто знаете, что я имею в виду под API OpenAI против API SDK GitHub CLI. Что мне дает одно против другого? Потому что в конечном итоге оба они говорят с GPT или чем-то подобным, или, знаете, мы используем API Anthropic. Кого это волнует? На данном этапе это не имеет значения. К сожалению, на данном этапе все это товары. >> Так что это действительно становится так, что инструменты являются отличительной чертой. MCP являются отличительной чертой. Эм, механизм расширения плагинов в этих инструментах будет отличительной чертой. >> И это действительно странно. Как я уже сказал, когда вы впервые рассказали мне об API SDK GitHub CLI, сколько трехбуквенных акронимов мы можем туда добавить? [очищает горло] Я не знал, что это такое. И теперь я начинаю понимать, о, это на самом деле очень важно. Это своего рода следующий шаг. Эм, для программистов, посмотрим, как это поможет другим отраслям в какой-то момент, но определенно для программистов это следующий шаг. >> Да, абсолютно. И мы можем создавать что угодно. Я думаю, даже вы могли бы создать один из примеров, как генератор PowerPoint, где говорится: «Вот как я генерирую PowerPoint, и вот как это делается, и он может читать файлы и понимать формат и выдавать это», или, эм, я знаю, Кайла из моей команды, она, она, она сделала так, чтобы он создавал историю, как детскую историю на основе вашей истории коммитов git. Так что он читал бы вашу историю коммитов git и генерировал бы историю, а затем выводил бы и рисовал бы с помощью ASCII-арта. Он бы нарисовал книгу, которую вы могли бы прочитать своим детям, как приключенческую историю, что мило, верно? И, очевидно, вы знаете, вы можете запустить это, а затем запускать снова и снова. Кто-то может сказать: «Как это отличается от промпта? Почему я не могу просто открыть VS Code, а затем промптировать его?» Вы могли бы, вы могли бы, но тогда это не будет повторяемо. Как вы, кажется, говорили ранее, вы контролируете системный промпт. Вы контролируете инструменты. Вы контролируете, как это работает, что, я думаю, действительно здорово. Я думаю, другая часть, очевидно, заключается в том, что, очевидно, я работаю в Microsoft, и, знаете, немного предвзят там, но у вас также есть доступ ко всем передовым моделям. Ну, не всем, но у вас есть подавляющее большинство передовых моделей. Так что, если у вас есть что-то, что, как вы знаете, очень хорошо работает с моделью Sonnet или моделью Gemini или моделью OpenAI, у вас есть это доступно, верно? Так что это приятная вещь. И каждая модель имеет разные характеристики того, что работает хорошо. Я не буду лгать, у меня есть этот промпт, который я использую, который на самом деле сейчас я О, знаете что? Это [очищает горло] это SDK, который я собираюсь использовать. Я собираюсь воплотить это в жизнь сегодня вечером. У меня есть один, который идет и смотрит на кучу репозиториев GitHub, используя сервер GitHub MCP, и ищет участников, чтобы мы могли отправлять сувениры людям, которые вносят вклад в, например, GitHub Copilot и VS Code. Но я запускаю этот промпт все время, и на самом деле GPT-4o, как, он действительно хорош в этом. Он, как, он следует ему до буквы. >> И я указал их в файле, и мне пришлось запускать его вручную. Но чувак, это совершенно точно, и тогда он мог бы сгенерировать панель управления. Он мог бы делать все это, верно? Он мог бы, например, делать для вас вещи, как полные отчеты и тому подобное. Это, он мог бы даже отправить письмо человеку. Это потрясающе, Фрэнк, что я думаю об этом всем. Но я думаю, что некоторые вещи мы просто еще не знаем, потому что эти инструменты настолько новы, и, как, возможности расширяются для нас. Как >> был, было время год назад, как в прошлом апреле, когда я построил Feedback Flow, верно? И Feedback Flow идет, он общается со всеми этими различными бэкендами, он извлекает данные, а затем запихивает их в, как, Microsoft Foundry, делает с ними кучу всего. Но, как, я думал, как, да, я мог бы просто использовать это с Copilot CLI, верно? Я мог бы просто, как, делать вещи, и я мог бы общаться с сервером MCP, который общается с Reddit или с чем угодно, и, знаете, и вытягивать вещи, и я могу просто делать это локально на своей машине, верно? Или что-то в этом роде. >> Что было бы довольно круто. Не то чтобы я бы, потому что это более производственный уровень. Я хочу, чтобы все им пользовались. Войти, бинго, банго. Но я был, если бы было что-то уникальное только для меня, тогда, возможно, я мог бы построить это, как анализ истории вещей. Но мне нравится то, что вы сказали ранее. Я, я действительно в этой беседе, потому что, как, у меня уже есть тысяча новых идей для приложений, которые я закончу к пятнице. Но, как [смех] эм, мне нравится то, что вы только что сказали, это то, что у нас есть эти инструменты, знаете, которые сообщают нам, когда есть сбой. Есть куча, эм, сбоев в нашем приложении, или обнаружен баг, или проблема с производительностью, или появляются новые отзывы о приложении. И вы получаете электронное письмо, верно? Но почему оно не анализирует их и не делает ничего, верно? И это то, чем может быть эта вещь. Как, она может пойти и посмотреть на все ваши отзывы о схеме, вытащить их, сделать что-то, сделать анализ, открыть баг, начать, как, вы можете просто скриптовать это, по сути, с помощью этого SDK и заставить его работать, что, по сути, вы могли сделать раньше. Вам пришлось бы написать большую часть этой инфраструктуры, где эта вещь могла бы просто делать это автоматически и соединять все эти службы. Вау, это очень умно. [смех] Ну, я надеюсь, вы начнете писать это. Нет, я, я, я, возможно, даже напишу это, потому что я давно хотел, в частности, тот отзыв. Я думаю, черт возьми, почему? >> Да, в основном потому, что Apple делает это болезненным, чтобы прочитать все это. [смех] Почему Apple так плоха в веб-интерфейсе? Это совсем другой подкаст. [смех] >> Да, они не хотят вас. Они не хотят, чтобы вы. Они не хотят, чтобы вы видели отзывы. Ну, хорошо. Ну, дайте нам знать где-нибудь в интернете. Если вы Ральф и вокруг, если вы используете просто список дел или режим планирования вообще, или, возможно, вы просто пишете свой первый системный промпт или свой первый промпт даже модели, чтобы сгенерировать и исправить баг для вас. Дайте нам знать, где вы находитесь в своем путешествии. Также я хочу, мы много говорили о многих разных функциях. Я хочу отметить это. Также нормально, если вы понятия не имеете, о чем мы говорили, и вы даже не очень заинтересованы в этом, и вы начинаете свое путешествие в области ИИ. Так легко поддаться ажиотажу, потому что буквально Фрэнк пришел. Он сказал: «Я использую эту штуку Ральфа». Я думаю: «Боже мой, может, все заткнутся о Ральфе в интернете на пять минут». Заткнись. Но потом у нас был отличный разговор об этом. Что хорошо. Но это нормально, потому что может показаться, что интернет и ИИ и разработка программного обеспечения идут как бы на спринте, верно? И вы говорите: «Я только начинаю, верно? Моя компания только что включила его, верно?» >> Угу. >> Это тоже нормально. И круто то, что эти инструменты продолжают становиться лучше. Так что, знаете, всегда будут новые методы, которым можно научиться в любой разработке программного обеспечения. Это просто часть инструментария разработки программного обеспечения. Хорошо сказано. Эй, я даже не упомянул рекурсивные языковые модели, знаете? Я сдерживался. Как, есть много, эм, горячих тем, о которых мы можем говорить, но, я не знаю. Я даже не знаю точно, как мы дошли до этого. Все, что я хотел сказать, это то, что я учусь, я продолжаю пытаться идти в ногу с интернетом, Джеймс. Так что это было Спасибо, что помогли мне идти в ногу с интернетом, и спасибо, что позволили мне поговорить о глупой штуке под названием Ральф. Нет, спасибо, что позволили мне болтать о, я не знаю. Ты меня взволновал, Фрэнк. Хорошо, на этом мы закончим на этой неделе «Merge Conflict». Так что до следующего раза, я Джеймс Монтоньяно, а я Фрэнк Крюгер. Спасибо за просмотр и прослушивание. Мир.