使用 GitHub Copilot 現代化功能時自訂現代化計畫

本文說明如何自訂 GitHub Copilot 現代化計畫,將 Java 和 .NET 應用程式遷移到 Azure。

你可以透過多選議題在評估報告中建立計畫,或點擊遷移到Azure從側邊欄建立並執行現代化計畫,來啟動現代化會議。 當您啟動現代化會話時,GitHub Copilot 會產生一個 plan.md 檔案(以及一個配套的 .metadata/tasks.json 檔案),描述遷移目標、範圍、目前與目標架構,以及任務清單。 這兩個檔案可作為現代化代理程式據以執行的藍圖。 你可以在執行前細化計畫,以更符合專案需求。

代理產生 plan.md 後,會在 Visual Studio Code 編輯器中自動開啟。 此時,您可以檢視並客製化計畫,確保其符合您的具體現代化目標。

Important

可透過要求 Copilot 重新產生或更新計畫來自訂計畫,而非直接手動編輯plan.md。 直接編輯到 plan.md 不會更新驅動執行的伴隨檔案 tasks.json,兩個檔案可能會漂移不同步。下面每個章節的建議模式是「告訴 Copilot 要改什麼,然後讓它再生」。

plan.md 範例檔案結構

代理會產生包含以下章節的 plan.md 檔案。 Java 和 .NET 專案也採用相同的結構。

章節 Purpose 可透過提示詞自訂
專案標頭 專案名稱與現代化標題。 是的——調整標題以反映波形或範圍。
技術架構 目前的語言、框架、建置工具、資料庫及金鑰相依性,皆可從原始碼中偵測。 間接地——透過向 Copilot 提示來更正任何偵測錯誤的事實。
概觀 現代化目標的敘述性描述:改變的是什麼、原因與分階段的做法。 面向商業,沒有技術細節。 是的——澄清業務意圖,新增或刪除項目符號。
移民影響摘要 一個表格將每個應用程式映射×原始服務→新的Azure服務、認證方法與註解。 可以——更改目標服務、更改認證、新增或移除列。
開放式問題與問卷 在建立計畫過程中提出的澄清問題,以及使用者的回答。 推動任務選擇。 是的——回答開放性問題,修正之前的答案。

詳細的任務清單不在 plan.md。 它位於 .metadata/tasks.json 中,並且是根據你在 「開放式問題與問卷」 區段中的回答以及代理程式的分析所產生。 要更改任務,請提示Copilot重新生成計畫(參見 如何自訂)。

可自訂的內容

現代化計畫展示了四種客製化表面。 各項內容都對應到 plan.md 的一個區段,且是透過向 Copilot 發出提示來存取,而不是直接編輯。

1. 現代化範圍

範圍決定了代理產生的任務類型。 該計畫支援四種範疇類型:

  • Upgrade — 執行時及框架版本升級(例如 JDK 11 → 17、Spring Boot 2.x → 3.x、.NET Framework → .NET 8)。
  • 遷移至 Azure——以Azure等效服務取代本地或非Azure服務(例如 Oracle → 適用於 PostgreSQL 的 Azure 資料庫、ActiveMQ → Azure 服務匯流排、硬編碼秘密→Azure Key Vault)。
  • 容器化 — 產生 Dockerfile 及相關的建置產物。
  • Deployment — 產生部署檔案並部署到Azure。 部署任務隱含容器化。

要自訂瞄準鏡,請告訴 Copilot 哪些瞄準鏡類型適用於這次任務。 例如:

For this modernization plan, only include Upgrade and Migration to Azure tasks. Do not generate containerization or deployment tasks — those are handled by a separate pipeline.

2. Target Azure 服務與認證

Migration Impact Summary表格記錄每個遷移元件的目標Azure服務與認證方法。 請在初始計畫產生前或之後,向 Copilot 提示以自訂這些值。 例如:

Update the Migration Impact Summary:
- Use Azure Container Apps as the deployment target, not Azure Kubernetes Service.
- Use Managed Identity for the PostgreSQL connection. Do not use Key Vault for the DB password.
- Migrate file-based logging to Azure Monitor (Application Insights), not to console-only.

代理程式會重新產生 plan.mdtasks.json,使任務清單與表格保持一致。

