共用方式為


自訂 GitHub Copilot 現代化代理程式

GitHub Copilot 現代化代理程式支援自訂技能,可用來定義組織專屬的遷移模式、內部函式庫使用及編碼標準。 透過運用這些客製化技能,你可以確保組織內部持續現代化,同時運用專有知識。

什麼是自訂技能?

自訂技能依照 代理技能規範 ,教導現代化代理如何利用組織的模式與函式庫執行特定遷移任務。 當你建立現代化計畫時,代理會自動偵測並根據你的遷移提示套用相關的自訂技能。

自訂技能適用於:

  • 內部函式庫遷移:切換到組織專屬的 SDK 或框架。
  • 重複使用遷移模式:捕捉並重用成功的遷移模式。

自訂技能結構

於檔案 SKILL.md 中定義每個自訂技能,包含:

  • YAML 前言:用於技能偵測的元資料。
  • 概述:移民情境描述。
  • 步驟:為代理提供詳盡的指示。
  • 範例程式碼:示範遷移的具體範例。

創建自訂技能

步驟一:建立技能目錄

在你的資料庫中,於 .github/skills/ 下建立一個新資料夾,並使用描述性名稱。

mkdir -p .github/skills/my-migration-pattern

步驟 2:寫入 SKILL.md 檔案

請依照以下章節所示的結構來建立 .github/skills/my-migration-pattern/SKILL.md

必須的前置欄位

---
name: my-migration-pattern
description: A concrete description of what this skill helps migrate
---

重要:這個 description 領域至關重要。 代理會根據使用者的遷移提示,決定何時應用該技能。 要具體且準確。

很好的描述:

  • ✅ 「從 RabbitMQ with AMQP 遷移到 Azure Service Bus 進行訊息傳遞」
  • ✅ 「將直接的 JDBC 呼叫替換為 Spring Data 資料庫」

糟糕的描述:

  • ❌ 「訊息遷移」(過於模糊)
  • ❌ 「更新函式庫」(未具體說明)
  • ❌ 「改進程式碼」(目標不明)

步驟三:提供範例及遷移驗證檢查

包含程式碼範例與驗證檢查以指導代理人:

  • 程式碼變更:展示使用新方法遷移實作的程式碼片段。
  • 設定變更:更新屬性、XML 或其他設定檔。
  • 依賴變更:遷移需要 Maven、Gradle 或 NuGet 更新。
  • 驗證檢查:代理人在應用遷移後應驗證的標準。

你也可以在技能目錄中提供資源檔案,並告訴客服如何在檔案內容 SKILL.md 中使用它們。

使用自訂技能

自動偵測

當您建立現代化計畫時,客服人員會自動:

  1. 掃描以尋找自訂技能 .github/skills/
  2. 比較你的遷移提示訊息與技能描述。
  3. 將相關技能納入計畫中。
  4. 運用技巧來引導程式碼轉換。

範例:

# Agent will automatically detect and use the RabbitMQ skill
modernize plan create "migrate from rabbitmq to azure service bus"

手動驗證

要確認偵測到哪些技能:

  1. 用你的提示來制定計畫。

  2. 檢視 .github/modernization/{plan-name}/tasks.json

  3. 尋找你自訂技能的參考資料:

    "skills": [
        {
          "name": "your-skill-name",
          "location": "project"
        }
    ]
    

如果某項技能未被偵測到:

  • 精煉 description 技能以更符合你的提示。
  • 讓提示更具體。
  • 確保 SKILL.md 格式正確。

範例存放庫

完整範例請參閱 NewsFeedSite 範例庫,其中包含:

  • 自訂技能用於從 RabbitMQ 遷移到 Azure Service Bus。
  • 示範使用內部 JDK 函式庫。
  • 展示了正確的技能結構與格式

克隆與探索:

git clone https://github.com/Azure-Samples/NewsFeedSite.git
cd NewsFeedSite
ls -la .github/skills/
modernize plan create "migrate from rabbitmq to azure service bus"

Troubleshooting

技能未檢測到

問題是:代理人沒有使用你的自訂技能。

解決方案:

  • 檢查 YAML 前言裡的技能名稱是否包含空格。 請改用連字號(例如, my-custom-skill 不要 my custom skill)。
  • 請確認description是否符合您的提示關鍵字。
  • 檢查 YAML 的前置語法。
  • 確保 SKILL.md 存在於 .github/skills/{skill-name}/
  • 讓你的遷移提示更具體。

下一步