通过


GitHub Copilot现代化代理 CLI 命令

GitHub Copilot现代化代理为应用程序现代化提供交互式和非交互式模式。

命令模式

交互模式

启动交互式文本用户界面(TUI),实现引导式现代化:

modernize

交互式模式提供:

  • 通过现代化工作流进行菜单驱动的导航。
  • 灵活的源选择:当前文件夹、手动输入(本地路径或 Git URL),或存储库配置文件。
  • 视觉计划和进度指示器。
  • 引导提示配置选项,包括评估域和参数。
  • 多存储库选择界面。

非交互模式

直接执行特定的命令进行自动化和脚本编写:

modernize <command> [options]

在以下情况下使用非交互模式:

  • 与 CI/CD 管道集成。
  • 自动执行批处理作。
  • 编写现代化工作流脚本。
  • 在无外设环境中运行。

全局选项

所有命令都支持以下全局选项:

选项 说明
--help-h 显示帮助信息。
--no-tty 禁用交互式提示(无外设模式)。

指令

评估

运行评估并生成全面的分析报告。

Syntax

modernize assess [options]

选项

选项 说明 默认
--source <source> 要评估的源(可重复)。 接受本地路径、Git URL 或 JSON 配置文件路径。 使用多个 --source 标志指定多个存储库。 . (当前目录)
--output-path <path> 评估结果的自定义输出路径。 .github/modernize/assessment/
--issue-url <url> 使用评估摘要更新的GitHub问题 URL。 没有
--format <format> 评估报告的输出格式: htmlmarkdown html
--assess-config <path> 用于替代默认评估参数(例如目标运行时、计算服务和分析覆盖范围)的评估配置 YAML 文件的路径。 自动发现或默认值
--model <model> 要使用的 LLM 模型。 claude-sonnet-4.6
--delegate <delegate> 执行模式: local (此计算机)或 cloud (云编码代理)。 local
--wait 等待委托的任务完成并生成结果(仅有效)。--delegate cloud 已禁用
--force 强制重启委派,忽略正在进行的任务(仅有效)。--delegate cloud 已禁用

示例

当前目录的基本评估:

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摘要问题注释。

计划创建

基于描述现代化目标的自然语言提示创建现代化计划。

Syntax

modernize plan create <prompt> [options]

Arguments

论点 说明
<prompt> 现代化目标的自然语言描述(必需)。

选项

选项 说明 默认
--source <path> 应用程序源代码的路径。 当前目录
--plan-name <name> 现代化计划的名称。 modernization-plan
--language <lang> 编程语言(javadotnetpython)。 自动检测
--overwrite 覆盖具有相同名称的现有计划。 已禁用
--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.. 创建的现代化计划。

Syntax

modernize plan execute [prompt] [options]

Arguments

论点 说明
[prompt] 可选的执行自然语言说明(例如,“跳过测试”)。

选项

选项 说明 默认
--source <path> 应用程序源代码的路径。 当前目录
--plan-name <name> 要执行的计划的名称。 modernization-plan
--language <lang> 编程语言(javadotnet)。 自动检测
--model <model> 要使用的 LLM 模型。 claude-sonnet-4.6
--delegate <delegate> 执行模式: local (此计算机)或 cloud (云编码代理)。 local
--force 即使 CCA 作业正在进行,也会强制执行。 已禁用

示例

以交互方式执行最新计划:

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. 执行任务:按顺序处理任务列表中的每个任务:

    • 应用代码转换。
    • 在更改后验证生成。
    • 扫描 CVE。
    • 使用描述性消息提交更改。
  3. 生成摘要:提供所有更改和结果的报告。

输出

  • 提交历史记录:执行的每个任务的详细提交。
  • 摘要报告:更改、成功和遇到的任何问题概述。
  • 生成验证:确认应用程序成功生成。
  • CVE 报告:已识别并解决的安全漏洞。

升级

在单个命令中运行端到端升级工作流-计划和执行。

Syntax

modernize upgrade [prompt] [options]

Arguments

论点 说明
[prompt] 目标版本,如 Java 17Spring Boot 3.2.NET 10。 默认为最新的 LTS。

选项

选项 说明 默认
--source <source> 要升级的源(可重复)。 接受本地路径、Git URL 或 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

帮助

提供帮助和信息命令。

Syntax

modernize help [command]

指令

命令 说明
models 列出可用的 LLM 模型及其乘数。

示例

列出可用模型:

modernize help models

配置 CLI

通过使用现代化代理,可以通过 JSON 文件和环境变量自定义应用程序行为。

环境变量

设置环境变量以替代所有其他配置范围:

Variable 说明 默认
MODERNIZE_LOG_LEVEL 日志记录级别(none、、errorwarninginfodebugall 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 替代和用户配置环境变量。

多存储库配置

可以通过多种方式向 CLI 提供多个源:

  • 存储库配置文件:创建列出 .github/modernize/repos.json 所有存储库的文件,然后使用该文件传递该文件 --source
  • 多个 --source 标志:直接在命令行上指定本地路径或 Git URL。
  • 交互模式:通过 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 Git 克隆 URL(HTTPS 或 SSH)。 urlpath
path 绝对本地目录路径。 urlpath
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

后续步骤