3. 問卷答案

當客服人員具備 ask_user 可用能力時,會提出簡短問卷以評估計畫範圍。 三個預設問題為:

Question 預設答案 對計畫的影響
Azure 上的部署目標 沒有部署 新增(或省略)部署工作,並選取目標運算服務(Azure 容器應用程式、Azure Kubernetes Service、Azure App 服務、App Service 受控執行個體、Azure Function Apps、Azure Static Web Apps)。
要包含整合測試嗎? No 當設定為「是,與容器的本地整合」或「是,本地整合與煙霧測試」時,會在遷移任務之後、容器化之前新增一個整合測試任務。
要包含容器化(Dockerfile 生成)嗎? No 新增一個獨立的容器化任務。 若選擇部署任務,則自動跳過,因為部署涵蓋容器化。

如果客服沒有問問題(例如因為ask_user無法使用),或你想更改之前的答案,請提示Copilot。 例如:

Update the plan with these answers:
- Deployment target: Azure Container Apps
- Integration testing: Yes, Local Integration and Smoke Tests
- Containerization: handled by deployment task, no standalone containerization needed

答案會以勾選項目記錄於 「開放問題與問卷 」區塊,並驅動任務選擇。

4. 新增、移除或精煉特定任務

你可以請 Copilot 新增未產生的任務、刪除不想要的任務,或調整現有任務的範圍。 提示詞intent — 讓Copilot從其知識庫中選擇匹配的技能與模式。

範例:

Add a task to migrate from ActiveMQ to Azure Service Bus.
Drop the integration test task — we have an existing test suite that covers this.
The Spring Boot upgrade task should target Spring Boot 3.2 specifically, not "latest".

備註

代理只為其具備相應技能或模式的遷移建立任務。 如果你要求進行代理程式無法支援的遷移(例如內部專有服務),系統會在範圍區段中加入警告,而且不會新增該任務。 在這種情況下,將遷移視為手動步驟,並新增指引說明(見下一節)來記錄。

如何自訂:提示 Copilot 再生

請使用以下工作流程:

  1. 代理人產生初始訊息 plan.md 後再檢視。
  2. 明確你想改變的範圍、目標服務、認證、問卷答案或特定任務。
  3. 向 Copilot 提示變更。 具體說明:說明章節和期望的結果。
  4. 讓 Copilot 一起重新產生 plan.md.metadata/tasks.json。 兩個檔案必須保持對齊才能執行。
  5. 請重新檢視更新後的計畫。 反覆調整,直到範圍、目標架構和任務清單符合你的意圖。

端對端範例提示:

Update the modernization plan with these changes:
1. Add Migration to Azure scope for messaging — migrate ActiveMQ to Azure Service Bus.
2. Use Managed Identity for all Azure service connections; do not introduce Key Vault.
3. Deployment target is Azure Container Apps.
4. Include Layer 1 and Layer 2 integration tests.
5. The Spring Boot upgrade task should explicitly include the JDK 17 and Jakarta EE migration in its description, as a single task (do not split).

Copilot 會重新建立計畫、更新表格、記錄問卷答案,並相應地修訂任務清單。

提供執行指引

除了範圍與任務外,還提供Copilot 指引——方法論、慣例、工具與規則——以規範現代化的執行方式。 通常將指引新增為計畫中的 Guidelines 章節,或作為對本機規則檔案的參照。

請包含任何有助於引導 Copilot 如何修改程式碼的指示,例如:

  • 對某些遷移方法的限制或禁止(例如不要引入 Spring Cloud Azure啟動程式;請使用原生 SDK)。
  • 程式碼風格或慣例要求。
  • 連結到代理可存取的內部檔案、文件或腳本。
  • 領域知識有助於修正錯誤或執行遷移。
  • 代理人應如何註釋或評論程式碼變更的要求。
  • 執行過程中產生的臨時產物的清理指令。

範例:

Add these guidelines to the plan:
- Use Azure Managed Identity for every Azure service connection. Do not introduce connection strings or Key Vault secrets unless a service has no Managed Identity support.
- Follow the code conventions defined in `/docs/internal/code-style.md`.
- Provide detailed comments explaining why each code change is necessary.
- After execution, remove any temporary scripts or scratch files created during migration.

參見