команды CLI агента модернизации GitHub Copilot

Агент модернизации GitHub Copilot предоставляет интерактивные и неинтерактивные режимы модернизации приложений.

Режимы команд

Интерактивный режим

Запустите интерактивный пользовательский интерфейс текста (TUI) для интерактивной модернизации:

modernize

Интерактивный режим предоставляет следующие возможности:

  • Навигация на основе меню через рабочий процесс модернизации.
  • Гибкий выбор источника: текущая папка, входные данные вручную (локальные пути или URL-адреса Git) или файлы конфигурации репозитория.
  • Визуальный план и индикаторы хода выполнения.
  • Интерактивные запросы для параметров конфигурации, включая домены оценки и параметры.
  • Интерфейс выбора нескольких репозиторий.

Неинтерактивный режим

Выполните определенные команды непосредственно для автоматизации и скриптов:

modernize <command> [options]

Используйте неинтерактивный режим, когда:

  • Интеграция с конвейерами CI/CD.
  • Автоматизация пакетных операций.
  • Рабочие процессы модернизации сценариев.
  • Работает в бессерверных средах.

Глобальные опции

Все команды поддерживают следующие глобальные параметры:

Опция Описание
--help, -h Отображает сведения о справке.
--no-tty Отключает интерактивные запросы (режим без головы).

Команды

Оценить

Выполняет оценку и создает комплексный отчет по анализу.

Синтаксис

modernize assess [options]

Options

Опция Описание По умолчанию
--source <source> Источник для оценки (повторяемый). Принимает локальные пути, URL-адреса Git или путь к файлу конфигурации JSON. Используйте несколько флагов для указания нескольких --source репозиториев. . (текущий каталог)
--output-path <path> Пользовательский путь вывода для результатов оценки. .github/modernize/assessment/
--issue-url <url> URL-адрес проблемы GitHub для обновления с сводкой оценки. Нет
--format <format> Формат выходных данных для отчетов об оценке: html или markdown. html
--assess-config <path> Путь к файлу YAML конфигурации оценки, который переопределяет параметры оценки по умолчанию, такие как целевая среда выполнения, вычислительные службы и покрытие анализа. Автоматическое обнаружение или значения по умолчанию
--model <model> Используемая модель LLM. claude-sonnet-4.6
--delegate <delegate> Режим выполнения: local (этот компьютер) или cloud (агент облачного программирования). local
--wait Ожидает завершения делегированных задач и создания результатов (только допустимых с --delegate cloud). Disabled
--force Принудительно перезапустить делегирование, игнорируя текущие задачи (только допустимыми с --delegate cloud). Disabled

Примеры

Базовая оценка текущего каталога:

modernize assess

Оценка с пользовательским расположением выходных данных:

modernize assess --output-path ./reports/assessment

Оценка и обновление проблемы GitHub с результатами:

modernize assess --issue-url https://github.com/org/repo/issues/123

Оценка определенного каталога проекта:

modernize assess --source /path/to/project

Оцените несколько репозиториев с помощью файла конфигурации:

modernize assess --source .github/modernize/repos.json

Оцените несколько репозиториев, указав источники напрямую:

modernize assess --source https://github.com/org/repo1 --source https://github.com/org/repo2

Оценка и вывод отчетов в формате markdown:

modernize assess --format markdown

Выходные данные

Оценка создает следующее:

  • Файлы отчетов: подробный анализ в форматах JSON, MD и HTML.
  • Сводка: ключевые выводы и рекомендации.
  • обновления Issue (если вы предоставляете --issue-url): GitHub примечания проблемы с сводкой.

Создание плана

Создает план модернизации на основе запроса естественного языка, описывающего цели модернизации.

Синтаксис

modernize plan create <prompt> [options]

Аргументы

Аргумент Описание
<prompt> Описание целей модернизации (обязательно).

Options

Опция Описание По умолчанию
--source <path> Путь к исходному коду приложения. Текущий каталог
--plan-name <name> Имя плана модернизации. modernization-plan
--language <lang> Язык программирования (java, dotnetили python). Автоматическое обнаружение
--overwrite Перезаписывает существующий план с тем же именем. Disabled
--model <model> Используемая модель LLM. claude-sonnet-4.6

Примеры

Создайте план миграции:

modernize plan create "migrate from oracle to azure postgresql"

Создайте план обновления с пользовательским именем:

modernize plan create "upgrade to spring boot 3" --plan-name spring-boot-upgrade

Создайте план развертывания:

modernize plan create "deploy the app to azure container apps" --plan-name deploy-to-aca

Пример полных параметров:

modernize plan create "upgrade to .NET 8" \
    --source /path/to/project \
    --plan-name dotnet8-upgrade \
    --language dotnet \
    --issue-url https://github.com/org/repo/issues/456

Примеры запросов

