Рабочий процесс с Copilot для .NET. Начало
Проблема с позиционированием Copilot как «ИИ-напарника», которое использует GitHub в маркетинговых целях, в том, что это определение верно, но неполно. Программист, впервые видящий вашу кодовую базу, — это всё ещё человек. Он может спросить: «Погоди, а вы здесь используете Service Bus именно так?» — перед тем, как уверенно сгенерировать три файла с неверными привязками. Copilot же будет уверенно генерировать код, создавая как безупречный идиоматичный код для .NET, так и галлюцинированный метод, которого не существует ни в одной версии SDK. Лучше воспринимать Copilot как джуна, который идеально помнит публичный код с GitHub, но совершенно не знает вашего конкретного стека, стандартов кодирования, или что предложенный им метод был объявлен устаревшим ещё в 2022 году. Обеспечьте его контекстом. Задайте ограничения. Проверяйте всё, что взаимодействует с внешними системами. Именно такой подход избавит вас от лишних затрат времени на отладку.
Режимы работы Copilot
1. Автодополнение. Вы печатаете, а он предлагает подсказку, которую можно принять нажатием клавиши
Tab. Это отличное решение для шаблонного кода: конфигурации сущностей EF Core, запросов LINQ, добавления атрибутов к контроллерам ASP.NET Core и т.п. При работе с повторяющимися паттернами это действительно ускоряет процесс.Недостаток: задачи, требующие специфических знаний SDK; асинхронный код, где важна правильная передача
CancellationToken; и всё, что касается безопасности. В таких случаях действовать нужно более осознанно.2. Встроенный чат (
Ctrl+I в VS Code, Alt+/ в Visual Studio) — возможность отправить точечный промпт непосредственно в редакторе. Это целевой инструмент с ограниченной областью действия. Чаще всего используется для рефакторинга конкретного метода, преобразования синхронного кода в асинхронный, генерации XML-документации или чтобы выяснить, что именно делает код и зачем он это делает.3. Окно чата (
Ctrl+Alt+I в VS Code, Ctrl+\,C в VS) — ваш партнёр по размышлениям. Оно подходит как для написания кода, так и для планирования. Прежде чем приступать к реализации, откройте чат и посоветуйтесь об архитектуре: какие возможны сбои, где должна находиться логика повторных попыток, как это взаимодействует с уже используемым нами паттерном Outbox? Результатом становится не код, а ясность понимания. Это позволяет писать код, имея гораздо более чёткий план действий.(Также существует функция Быстрого Чата —
Ctrl+Shift+Alt+L в VS Code, — предназначенная для разовых вопросов без открытия полноценной панели. О ней стоит знать, даже если вы пользуетесь ей лишь изредка.)Многие разработчики вообще не пользуются окном чата, считая это неэффективным. Но 10 минут, потраченных там, сэкономят 2 часа на последующем рефакторинге.
Режимы Ask и Agent: какой из них может вам навредить?
Режим Ask — это Copilot в роли консультанта. Он даёт советы, объясняет и предлагает решения, но не меняет файлы напрямую, пока вы сами не скопируете предложенное. Затраты времени на проверку здесь минимальны. Смело используйте этот режим для исследования, разбора незнакомого кода и планирования.
Режим Agent вносит изменения в один или несколько файлов решения. Он способен одновременно работать со всем проектом, выполнять команды в терминале и проактивно исправлять возникающие ошибки. Это действительно впечатляет. Однако именно в этом режиме, если принять изменения без внимательного их изучения, можно внести скрытые баги сразу в несколько файлов — причём каждый из них по отдельности может выглядеть корректно. Никогда не принимайте результат работы режима Agent, не изучив тщательно каждый изменённый файл.
Выбор модели важнее, чем кажется
Copilot позволяет переключать базовую модель, и относиться ко всем моделям одинаково — всё равно что использовать кувалду для выполнения любой задачи.
Для повседневных задач — таких как создание каркаса контроллера, написание валидатора или генерация заглушек для тестов — лучше всего подходят быстрые и «лёгкие» модели. Они быстро реагируют и выдают точный результат в чётко определённых задачах. Прерывать рабочий процесс в ожидании ответа от модели с продвинутыми способностями рассуждения ради обычного LINQ-запроса — просто неэффективно.
Для принятия архитектурных решений, анализа кода, затрагивающего множество файлов, или любых задач, связанных с логикой безопасности, используйте самую мощную модель (с лучшими способностями к рассуждению) и дайте ей необходимое время. Затраты времени на выбор правильной модели — 3 секунды. Затраты на исправление неверного результата — часы.
Продолжение следует…
Источник: https://levelup.gitconnected.com/a-production-ready-copilot-workflow-for-net-0ad2e7183018