
Задача ASP.Net8 с многоязычной схемой и смешанным стеком
12 июня 2025 г.1 GitHub Copilot в VS2022
Я работаю над разработкой приложения .NET8/C#/ASP.NET8/EF8, которое в настоящее время составляет около 123 000 строк кода (SLOC), из которых 50.000 представляет собой модель EF-датабазы, в Visual Studio 2022.
У меня есть подписка наGitHub Copilot Pro +лицензия. До сих пор инструмент ИИ был хорош для задач с ограниченным количеством. Я хотел попробовать новый режим агента GitHub Copilot. Ниже приведены заметки из моей обычной работы.
Окружающая среда: есть:
- Visual Studio 2022, 17.14.5
- GitHub Copilot (GHC). Лицензия Copilot Pro+
- Агент режим, GPT-4O, GPT-4.1, Claude 3.7 Сонет
2 Анекдотичный опыт работы с реальным проектом ASP.NET8
Задача описана в «Части 2» этой серии. Вот просто мой дальнейший анализ.
3 Анализ - впечатления
3.1 Код, сгенерированный GHC, в предыдущей задаче (относительно части 2)
Я очень внимательно смотрел на сгенерированный код. Вот мои выводы.
- Во -первых, это чистое синтаксические ошибки (C#) или аналогичную чепуху, например, дополнительные скобки, что было большой проблемой 3 месяца назад.
- Ни один раз я не видел «галлюцинированное свойство или член класса C#», который я видел 3 месяца назад в количестве, которое сделало сгенерированный код непригодным для использования из-за повторной работы, необходимой для исправления всего этого мусора. На этот раз намного, намного умнее, я бы сказал не ни одного уровня качества, а несколько уровней качества. Я не знаю, как, но это была большая проблема, и казалось, что GHC пытается «угадать» имена свойств, вместо того, чтобы изучать модель EF. На этот раз он изучил другие файлы кода проекта (никакого другого способа найти правильные названия свойств) и провели сравнение/совпадение. 3 месяца назад я думал, что LLM не используются для кодирования из -за проблемы галлюцинации, но они решили это. Даже тот факт, что мои имена таблиц БД частично английские, частично немецкие, не был проблемой; он решил, что контракт =Вертраг, аккаунт= Конто и т. Д. Это не так просто для машины; Английские и немецкие имена смешаны в именах таблиц БД, именах класса C#, параметры метода и т. Д.
- Я сказал это скопировать все комментарии, но это не так. Он скопировал большую часть этого. Я человек, и мне нужны эти комментарии, потому что спустя 3 месяца, когда я смотрю в код, я не помню правильного использования API, поэтому я оставляю комментарии о том, почему и как его вызывали. Я просмотрел код и скопировал комментарии, которые мне нравятся. Это не большая проблема, но я заметил, что GHC не выполняет заданных инструкций строго, это «как человеческий коллега», он делает большую часть, но немного меняется по своему вкусу.
- Поскольку задача состояла в том, чтобы сделать новый код на основе исходного шаблона, она выглядит просто. Но это не для машины. Таким образом, изменения GHC правильны, похоже, что он смог «понять» код и выяснить, где он должен изменить шаблон, а где нет. Это совсем не просто, но это поняло правильно. Существует много технологий, MVC Razor/HTML, CSS/JS/JQUERY/DATABABLE.NET в 370 строках кода (. Проще говоря, насколько я вижу, GHC понял все это и понял это правильно.
- Я не просил об этом, но во время копирования из оригинального шаблона он удалил немного мертвого кода JS. Я, вероятно, скопировал некоторые функции JS, но позже они мне не нужны, поэтому они остались там. Хорошо, новый файл быстрее, потому что ему нужно будет меньше загружать 15 строк кода JS в браузере, но это не главное. Дело в том, что GHC «знает, что делает», и иногда это то, что вы хотите от коллеги, не только для того, чтобы выполнить задачу, но и исправлять что-то вмешательства, которые это замечает во время работы, без явного запроса на это.
- Есть одна тонкая вещь, которую я делаю в своем компоненте ASP.NET8, и GHC не получила ее сначала, и мне нужно было попросить несколько команд, наконец, сделать это, но как только это выяснило, это выяснило это лучше, чем я ожидал. Итак, в файле представления (.cshtml) я использую логический флаг (((модель? jquery/databable.net. в порядке, это еще больше. Включите/исключайте части JS -кода. Инициатива, внедренная оптимизация, и, насколько я вижу, выглядит так, как будто все это синтаксис и функциональность - это небольшое улучшение производительности (100 строк JS), но главное - «GHC выглядит так, как будто знает, что он делает».
4 Заключение
Опять же, это былоНебольшая задача, и это все еще была задачей, тщательно выбранной для GHC, в том смысле, что он основан на шаблонах и разделен на компонентах из основного кода. Он должен был только клонировать код и адаптировать его из объекта учетной записи к организации контракта. Но раньше GHC потерпел неудачу даже в таких «благоприятных сценариях Gen-AI».
Но по сравнению с несколькими месяцами назад этот «агент Github Copilot» выглядит намного умнее. Это на самом делеЧувствует (на эту меньшую задачу, основанную на полученных результатах), немного похожая на человека -коллеги, не сразу же ее не выясняет, поэтому вам нужно больше объяснять детали, он делает качественную работу, но он не делает именно то, что вы просили, и делает некоторые вещи по -своему, а иногда и более умно, что вы думаете, что это будетПолем
Основываясь на модификациях GHC, сделанном в коде моего исходного шаблона C#/CSHTML 4 файлов, я былСпособен следовать «как думает GHC», и это думает как хороший программистПолем
Продолжение следует…
Оригинал