Обновления платформы:

  • upgrade to spring boot 3
  • upgrade to .NET 10
  • upgrade to JDK 21
  • migrate from spring boot 2 to spring boot 3

Миграции баз данных:

  • migrate from oracle to azure postgresql
  • migrate from SQL Server to azure cosmos db
  • switch from MySQL to azure database for mysql

Миграции в облако:

  • migrate from on-premises to azure
  • containerize and deploy to azure container apps
  • migrate from rabbitmq to azure service bus

Развёртывание:

  • deploy to azure app service
  • deploy to azure kubernetes service
  • set up CI/CD pipeline for azure

Выходные данные

Команда создает следующую команду:

  • Файл плана (.github/modernize/{plan-name}/plan.md): подробная стратегия модернизации, включая:

    • Контекст и цели
    • Подход и методология
    • Разъяснения
  • Список задач (.github/modernize/{plan-name}/tasks.json): Структурированная разбивка исполняемых задач с помощью:

    • Описания задач
    • Навыки использования
    • Критерии успеха

Подсказка

Вы можете вручную изменить plan.mdtasks.json и после создания, чтобы настроить подход перед выполнением.

выполнение плана

Выполняет план модернизации, созданный с помощью modernize plan create.

Синтаксис

modernize plan execute [prompt] [options]

Аргументы

Аргумент Описание
[prompt] Необязательные инструкции по естественному языку для выполнения (например, "пропустить тесты").

Options

Опция Описание По умолчанию
--source <path> Путь к исходному коду приложения. Текущий каталог
--plan-name <name> Имя выполняемого плана. modernization-plan
--language <lang> Язык программирования (java или dotnet). Автоматическое обнаружение
--model <model> Используемая модель LLM. claude-sonnet-4.6
--delegate <delegate> Режим выполнения: local (этот компьютер) или cloud (агент облачного программирования). local
--force Принудительно выполняется даже при выполнении задания CCA. Disabled

Примеры

Выполните последний план в интерактивном режиме:

modernize plan execute

Выполните конкретный план:

modernize plan execute --plan-name spring-boot-upgrade

Выполните дополнительные инструкции:

modernize plan execute "skip the test" --plan-name spring-boot-upgrade

Выполнение в режиме без головы для CI/CD:

modernize plan execute --plan-name spring-boot-upgrade --no-tty

Поведение выполнения

Во время выполнения агент:

  1. Загружает план: считывает план и список задач из .github/modernization/{plan-name}/

  2. Выполняет задачи: обрабатывает каждую задачу в списке задач последовательно:

    • Применяет преобразования кода.
    • Проверяет сборки после изменений.
    • Проверяет наличие CVEs.
    • Фиксирует изменения с описательными сообщениями.
  3. Создает сводку: предоставляет отчет обо всех изменениях и результатах.

Выходные данные

  • Журнал фиксаций: подробные фиксации для каждой выполняемой задачи.
  • Сводный отчет: обзор изменений, успехов и любых проблем.
  • Проверка сборки: подтверждение успешной сборки приложения.
  • Отчет CVE: уязвимости безопасности, выявленные и устраненные.

upgrade

Выполняет комплексный рабочий процесс обновления — план и выполнение — в одной команде.

Синтаксис

modernize upgrade [prompt] [options]

Аргументы

Аргумент Описание
[prompt] Целевая версия, например Java 17, Spring Boot 3.2, .NET 10. По умолчанию используется последняя версия LTS.

Options

Опция Описание По умолчанию
--source <source> Источник обновления (повторяемый). Принимает локальные пути, URL-адреса Git или путь к файлу конфигурации JSON. Используйте несколько флагов для указания нескольких --source репозиториев. . (текущий каталог)
--delegate <delegate> Режим выполнения: local (этот компьютер) или cloud (агент облачного программирования). local
--model <model> Используемая модель LLM. claude-sonnet-4.6

Примеры

Запустите upgrade текущий каталог:

modernize upgrade "Java 17"
modernize upgrade ".NET 10"

Запуск upgrade в определенном проекте:

modernize upgrade "Java 17" --source /path/to/project

Запустите upgrade с помощью агента облачного программирования:

modernize upgrade "Java 17" --delegate cloud

Обновите несколько репозиториев с помощью файла конфигурации:

modernize upgrade "Java 21" --source .github/modernize/repos.json

Обновите несколько репозиториев, указав источники напрямую:

modernize upgrade "Java 21" --source https://github.com/org/repo1 --source https://github.com/org/repo2

help

Предоставляет команды справки и информации.

Синтаксис

modernize help [command]

Команды

Command Описание
models Перечисляет доступные модели LLM и их умножители.

Примеры

Список доступных моделей:

modernize help models

Настройка интерфейса командной строки

С помощью агента модернизации можно настроить поведение приложения с помощью JSON-файлов и переменных среды.

Переменные среды

Задайте переменные среды для переопределения всех других областей конфигурации:

Variable Описание По умолчанию
MODERNIZE_LOG_LEVEL Уровень ведения журнала (none, , errorwarninginfo, , debug) all info
MODERNIZE_MODEL Используемая модель LLM. claude-sonnet-4.6
MODERNIZE_COLLECT_TELEMETRY Включение или отключение сбора данных телеметрии. true

Пример:

export MODERNIZE_LOG_LEVEL=debug
export MODERNIZE_MODEL=claude-sonnet-4.6
modernize assess

Конфигурация пользователей

Сохраните пользовательские настройки в ~/.modernize/config.json параметрах на уровне репозитория или на .github/modernize/config.jsonуровне репозитория.

{
  "model": "claude-sonnet-4.6",
  "log_level": "info",
  "trusted_folders": [
    "/path/to/trusted/project",
  ]
}

Свойство trusted_folders указывает папки, доверенные для использования LLM в интерактивном режиме.

Замечание

Переменные среды имеют наивысший приоритет, за которым следует конфигурация пользователя, а затем конфигурация репозитория. Используйте переменные среды для переопределения CI/CD и конфигурации пользователя для личных настроек.

Настройка нескольких репозиторий

Вы можете предоставить несколько источников интерфейсу командной строки несколькими способами:

  • Файл конфигурации репозитория: создайте .github/modernize/repos.json файл, который перечисляет все репозитории, а затем передайте его.--source
  • Несколько --source флагов: укажите локальные пути или URL-адреса Git непосредственно в командной строке.
  • Интерактивный режим: выбор источников с помощью TUI (текущая папка, входные данные вручную или конфигурация репозитория).

Файл конфигурации репозитория

.github/modernize/repos.json Создайте файл для определения списка репозитория. Конфигурация поддерживает два формата:

Простой формат (массив репозиториев):

[
  {
    "name": "PhotoAlbum-Java",
    "url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git"
  },
  {
    "name": "PhotoAlbum",
    "url": "https://github.com/Azure-Samples/PhotoAlbum.git"
  }
]

Полный формат (с ветвями и локальными путями):

{
  "repos": [
    {
      "name": "PhotoAlbum-Java",
      "url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git",
      "branch": "main"
    },
    {
      "name": "local-project",
      "path": "/absolute/path/to/project"
    }
  ]
}

Каждая запись репозитория поддерживает следующие поля:

Поле Описание Обязательный
name Понятное имя репозитория. Да
url URL-адрес клона Git (HTTPS или SSH). Одно из url или path
path Абсолютный путь к локальному каталогу. Одно из url или path
branch Ветвь для получения после клонирования. Нет
description Описание, доступное для чтения человеком. Нет

Полный формат с группированием приложений (необязательно для организованных отчетов):

Вы можете добавить раздел в apps[] репозитории группирования в логические приложения. При определении приложений агрегированный отчет упорядочивает результаты по приложениям и поддерживает распределение отчетов.

{
  "repos": [
    {
      "name": "PhotoAlbum-Java",
      "url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git",
      "branch": "main"
    },
    {
      "name": "PhotoAlbum",
      "url": "https://github.com/Azure-Samples/PhotoAlbum.git"
    }
  ],
  "apps": [
    {
      "identifier": "photo-app",
      "description": "Photo management application",
      "repos": ["PhotoAlbum-Java"],
      "output": {
        "type": "local",
        "path": "/path/to/reports/photo-app"
      }
    }
  ]
}

Каждая запись приложения поддерживает следующее:

Поле Описание Обязательный
identifier Уникальное отображаемое имя приложения. Да
description Описание, доступное для чтения человеком. Нет
repos Список имен репозитория, принадлежащих этому приложению. Да
output Где распространять отчет об оценке этого приложения после создания. Нет

Поле output поддерживает следующие типы распределения:

Тип Описание Обязательные поля
local Копирование отчетов в локальный каталог. path
git Отправка отчетов в репозиторий Git. Формат URL-адреса: https://github.com/org/repo.git#branch:path. url

Это важно

Делегирование агента программирования облака (--delegate cloud) требует наличия репозиториев GitHub (github.com) URL-адресов репозитория. Репозитории локальных путей и поставщики, отличные от GitHub (GitLab, Azure DevOps), не поддерживаются для делегирования облака и пропускаются.

Затем используйте --source для передачи пути к файлу конфигурации:

Оцените все репозитории локально:

modernize assess --source .github/modernize/repos.json

Оцените все репозитории с помощью агента облачного кода:

modernize assess --source .github/modernize/repos.json --delegate cloud

Обновите все репозитории с помощью агента облачного кода:

modernize upgrade --source .github/modernize/repos.json --delegate cloud

Несколько источников в командной строке

Можно также указать несколько источников напрямую:

modernize assess --source https://github.com/org/repo1 --source https://github.com/org/repo2
modernize upgrade "Java 21" --source ./project-a --source ./project-b

Дальнейшие действия