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> |
评估报告的输出格式: html 或 markdown。 |
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> |
编程语言(java或dotnetpython)。 |
自动检测 |
--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 3upgrade to .NET 10upgrade to JDK 21migrate from spring boot 2 to spring boot 3
数据库迁移:
migrate from oracle to azure postgresqlmigrate from SQL Server to azure cosmos dbswitch from MySQL to azure database for mysql
云迁移:
migrate from on-premises to azurecontainerize and deploy to azure container appsmigrate from rabbitmq to azure service bus
部署:
deploy to azure app servicedeploy to azure kubernetes serviceset up CI/CD pipeline for azure
输出
该命令生成:
计划文件 (
.github/modernize/{plan-name}/plan.md):详细的现代化策略,包括:- 上下文和目标
- 方法和方法
- 澄清
任务列表 (
.github/modernize/{plan-name}/tasks.json): 可执行任务的结构化细分,其中包含:- 任务说明
- 要使用的技能
- 成功标准
小窍门
可以在执行前手动编辑 plan.md 和 tasks.json 生成后自定义方法。
计划执行
执行由 modernize plan create.. 创建的现代化计划。
Syntax
modernize plan execute [prompt] [options]
Arguments
| 论点 | 说明 |
|---|---|
[prompt] |
可选的执行自然语言说明(例如,“跳过测试”)。 |
选项
| 选项 | 说明 | 默认 |
|---|---|---|
--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 作业正在进行,也会强制执行。 | 已禁用 |
示例
以交互方式执行最新计划:
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
执行行为
在执行期间,代理:
加载计划:从中读取计划和任务列表
.github/modernization/{plan-name}/执行任务:按顺序处理任务列表中的每个任务:
- 应用代码转换。
- 在更改后验证生成。
- 扫描 CVE。
- 使用描述性消息提交更改。
生成摘要:提供所有更改和结果的报告。
输出
- 提交历史记录:执行的每个任务的详细提交。
- 摘要报告:更改、成功和遇到的任何问题概述。
- 生成验证:确认应用程序成功生成。
- CVE 报告:已识别并解决的安全漏洞。
升级
在单个命令中运行端到端升级工作流-计划和执行。
Syntax
modernize upgrade [prompt] [options]
Arguments
| 论点 | 说明 |
|---|---|
[prompt] |
目标版本,如 Java 17、Spring 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、、errorwarning、info、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 替代和用户配置环境变量。
多存储库配置
可以通过多种方式向 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