通过


自定义 GitHub Copilot 现代化代理

GitHub Copilot 现代化代理支持自定义技能,可用于定义组织特定的迁移模式、内部库使用情况和编码标准。 通过使用这些自定义技能,可以在使用专有知识的同时确保整个组织的现代化一致。

什么是自定义技能?

自定义 技能遵循代理技能规范 ,指导现代化代理如何使用组织的模式和库执行特定的迁移任务。 创建现代化计划时,代理会根据迁移提示自动检测并应用相关的自定义技能。

自定义技能适用于:

  • 内部库迁移:切换到特定于组织的 SDK 或框架。
  • 重复使用迁移模式:捕获和重复使用成功的迁移模式。

自定义技能结构

请在 SKILL.md 文件中定义每个自定义技能:

  • YAML 前置内容:技能检测的元数据。
  • 概述:迁移方案的说明。
  • 步骤:为代理人提供的详细说明。
  • 示例代码:演示迁移的具体示例。

创建自定义技能

步骤 1:创建技能目录

在存储库的下创建一个具有描述性名称的新文件夹。

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 至关重要。 代理使用它来确定何时根据用户的迁移提示应用技能。 使其更具体且准确。

优良的描述:

  • ✅ “使用 AMQP 从 RabbitMQ 迁移到 Azure 服务总线进行消息传输”
  • ✅ “将直接 JDBC 调用替换为 Spring Data 存储库”

不良描述:

  • ❌ “消息传递迁移”(太模糊)
  • ❌ “更新库”(不具体)
  • ❌ “改进代码”(目标不清楚)

步骤 3:提供示例和迁移验证检查

包括代码示例和验证检查,以指导代理:

  • 代码更改:代码片段显示使用新方法迁移的实现。
  • 配置更改:对属性、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 服务总线迁移的自定义技能。
  • 演示如何使用内部 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"

故障排除

未检测到技能

问题:代理不使用自定义技能。

解决方法

  • 检查 YAML 前端中的技能名称是否不包含空格。 请改用连字符(例如, my-custom-skill 而不是 my custom skill)。
  • 验证是否 description 与提示关键字匹配。
  • 检查 YAML 前端语法。
  • 确保SKILL.md位于.github/skills/{skill-name}/中。
  • 使迁移提示更具体。

后续步骤