
Агент Github Copilot выглядит многообещающе - часть 4 (июнь 2025 г.)
17 июня 2025 г.Агент Github Copilot, по состоянию на июнь 2025 года, выглядит гораздо более способным, чем 2 месяца назад.
Аннотация: После появления агента GitHub Copilot я решил попробовать его на своем реальном проекте ASP.Net8 123.000 SLOC. Я попробовал несколько задач с ограниченным количеством, и первоначальные результаты намного лучше, чем мои тесты GitHub Copilot два месяца назад.
1. Github Copilot в VS2022
Я работаю над разработкой приложения .net8/c#/asp.net8/ef8, которое теперь имеет около 123 000 строк кода (SLOC), из которых 50.000 является моделью EF-датабаз-первой, в Visual Studio 2022.
У меня есть подписка наGitHub Copilot Pro +лицензия. До сих пор инструмент ИИ был хорош для задач с ограниченным количеством. Я хотел попробовать новыйGithub Copilot Agentрежим. Ниже приведены заметки из моей обычной работы.
Окружающая среда: есть:
- Visual Studio 2022, 17.14.5
- GitHub Copilot (GHC). Лицензия Copilot Pro+
- Агент режим, GPT-4O, GPT-4.1, Claude 3.7 Сонет
- C#/. Net8/ASP.NET/JavaScript/jQuery/HTML/CSS/SQL-Server
2. Анекдотичный опыт работы с реальным проектом ASP.NET8
2.1 впечатления и наблюдения
- GHC не одинаково умна каждый раз. Иногда для очень похожей задачи «видит» различную логику в исходном шаблоне и импровизирует. НоGHC получает свою идею, это имеет смысл в некотором смысле, «как парень, который плохо понимает бизнес -логику проекта», но это заставляет ее работать,Хотя никто не нуждается в этой функциональностиПолем Но это строит его в скомпилированном состоянии. Это было не настолько хорошо, GHC построил и рассчитывал свою собственную и создал свойство «CountOflinkedAccounts», и он не видел, что я нахожусь в другом месте, и есть свойство «числофаксуны», и расчет более сложный (мягкий удаление и т. Д.), чем оно рассчитано.
- Небольшая ошибка в C#, было наследование интерфейсов, и она добавляла один и тот же метод 2 раза к интерфейсу на разных уровнях иерархии интерфейса. Но это заставило его компилировать и построить.
- Легче вручную перемещать сгенерированные методы в соответствующие файлы, чем написать целое предложение в GTC. В целом,сгенерированный код должен быть перемещен/ стерт/ завершен вручную вручнуюПолем
- Иногда,GHC сбивается с толку комментариями, которые включают код.БылСтарая версия метода в комментариях, и он начал изменять этот, чтобы сделать его активным, а затем изменил фактическую версию с тем же именем, чтобы что -то сделать. Возможно, конечный результат был хорошим, но я не хочу рабочего процесса, а также я не могу видеть/проверить в редакторе, что все в порядке. Итак, это такНемного ограничение нас, людей, чтобы рассмотреть все изменения, если изменения распространяются по слишком многим местамПолем Я отказался от всего этого. Я удалю комментарии, которые сбивают с толку GHC и начну все с самого начала.
- Это немного легко;Если вы не можете понять, что сделал GHC, вы все это отказываете и заставляете его работать с самого началаПолем Это вообще не жалуется, как ваш коллега. Вы можете быть настолько резким, насколько хотите.
- Иногда простой запрос, просто для перемещения метода из одного файла в другой, заставляет его усердно работать. Я вижу, что GHC перечитывает файлы и застрял, и даже не удался в первой сборке, и в окончательном решении он переименовал некоторые случайные переменные. Слишком много путаницы для простого запроса.
- Я используюОтдельный текстовый редактор (блокнот ++) для тщательной подготовки команд для GHCПолем Я дважды проверяю метод проверки и имена файлов, которые я даю ему и перечитываю команду, чтобы убедиться, что она звучит разумно. Я перестал использовать # для имен файлов, просто используйте естественный язык и говорю «File ABC.CS» или «класс ABC в файле ABC.CS», и все это работает.
- ЯНе используя какую -либо конкретную технику «быстрого разработки», толькоРазумно объясните, как я бы с каким -то другим разработчикомПолем Я говорю: «Посмотрите на этот метод, который может быть полезен для этой задачи». В настоящее время Интернет полон «быстрых инженерных гуру», которые продают некоторые «уличные умные» о том, как вы должны перехитрить инструменты искусственного интеллекта, такие как «Дайте мне только 5% ответов» и т. Д. Я предполагаю, что ИИ уже делает все возможное, и я не думаю, что я могу давить на него, чтобы работать усерднее. Но, конечно, это мой бесплатный совет, если вы хотите заплатить 500 долларов за самопровозглашенный курс «быстрый инженер-гуру», чтобы научить вас «закрутить разум ИИ, чтобы работать усерднее», сделайте это. Люди склонны верить в дорогие врачи больше, чем в более дешевые.
- Итак, я даю задачу GHC, для этого и построить 3-5 минут, и тем временем я проверю свою электронную почту или прочитаю что-нибудь в Интернете. Когда я вижу, что это закончено, я иду и просматриваю, что он сделал. Это сложная часть, и GIT - мой главный друг, где я вижу все изменения. Если я не люблю или не понимаю этого, потому что это внесло странные изменения в слишком многих местах, я отменяю все. И просмотрите мою команду и улучшите ее с помощью более подробной информации, ссылаясь на вещи, которые мне не нравились. И дайте команде GHC работать с самого начала. Можем ли мы назвать это «рабочим процессом с агентом GitHub Copilot»? Итак, в основном этоGenerate-Review-Drop-Generate-Review-Accept Cycleкак рабочий процесс?Обзор - это бремя для людей и требует значительных усилий, потому что вы читаете чужой код, но я просто не хочу ничего принимать в свой репозиторий, который я не читал и понял.
- Обзор требует понимания того, что сделал GHC и почему. Это нелегко. Мне потребовалось время, чтобы понять, почему в каком -то модельном файле он удалил какую -то свойство, но после обзора GHC был правильным, эта собственность является мертвым кодом и никогда не упоминается в этом конкретном компоненте. Я только что скопировал из исходного компонента, который нуждается в этом. Так,GHC умнее, чем я иногда, но мне все еще нужно проверить этоПолем Только машина может отслеживать каждую из тысяч переменных в моем проекте и посмотреть, устарела ли она.
- Иногда вы говорите GHC клонировать компонент и изменить его, и GHCОпускает очень важный параметр в JavaScriptЯ прохожу, и компонент не будет работать без него. Кажется, что если это не может выяснить, это опускает это. И было сказано просто клонировать код. Человеческий обзор сгенерированного кода может только обнаружить его. Если GHC действительно изучил метод AJAX на стороне сервера, это увидит, что параметр используется, но он не полностью понял код. Это было читаемо из кода, ноЭто допустило логическую ошибку.
- Это проблема, о которой я говорил, если я принимаю код без очень осторожного обзора, мне позже нужно будет вернуться назад и очистить ошибки. Итак, вот почему яИдите медленно и просмотрите каждую строку сгенерированного кодаПолем Медленно в обзоре, но в целом экономит время из -за меньшего количества дефектов.
- GHC иногда нужно было создать проект 4 раза. Итак, сила ваших местных ресурсов имеет значение. Вот почему у меня есть 16-ядерный процессор с 32 ГБ оперативной памяти. Это своего рода причудаРаспределенные вычисления, сборка сборки (часть работы) выполняется локально на вашей машине, а Smarts (часть работы) выполняется в некотором суперкомпьютере в КалифорнииПолем
Я снова вижу «галлюцинированные свойства». Он завершил работу над файлом .cshtml, но он не построил его. Были добавлены несколько многогодных строк, но не из файлов ресурсов. Я попросил добавить их в файлы ресурсов и создать проект. Он сказал, что это не может, мне нужно добавить это самостоятельно. Хорошо, я сделаю это. Я добавил 2 строки в файл ресурса, и он сейчас компилируется.
3. Форма, созданная с помощью GitHub Copilot
Вот результат работы:
- Потребовалось, может быть, 15 командных подсказок (некоторые были исследованиями), чтобы создать форму.
- Это было не так просто. Я разделил задачу на несколько подзадач, чтобы создать методы, поэтому я могу полностью управлять созданием и проверять качество каждого сгенерированного метода. Просмотр кода - серьезная работа, на мой взгляд.
- Это было довольно умно с файлом .cshtml; Он обнаружил надлежащие значки, даже разные значки для единственного и множественного числа счетов и контрактов. Похоже, это было чтение файлов проекта, чтобы найти подходящие значки.
4. Заключение
Это все еще было задачей, тщательно выбранным для GHC, в том смысле, что он основан на шаблонах. Он должен был только клонировать код и адаптировать его из объекта учетной записи к организации контракта.
Бремя по -прежнему находится на человеческом программисте, чтобы просмотреть весь сгенерированный коди проверьте на наличие ошибок. В этой версии GHC,Синтаксические ошибки очень редки, но было несколько логических ошибок.
Оригинал