Transcription
Привет, как дела? В этом видео я хочу изучить и сравнить функцию автодополнения Kilo code cursor и GitHub copilot. Итак, функция автодополнения — одна из функций, предоставляемых инструментами ИИ-помощниками для кодирования, такими как Kilo code и cursor. Эта функция предоставляет интеллектуальные предложения и завершения кода во время написания кода, и она может работать с широким спектром языков программирования и фреймворков. Под капотом эта функция отправляет части вашего кода специализированной ИИ-модели, которая предсказывает, что вы, скорее всего, напишете дальше. Чем больше вы используете эту функцию, тем больше она изучает ваши предпочтения. В зависимости от сложности вашего кода и текущего прогресса, предложения автодополнения могут быть разной длины. Иногда это только завершение текущей строки, а иногда это целый новый блок кода или просто быстрые исправления для распространенных шаблонов кода. Вы можете принять все предложение или его часть, или вы можете продолжать печатать и игнорировать предложения. Вы также можете просто отклонить предложения, нажав кнопку escape. Функция автодополнения очень удобна, но вам все равно нужно следить за ней, потому что ИИ может предоставлять частично неправильные предложения. Чтобы привести быстрый пример, я подготовил небольшое тестовое упражнение, которое я буду использовать для вызова функций автодополнения в Copilot, Cursor и Kilo Code. Я сравниваю только эти три, потому что именно ими я пользуюсь больше всего. Инструменты, такие как line и root code, не имеют автодополнения, поэтому они не могут быть включены в это сравнение. В этой небольшой кодовой базе я определил несколько типов объектов TypeScript, которые описывают различные атрибуты для пользователей, продуктов и элементов корзины. А затем внутри файла pricing rules у меня есть несколько констант, которые устанавливают такие вещи, как стоимость доставки и скидка для премиум-уровня для пользователей. Здесь мы можем увидеть тип уровня пользователя для бесплатного, премиум и корпоративного. В файле checkout у нас есть три функции. И мы будем использовать автодополнение, чтобы помочь нам написать логику. Начнем сначала с copilot. Итак, нажмите на функцию calculate subtotal. Нажмите enter. И здесь мы начинаем видеть некоторые предложения. Но эта переменная — не то, что я ищу. Вместо этого давайте напечатаем return. И затем есть эта функция items reduce, которую я хочу написать. Так что нажмите tab здесь, чтобы добавить предложения. А затем есть следующее предложение, которое представляет собой тело функции reduce. Так что примите и это. И затем есть предложение начального значения для функции reduce. Так что нажмите на это. И теперь первая функция завершена. Далее copilot продолжил и предоставил предложения для второй функции. Теперь здесь есть небольшая ошибка, так как объект user не имеет свойства isro, а затем copilot уже продолжил и предоставил логику для calculate shipping здесь. Э-э, но давайте пока проигнорируем это и сначала исправим вторую функцию. Так что здесь просто удалите свойство is pro, и вот правильное предложение, которое заключается в том, что свойство tier равно pro. Теперь вторая функция завершена, и мы можем сосредоточиться на функции calculate shipping, и здесь есть некоторые предложения для следующей строки, но они не совсем то, что я ищу. Так что вместо этого я проверю, есть ли в корзине какие-либо аппаратные продукты. Теперь у нас есть это предложение функции sum, которое является правильным, а затем равно hardware здесь правильно, и если нет аппаратного обеспечения, вернуть ноль. Так что это тоже правильно. И затем у нас есть эта переменная total wake. Э-э, но это не то, что я хочу. Так что давайте посмотрим другое предложение. И затем у нас есть этот расчет доставки, который начинается с определения общего веса. Так что давайте добавим это. Но здесь есть ошибка, так как у нас нет свойства weight kilograms. Вместо этого у нас есть weight kg. Так что вернитесь в функцию, сначала удалите свойство, а затем у нас есть предложения от VS Code здесь. Так что просто выберите правильное свойство. Это не от copilot, кстати, просто функция IntelliSense IDE. Теперь, поскольку свойство необязательное, нам нужно предоставить ему значение по умолчанию. Я добавлю логический оператор или здесь, а затем значение ноль. Так что, когда свойство неопределено, просто используйте ноль здесь, а затем поместите выражение в скобки следующим образом. Хорошо, с этим все три функции завершены. И, как вы можете видеть в этой быстрой задаче, автодополнение copilot довольно удобно. Обычно он сначала показывает короткие фрагменты, так как не хочет слишком много предполагать. Вы увидите несколько различий в том, как работает эта функция в других помощниках по кодированию. Далее мы протестируем функцию автодополнения в cursor. Итак, у меня здесь открыты те же файлы. И мы протестируем завершение трех функций, как и раньше. Давайте начнем с первой функции. И здесь мы видим, что cursor немедленно предоставляет функцию return readers одним махом. Автодополнение cursor гораздо более уверенное, чем copilot. Так что давайте примем это, а затем перейдем ко второй функции. Просто нажмите tab, чтобы перейти ко второй функции. Но иногда предложения cursor могут появляться вне поля зрения IDE, как это. И я действительно не вижу этого. Так что просто нажмите на открывающуюся фигурную скобку здесь. И здесь мы видим автодополнение. И оно выглядит правильно. Так что просто нажмите на него. Вторая функция теперь завершена. Так что давайте перейдем к третьей функции, и снова здесь мы видим предложения вне видимой области. Так что давайте нажмем на опцию маленького вида здесь, и теперь мы лучше видим предложения. Э-э, cursor рассчитывает общий вес перед определением общей стоимости доставки. Это, вероятно, правильно, но давайте пока напечатаем это вручную. Так что сначала константа для has hardware, а затем есть функция sum для проверки на аппаратное обеспечение. Так что нажмите на это, а затем условие if, но это должно быть if has hardware является ложным, а затем просто вернуть ноль вместо базовой стоимости доставки, и теперь у нас есть расчет общего веса и доставки. Так что нажмите tab здесь, и теперь функция завершена, за исключением wake times quantity. Э-э, здесь есть предложение cursor, но я не могу точно понять, что он предлагает. Так что я нажму escape, чтобы отклонить, а затем исправлю формулу total wake здесь. Добавьте значение по умолчанию, которое равно нулю, а затем поместите выражение в скобки, и да, теперь все функции завершены, но опять же, вы можете видеть, как предложения автодополнения в основном правильные, и в случае cursor предложения могут появляться в странном месте. Когда вы не уверены, просто нажмите escape, чтобы отклонить предложения. Хорошо, теперь мы протестируем функцию автодополнения Kilo code. Итак, здесь у нас та же кодовая база, а затем, чтобы активировать функцию автодополнения из kilo code, вы можете перейти в настройки, а затем нажать меню автодополнения здесь. В этом меню убедитесь, что вы отметили все триггеры, а затем ниже kilo code также предоставляет информацию о модели, используемой для автодополнения, которая является моделью code от mistral, легкой моделью, специализирующейся на генерации кода. И затем, когда вы используете автодополнение kilo code, пожалуйста, убедитесь, что вы отключили функцию автодополнения GitHub copilot. Вы можете перейти вниз сюда к значку copilot, а затем отключить завершения кода для всех файлов. Хорошо, давайте начнем с первой функции. Так что нажмите enter. Хорошо, мы видим, что автодополнение kilo code срабатывает, предлагая функцию reduce. Теперь он использовал неправильный атрибут цены здесь. Так что давайте просто изменим его на price cents. Далее ко второй функции. Нажмите enter. И прежде чем мы начнем писать, clear code уже предоставляет тело функции здесь. Теперь строковая литерал для pro tier здесь должен быть в нижнем регистре. Так что давайте просто изменим это. И вторая функция теперь завершена. Мы можем перейти к третьей функции. И kill code предоставляет предложение для тела здесь. Он немедленно рассчитывает общий вес. Но я хочу сначала проверить, есть ли аппаратный элемент. Так что давайте напечатаем это вручную. И теперь у нас есть частично правильные предложения. Так что просто возьмите то, что правильно, а затем я удалю остальное. Затем введите условие if. Теперь вы можете видеть здесь предложение для новой функции, но оно нам сейчас не нужно. Так что просто проигнорируйте его. И теперь он предлагает вернуть ноль. Так что я нажму tab на этом. Далее он предлагает расчет общего веса и доставки, который правильный, за исключением свойства веса. Здесь нам нужно изменить его на weight kg, а затем добавить оператор или и ноль в качестве значения по умолчанию. После этого поместите выражение в скобки. Хорошо, третья функция завершена, и на этом тест заканчивается. Как вы можете видеть, функция автодополнения kilo code, cursor и copilot полезны, но они могут прийти к неправильным выводам и сгенерировать что-то, что выглядит правильно на первый взгляд, но на самом деле не является. В Typescript многие из этих ошибок обнаруживаются рано, потому что система типов будет жаловаться на неопределенные свойства или несоответствие типов. Но в языках со слабой типизацией эти проблемы могут легко проскользнуть незамеченными. Так что, хотя эти инструменты могут сэкономить много времени, вам все равно важно просматривать предложения и убедиться, что код действительно работает. Наконец, автодополнение иногда может мешать, когда вы действительно в потоке. Так что, возможно, вы захотите отключить его на некоторое время, чтобы оставаться сосредоточенным. В Copilot вы можете либо полностью отключить предложения, либо отложить их на несколько часов. Просто нажмите на значок co-pilot в строке состояния, а затем нажмите кнопку snooze или снимите флажок с опции code completions. Тем временем Killer Code немного отличается. У него нет опции snooze, но вы можете отключить опцию pause to complete, а затем вызывать их только тогда, когда хотите, нажав command + L или control + L. Так что теперь, когда вы печатаете, killer code не будет показывать призрачный текст для автодополнения. Вам нужно будет нажать command + L, и предложения будут применены немедленно, как показано здесь. Теперь cursor tap работает так же, как copilot. Так что вы можете перейти в меню cursor tap здесь, а затем вы увидите опции для отключения автодополнения только для текущего типа файла или глобально, или отложить его на определенное время. Таким образом, вы не будете прерываться предложениями автодополнения, когда вы в потоке. Я надеюсь, вы все насладились сегодняшним видео и получили из него какую-то пользу. Дайте мне знать ваши мысли и вопросы в комментариях ниже. Я присоединюсь к беседе и буду отвечать как можно чаще. Также, если вы новичок на канале, меня зовут Нейтан, и я надеюсь, вы научитесь кодировать и использовать инструменты ИИ. Обязательно подпишитесь, если это то, что вы считаете полезным. Не забудьте поставить лайк этому видео, включить колокольчик уведомлений, все эти хорошие вещи, так как это действительно помогает каналу расти. С учетом сказанного, большое спасибо за просмотр до конца. Надеюсь, у вас будет отличный день, и я увижу вас в других видео. Пока-пока.