Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Модернизация с использованием GitHub Copilot применяет структурированный подход к обновлению проектов .NET. Понимание того, как работает агент, включая его сценарии, навыки, задачи и рабочий процесс, помогает эффективно взаимодействовать с агентом и получать лучшие результаты.
Подсказка
Подумайте об агенте как о квалифицированном коллеге, который глубоко понимает .NET, следует структурированному плану и адаптируется к вашей обратной связи. Чем больше контекста вы даете, тем лучше агент работает.
Агент как товарищ по команде
Агент выполняет совместную работу, а не автоматизацию в вакууме:
- Deep .NET knowledge: Агент понимает файлы проекта, зависимости NuGet, критические изменения и шаблоны обновления в десятках технологий .NET для проектов C# и Visual Basic.
- Структурированный рабочий процесс: Каждое обновление проходит через оценку, планирование и выполнение. Никаких случайных изменений, никаких сюрпризов.
-
Изучает ваши предпочтения: Когда вы говорите "всегда используйте явные типы вместо
var", агент записывает это предпочтение вscenario-instructions.mdи запоминает его между сеансами. - Ошибка, исправимая на ходу: Принял неверное решение? Сообщите агенту. Она адаптируется и применяет исправление в дальнейшем.
- Объясняет свои доводы: Спросите "почему вы выбрали этот подход?", и агент объясняет решение.
Сценарии
Сценарий — это управляемый комплексный рабочий процесс модернизации. Когда агент сообщает об обновлении решения до .NET 10, вы активируете сценарий .NET version upgrade.
Обнаружение сценариев
Вам не нужно запоминать имена сценариев. Агент автоматически обнаруживает соответствующие сценарии:
- Анализирует базу кода, чтобы понять, какие технологии вы используете, включая язык, версию платформы, библиотеки и типы проектов.
- Определяет, какие сценарии относятся к вашим проектам.
- Ранжирует сценарии по важности и весу. Наиболее релевантные появляются первыми.
Вы также можете попросить напрямую: "Какие сценарии доступны для моего решения?"
Сохраняемость сценария
Каждый активный сценарий получает собственную папку по адресу .github/upgrades/{scenarioId}/. Папка сценария содержит план, ход выполнения задачи, параметры и журналы выполнения. Папка является частью репозитория Git.
Полный список сценариев см. в справочнике по сценариям и навыкам.
Жизненный цикл рабочего процесса
Каждый сценарий следует одному жизненному циклу: трехэтапный рабочий процесс.
Этап 1. Оценка
Агент собирает все необходимые компоненты перед началом работы:
- Целевая платформа: Версия, до которую выполняется обновление.
- Стратегия Git: Агент предлагает ветвление, а вы управляете такими сведениями, как: имя ветви, следует ли использовать ветви для каждой задачи, и время фиксации коммитов.
- Режим потока: Автоматический (агент управляет) или Пошаговый (вы утверждаете каждый этап).
- Параметры, относящиеся к сценарию: В зависимости от сценария агент может задавать дополнительные вопросы.
Агент инициализирует рабочую область сценария по адресу .github/upgrades/{scenarioId}/.
Затем агент анализирует базу кода:
- граф зависимостей Project (топологический порядок)
- Совместимость пакетов NuGet с целевой платформой
- Ломающие изменения API
- Покрытие тестов
- Факторы сложности и риска
Агент сохраняет подробный отчет об оценке в assessment.md.
На основе оценки агент оценивает решение и определяет, какие решения по обновлению актуальны. Он представляет разумные значения по умолчанию и позволяет просматривать и переопределять любой выбор.
Возможны следующие варианты:
- Стратегия обновления: Снизу вверх, сверху вниз или всё сразу.
- Подход к обновлению проекта: перезапись на месте или параллельная перезапись для веб-приложений; на месте или поддержка нескольких целевых платформ для библиотек.
- Модернизация технологий: Варианты обновления Entity Framework, внедрения зависимостей, ведения журнала и настройки.
- Управление пакетами: Следует ли и когда применять централизованное управление пакетами.
- Обработка совместимости: Как устранить неподдерживаемые API и пакеты.
Агент сохраняет подтвержденные решения в upgrade-options.md.
В режиме сопровождения агент паузируется здесь для вашего ознакомления, прежде чем продолжить.
Этап 2. Планирование
Агент создает план действий на основе оценки и ваших подтвержденных параметров. Планирование создает три ключевых файла:
-
plan.md: план обновления с описанием стратегии и задач. -
scenario-instructions.md: ваши предпочтения, решения и память агента. -
tasks.md— упорядоченный список задач, выполняемых агентом.
Этап 3. Выполнение
Агент выполняет задачи последовательно. Для каждой задачи в tasks.md агент следует циклу: запуск, выполнение, проверка (сборка и тестирование) и завершение. Вы контролируете, когда и как агент фиксирует изменения: на каждую задачу, на группу задач или в конце. Когда агент работает, он обновляет tasks.md с индикаторами текущего состояния, чтобы вы могли отслеживать ход выполнения.
Стратегии обновления
На этапе оценки агент оценивает решение и рекомендует одну из следующих стратегий:
| Стратегия | лучше всего подходит для | Принцип работы |
|---|---|---|
| Снизу вверх | Крупные решения с графами глубоких зависимостей | Начните с проектов на нижнем уровне (без зависимостей), двигайтесь вверх. |
| Сверху вниз | Быстрая обратная связь с основным приложением | Начните с проекта приложения, исправьте зависимости по мере необходимости. |
| Все одновременно | Небольшие, простые решения | Обновите все в одном проходе. |
Подсказка
Агент предоставляет только решения, относящиеся к вашему проекту. Простое консольное приложение не отображает варианты веб-платформы, а проект без Entity Framework не отображает параметры обновления базы данных.
Навыки
Навыки являются меньшими, целевыми возможностями модернизации. Когда агент сталкивается с кодом EF6 во время обновления, он загружает навык EF6-to-EF-Core с подробными пошаговыми инструкциями по обновлению. Вызов навыка непосредственно во время обновления: "обновление служб WCF в моем проекте до CoreWCF".
Агент поставляется с более чем 30 встроенными навыками, сгруппированными по областям.
- Доступ к данным: обновление с EF6 до EF Core (code-first и EDMX), LINQ to SQL и SqlClient
- Web/ASP.NET: Identity, Global.asax, OWIN, маршрутизация/фильтры/группировка MVC и WCF в CoreWCF
- Сериализация: Newtonsoft.Json в System.Text.Json
- Cloud: Функции Azure от внутрипроцессной к изолированной рабочей модели
- Библиотеки: ADAL, MSAL, SignalR, SDK для PowerShell и многое другое
Навыки загружаются автоматически на основе того, что агент обнаруживает в базе кода. Вам не нужно управлять загрузкой навыков. Просто описать, что вам нужно.
Полный список см. в справочнике по сценариям и навыкам.
Задачи
Задачи — это атомарные единицы работы в сценарии. Каждая задача представляет собой определенный ограниченный фрагмент обновления, например "Обновление CommonLib с .NET 6 до .NET 10" или "Обновление использования EF6 в DataLayer до EF Core".
Жизненный цикл задач
Задачи перемещаются по следующим состояниям:
- Доступно: Готов к запуску, все зависимости выполнены.
- Выполняется: Агент активно работает над задачей.
- Завершено: изменения кода применены, сборка успешно выполнена, тесты пройдены.
Для каждой задачи агент:
- Загружает связанные навыки и контекст.
- Оценивает сложность и решает, нужно ли разбивать задачу на подзадачи.
- Записывает сводку области в
tasks/{taskId}/task.md. - Выполняет изменения кода.
- Проверяется путем выполнения сборки и тестов.
- Результаты записываются в
tasks/{taskId}/progress-details.md. - Фиксирует изменения и переходит к следующей задаче.
Управление состоянием
Агент поддерживает постоянное состояние, чтобы вы могли остановить и возобновить работу в любое время. Всё содержится в вашем репозитории под .github/upgrades/{scenarioId}/.
| Файл | Purpose |
|---|---|
scenario-instructions.md |
Ваши предпочтения, решения и пользовательские инструкции. Постоянная память агента. |
upgrade-options.md |
Подтвержденные решения об обновлении |
plan.md |
План обновления с описанием стратегии и задач |
tasks.md |
Панель визуального отслеживания прогресса с состоянием задач |
execution-log.md |
Подробный журнал всех изменений и решений |
tasks/{taskId}/task.md |
Область и контекст для каждой задачи |
tasks/{taskId}/progress-details.md |
Заметки и результаты выполнения для каждой задачи |
Возобновление
Закройте чат, закройте интегрированную среду разработки или вернитесь на следующий день. Агент продолжает с того места, где остановился.
- При следующем взаимодействии агент автоматически проверяет текущее состояние рабочей области.
- Агент обнаруживает существующий сценарий и показывает текущий ход выполнения, например "3 из 8 завершенных задач".
- Агент обнаруживает незавершённые задачи (застрявшие в процессе с предыдущего прерванного сеанса) и предлагает возобновить или перезапустить их.
- Агент перезагружает ваши предпочтения из
scenario-instructions.md.
Непрерывность кросс-интегрированной среды разработки
Так как состояние хранится в Git, вы можете переключаться между VS Code, Visual Studio и Copilot CLI во время обновления. Папка .github/upgrades/ — это общее состояние, которое понимают обе среды разработки.
Подсказка
Зафиксируйте папку в .github/upgrades/ ветви. Отправьте ветвь в удаленный репозиторий, чтобы участники команды просматривали ход выполнения или продолжайте обновление на другом компьютере.
Режимы потока
Агент поддерживает два режима потока, которые управляют объемом контроля: автоматический режим и интерактивный режим.
Автоматический режим
Агент работает на всех стадиях (оценка, планирование и выполнение) без остановки для одобрения. Он предоставляет ключевые результаты и обновления хода выполнения, продолжая двигаться вперед.
Лучше всего подходит для опытных пользователей, простых обновлений и небольших решений.
Управляемый режим
Агент приостанавливается на границе каждого этапа для проверки вами.
- После оценки: "Вот что я нашел. Следует ли продолжать работу с параметрами обновления?
- После планирования: "Вот план задачи. Вы хотите, чтобы я начал выполнение?"
- Перед разбиением сложных задач : "Эта задача является сложной. Вот как я разделю ее".
Лучше всего подходит для пользователей, впервые работающих с продуктом, для сложных решений и когда вы хотите изучить процесс.
Переключайте режимы в любое время
- Скажите "приостановить" или "переключиться в режим сопровождения", чтобы перейти в режим сопровождения.
- Чтобы переключиться на автоматический режим, нажмите кнопку "Продолжить" или "Продолжить".
Подсказка
Начните с интерактивного режима для первого обновления, чтобы понять рабочий процесс, а затем переключитесь на "Автоматический" после удобства.