通过


GitHub Copilot 现代化代理 CLI 命令

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

命令模式

交互模式

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

modernize

交互式模式提供:

  • 通过现代化工作流进行菜单驱动的导航。
  • 视觉计划和进度指示器。
  • 配置选项的引导提示。
  • 多存储库选择界面。

非交互模式

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

modernize <command> [options]

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

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

全局选项

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

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

指令

评估

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

Syntax

modernize assess [options]

选项

选项 说明 默认
--source <path> 源项目的路径(相对路径或绝对本地路径)。 . (当前目录)
--output-path <path> 评估结果的自定义输出路径。 .github/modernize/assessment/
--issue-url <url> GitHub 问题 URL,用于更新评估摘要。 没有
--multi-repo 启用多存储库评估。 扫描多个存储库的第一级子目录。 已禁用
--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  --multi-repo

输出

评估生成:

  • 报告文件:JSON、MD 和 HTML 格式的详细分析。
  • 摘要:关键发现和建议。
  • 问题更新 (如果提供 --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> 源项目的路径(相对路径或绝对本地路径)。 . (当前目录)
--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

帮助

提供帮助和信息命令。

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 替代和用户配置环境变量。

多存储库配置

创建文件 .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.json文件就位后,请使用以下命令在所有配置的存储库中作:

在本地评估所有存储库:

modernize assess

使用云编码代理评估所有存储库:

modernize assess --delegate cloud

使用云编码代理升级所有存储库:

modernize upgrade --delegate cloud

后续步骤