Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как взаимодействовать с агентом обновления GitHub Copilot, научить его предпочтениям, исправлять ошибки, просматривать свою работу и управлять обновлениями в нескольких сеансах.
GitHub Copilot обновление — это интерактивный сотрудник, который задает вопросы, предлагает стратегии, адаптируется к отзыву и учится на основе ваших предпочтений с течением времени. Чтобы получить наилучшие результаты, предоставьте агенту контекст. Чем больше он знает о ваших целях, ограничениях и предпочтениях, тем лучше он работает.
❌ Vague — the agent has to guess
"Upgrade my project"
✅ Specific — the agent knows exactly what you need
"Upgrade the WebAPI project to .NET 10. We need to keep backward
compatibility with our existing REST clients, and we can't change the
public API surface."
Tip
Вам не нужно заранее давать весь контекст. Агент задает дальнейшие вопросы, когда он нуждается в дополнительной информации.
Начните разговор
Запустите агент с помощью одного из следующих методов:
-
Visual Studio: щелкните правой кнопкой мыши решение или проект в Обозреватель решений и выберите Modernize. Или откройте окно GitHub Copilot Chat и введите
@Modernize. -
Visual Studio Code: откройте панель GitHub Copilot Chat и введите
@upgrade. -
GitHub Copilot CLI: введите
@upgradeследом за вашим запросом на обновление или миграцию. -
Приложение GitHub Copilot: в списке выбора Agent выберите
Upgrade.
-
Visual Studio: щелкните правой кнопкой мыши решение или проект в Обозреватель решений и выберите Modernize. Или откройте окно GitHub Copilot Chat и введите
Сообщите агенту, что нужно обновить или перенести.
Что сказать
Естественный язык работает. Попробуйте использовать следующие примеры:
| Что вы хотите | Что сказать |
|---|---|
| Обновление полного решения | "Обновление решения до .NET 10" |
| Обновление конкретной технологии | "Помогите мне обновить с EF6 до EF Core" |
| Ознакомьтесь с доступными сведениями | "Какие сценарии доступны?" |
| Сначала обновите один проект | Сначала обновите проект API, а затем общую библиотеку. |
| Понять текущее состояние | "Каково текущее состояние моего обновления?" |
Что происходит дальше
При начале беседы агент проверяет наличие существующих задач по обновлению в рабочей области.
- Если отсутствует ранее выполненная работа, агент начинает с нуля, как правило, начиная с оценки вашего решения.
- Если выполняется работа, агент продолжает с того места, где вы прекратили, и отображает текущее состояние, например, "3 из 8 задач завершено".
Выбор режима потока
Агент поддерживает два режима работы, которые управляют тем, насколько долго агент ожидает вашего ввода.
Автоматический режим
В автоматическом режиме агент работает через этапы (оценка, планирование, выполнение) без остановки для утверждения на каждом этапе. Агент по-прежнему останавливается перед реальными блокировками или в случаях, требующих решения, которое можете принять только вы.
Лучше всего подходит для опытных пользователей, простых обновлений и небольших решений.
Режим с подсказками
В режиме с инструкциями агент приостанавливается на каждой границе этапа для вашей проверки:
- После проведения оценки, но перед составлением плана.
- После планирования перед выполнением любых задач.
- Перед сложными разбивками задач.
- В ключевых точках принятия решений, где существуют несколько допустимых подходов.
Лучше всего подходит для пользователей, впервые работающих с продуктом, для сложных решений и когда вы хотите изучить процесс.
Переключение режимов в середине сеанса
Свободно переключаться между режимами в любое время:
| Переключиться на | Что сказать |
|---|---|
| Режим с подсказками | "Пауза" или "Переключение на интерактивный режим" |
| Автоматический режим | "Продолжить" или "Продолжить" |
Tip
Начните с интерактивного режима для первого обновления. Интерактивный режим — лучший способ узнать, как агент думает и какие решения он принимает. Переключитесь в автоматический режим, когда будете уверены.
Обучение агенту
Агент учится от вас. Агент сохраняет ваши исправления, настройки и инструкции в scenario-instructions.md в папке состояния обновления. Эти настройки сохраняются в сеансах.
Исправление ошибок
Когда агент принимает решение, с которым вы не согласны, сообщите агенту:
You: "Actually, don't use Newtonsoft.Json — we're standardizing on System.Text.Json."
Agent: "Got it. I'll use System.Text.Json for all serialization going forward.
I've saved this as a preference."
Агент обновляет scenario-instructions.md и не будет делать тот же выбор снова, даже в будущих сеансах.
Настройка параметров
Заранее сообщите агенту о том, как вы хотите выполнить следующие действия:
You: "Always use bottom-up strategy for this solution — upgrade leaf projects first."
Agent: "Noted. I'll use a bottom-up upgrade strategy, starting with projects that
have no internal dependencies and working up to the top-level projects."
Предоставление инструкций для конкретной задачи
Иногда предпочтение применяется только к определенной задаче:
You: "For this task, skip the test validation — the tests are broken for a known
reason and we'll fix them separately."
Agent: "Understood. I'll skip test validation for this task only."
То, что сохраняет агент
Файл scenario-instructions.md упорядочен в четкие разделы:
| Секция | То, что он содержит | Example |
|---|---|---|
| Параметры пользователя (технические) | Выбор пакетов, решения платформы, шаблоны программирования | "Использовать System.Text.Json, а не Newtonsoft" |
| Параметры пользователя (стиль выполнения) | Как работает агент | "Всегда использовать стратегию снизу вверх" |
| Журнал ключевых решений | Важные решения и их обоснование | "Выберите EF Core по сравнению с Dapper, потому что..." |
| Пользовательские инструкции для каждой задачи | Переопределения, специфичные для задачи | "Пропустить тесты для задачи 3.1" |
Tip
Кроме того, можно редактировать scenario-instructions.md напрямую. Это файл Markdown в .github/upgrades/{scenarioId}/. Агент считывает файл в начале каждого взаимодействия.
Внесение исправлений в середине сеанса
Агент обрабатывает прерывания корректно и не теряет ориентации относительно того, где находится или что выполняет.
Приостановка и проверка
You: "Wait, stop — let me review that change first."
Agent: "Here's what I was about to do: [describes planned changes].
Would you like me to proceed, or adjust the approach?"
Перенаправление
You: "Actually, let's do Project B before Project A — it has fewer dependencies."
Agent: "Good call. I'll reorder the tasks and start with Project B."
Undo
You: "That last change broke the build. Can we revert it?"
Agent: "I'll revert the last commit (abc1234: 'Migrate auth middleware').
Reverting now."
Также отменяйте свои изменения, используя стандартные команды Git. Агент пишет четкие и описательные сообщения коммитов, чтобы вы точно знали, что изменилось в каждом коммите.
Задавайте вопросы в процессе
Задавание вопросов не нарушает рабочий процесс.
You: "Why did you choose to migrate the data layer before the API controllers?"
Agent: "The API controllers depend on the data layer interfaces. By migrating
the data layer first, we avoid temporary compilation errors in the
controllers and can validate each layer independently."
Просмотр работы агента
Агент предоставляет несколько способов проверки своей работы.
Управление исходным кодом
Агент предлагает работать с отдельной ветвью и фиксирует изменения в процессе работы. Просмотрите изменения агента с помощью стандартных команд Git:
git log --oneline -10
git diff main..<agent-branch>
Файлы рабочего процесса
Агент ведет учет нескольких файлов .github/upgrades/{scenarioId}/, которые обеспечивают полную видимость:
| Файл | Что это показывает |
|---|---|
tasks.md |
Обзор визуального хода выполнения со всеми задачами, индикаторами состояния (✅ выполнено, выполняется, 🔄 ⬜ ожидается) и индикатором выполнения |
assessment.md |
Первоначальный анализ решения, включая зависимости, критические изменения и сложность обновления |
scenario-instructions.md |
Ваши предпочтения и решения агента |
tasks/{taskId}/progress-details.md |
Сведения о каждой задаче: обнаружены ошибки сборки, способы их разрешения, результаты теста и принятые решения |
Возобновление прерванной работы
Закройте чат или закройте интегрированную среду разработки. Агент легко обрабатывает эту ситуацию.
Агент сохраняет все состояние внутри вашего репозитория .github/upgrades/. При запуске новой беседы агент проверяет текущее состояние и немедленно знает:
- Какой сценарий активен.
- Какие задачи завершены, выполняются или ожидаются.
- Какие артефакты существуют (оценка, план, файлы задач).
- Отображаются ли какие-либо задачи застрявшими (в 🔄 состоянии из предыдущего сеанса).
Обнаружение устаревших задач
Если задача выполняется из предыдущего сеанса, агент определяет, что она может быть устаревшей, и предлагает либо продолжить её, либо перезапустить, либо пропустить.
Tip
Поскольку состояние находится внутри .github/upgrades/ в вашем репозитории, оно перемещается вместе с вашим кодом. Отправьте вашу ветку на удалённый репозиторий, вытяните её на другой компьютер, и агент продолжает с того места, где вы остановились.
Работа в нескольких сеансах
Крупные обновления, такие как 20-проектное решение, сложное обновление платформы или многоэтапная модернизация, часто охватывают несколько сеансов в течение нескольких дней или недель. Агент обрабатывает работу с несколькими сеансами естественным образом:
-
Постоянное состояние: Все в
.github/upgrades/. Нет состояния, которое хранится в памяти, чтобы потерять. - Независимость сеанса: Каждый сеанс чата является независимым. Агент восстанавливает контекст из файлов состояния каждый раз.
- поддержка Cross-IDE: запуск в VS Code, продолжайте работу в Visual Studio или Copilot CLI. Папка состояния — это общий контракт.
Советы по работе с несколькими сеансами
- Зафиксируйте папку состояния. Отправьте
.github/upgrades/в вашу ветвь, чтобы создать резервную копию папки и сделать её доступной для вашей команды. - Обзор между сеансами. Прочитайте
tasks.md, чтобы освежить в памяти то, что произошло во время прошлого сеанса. - Обновляйте параметры по мере получения нового опыта. Если вы обнаружите что-то в тестировании, которое должно изменить подход агента, сообщите агенту в начале следующего сеанса.
Попросить о помощи
Не уверены, что может делать агент или в каком состоянии дела? Спросить:
| Что вы хотите знать | Что сказать |
|---|---|
| Доступные сценарии обновления | "Что вы можете сделать?" или "Какие сценарии доступны?" |
| Текущий ход выполнения | "Каково текущее состояние?" или "Покажите мне прогресс" |
| План обновления | "Объяснить план" или "Пошаговое руководство по задачам" |
| Сведения об оценке | "Показать мне оценку" или "Что обнаружила оценка?" |
| Доступные навыки | "Какие навыки у вас есть?" или "Перечислить свои навыки" |
| Определенное решение | "Почему вы выбрали X over Y?" |
| Риски или проблемы | "Каковы риски при этом обновлении?" |
Эффективное взаимодействие
Качество взаимодействия непосредственно влияет на качество результатов.
Будьте конкретными в определении объема
"Обновление только проектов Data.Access и Data.Models до .NET 10" дает агенту четкий фокус. "Обновление всего" работает, но агент сам принимает больше решений о порядке и приоритетах.
Поделиться контекстом
Агент не знает ваши бизнес-ограничения, если вы не поделились ими:
- "Мы переходим, потому что Служба приложений Azure прекращает поддержку .NET 8 в ноябре."
- "Это рабочая служба с высоким трафиком — ноль изменений поведения в ответах API".
Выражать ограничения
Сообщите агенту, что он не должен делать, а не только то, что он должен:
- "Не изменяйте область общедоступного API — у нас есть внешние потребители".
- "Мы еще не можем обновить Newtonsoft.Json — команда, которая владеет общими контрактами, не обновила".
- "Не касайтесь устаревшего модуля отчетов— это перезаписывается отдельно".
Отправить отзыв
Положительный отзыв помогает так же, как исправления и подтверждает, что агент находится на правильном пути:
- "Это обновление выглядит отлично— сделайте то же самое для другого проекта репозитория".
- "Это работает, но мы предпочитаем внедрение конструктора над внедрением свойств в этой базе кода".
Краткий справочник
| Ситуация | Что сказать |
|---|---|
| Запуск нового обновления | "Обновление решения до .NET 10" |
| Возобновление предыдущей работы | "Продолжить" или "Какой статус?" |
| Переход на режим с гидом | "Пауза" или "Переключение на интерактивный режим" |
| Переключение в автоматический режим | "Идти вперед" или "Продолжить без запроса" |
| Исправление решения | "Фактически, используйте X вместо Y" |
| Настройка предпочтения | "Всегда выполняйте X для этого решения" |
| Проверить изменения | "Показать мне, что вы изменили" или проверьте журнал Git |
| Отмена изменения | "Вернуть последнее изменение" |
| Спросите, почему | "Почему вы выбрали этот подход?" |
| Пропустить задачу | "Пропустить эту задачу сейчас" |
| Получите помощь | "Что вы можете сделать?" |