GitHub Copilot 的智能体技能(Agent Skills)是指令、脚本和资源的集合,Copilot 可以根据任务相关性加载这些技能,以执行特定专业任务。Agent Skills 是一项开放标准,可跨多个 AI 智能体工作,包括 VS Code 中的 GitHub Copilot、GitHub Copilot CLI 以及 GitHub Copilot 编程智能体。
与主要定义编码规范的自定义指令(Custom Instructions)不同,技能能够实现专业化的能力和工作流,其中可以包含脚本、示例和其他资源。您创建的技能具有可移植性,可在任何兼容技能的智能体中使用。
智能体技能的关键优势
智能体技能为 Copilot 带来了以下核心优势:
- 专业化 Copilot:无需重复上下文,即可为领域特定任务定制 Copilot 的能力。
- 减少重复:一次创建,可在所有对话中自动使用。
- 组合能力:将多个技能组合起来,构建复杂的工作流。
- 高效加载:仅在需要时将相关内容加载到上下文中,优化资源利用。
提示:您可以通过“聊天自定义编辑器”(预览版)统一管理和创建所有聊天自定义项。在命令面板中运行“Chat: Open Chat Customizations”即可打开。
智能体技能与自定义指令的对比
虽然智能体技能和自定义指令都能帮助定制 Copilot 的行为,但它们服务于不同的目的。下表清晰地展示了两者的区别:
| 特性 | 智能体技能 (Agent Skills) | 自定义指令 (Custom Instructions) |
|---|---|---|
| 目的 | 教授专业能力和工作流 | 定义编码标准和规范 |
| 可移植性 | 跨 VS Code、Copilot CLI 和 Copilot 编程智能体工作 | 仅限 VS Code 和 GitHub.com |
| 内容 | 指令、脚本、示例和资源 | 仅指令 |
| 范围 | 任务特定,按需加载 | 始终应用(或通过 glob 模式应用) |
| 标准 | 开放标准 (agentskills.io) | VS Code 特定 |
何时使用智能体技能
当您需要以下功能时,应考虑使用智能体技能:
- 创建可在不同 AI 工具中复用的能力。
- 在指令中包含脚本、示例或其他资源。
- 与更广泛的 AI 社区共享能力。
- 定义专业化的工作流,例如测试、调试或部署流程。
何时使用自定义指令
当您需要以下功能时,自定义指令是更好的选择:
- 定义项目特定的编码标准。
- 设置语言或框架约定。
- 指定代码审查或提交消息规范。
- 根据文件类型使用 glob 模式应用规则。
创建智能体技能
提示:在聊天输入框中输入 /skills 可以快速打开“配置技能”菜单。
技能存储在目录中,其中包含一个 SKILL.md 文件,该文件定义了技能的行为。VS Code 支持两种类型的技能:
| 技能类型 | 位置 |
|---|---|
| 项目技能 | 存储在您的仓库中,例如 .github/skills/、.claude/skills/、.agents/skills/ |
| 个人技能 | 存储在您的用户配置文件中,例如 ~/.copilot/skills/、~/.claude/skills/、~/.agents/skills/ |
提示:在单体仓库(monorepo)中,您可以通过启用 chat.useCustomizationsInParentRepositories 设置来发现父仓库根目录下的技能。您还可以通过 chat.agentSkillsLocations 设置配置额外的技能搜索位置,这对于跨项目共享技能或集中管理非常有用。
创建技能的步骤
-
在“聊天”视图中,选择“配置聊天”(齿轮图标)打开“聊天自定义编辑器”,然后选择“技能”选项卡。
-
根据您希望存储技能的位置,从下拉菜单中选择“新建技能(工作区)”或“新建技能(用户)”。
-
选择位置并输入技能名称。
-
通过填写 YAML 前置元数据(frontmatter)并在文件主体中添加指令来完成
SKILL.md文件。--- name: skill-name description: 技能功能和使用场景的描述 --- # 技能指令 您的详细指令、指南和示例将在此处填写... -
(可选)向技能目录添加脚本、示例或其他资源。例如,一个用于测试 Web 应用程序的技能可能包含:
SKILL.md:运行测试的指令test-template.js:一个模板测试文件examples/:示例测试场景
使用 AI 生成技能
您可以使用 AI 根据能力描述生成技能。在聊天中输入 /create-skill 并描述您想要的技能(例如,“一个用于运行和调试集成测试的技能”)。智能体将提出澄清问题并生成一个包含目录结构、指令和前置元数据的 SKILL.md 文件。
您还可以从正在进行的对话中提取可复用技能。例如,在经历多轮复杂问题调试后,您可以说“根据我们刚才的调试过程创建一个技能”,以将多步骤过程捕获为可复用技能。
此外,您也可以在“聊天自定义编辑器”中通过下拉菜单选择“生成技能”。
SKILL.md 文件格式
SKILL.md 文件是一个 Markdown 文件,其中包含 YAML 前置元数据,用于定义技能的元数据和行为。
头部 (YAML Frontmatter)
头部是必需的,以 YAML 前置元数据格式定义,包含以下字段:
| 字段 | 必需 | 描述 |
|---|---|---|
name |
是 | 技能的唯一标识符。必须是小写,使用连字符分隔单词(例如 webapp-testing)。必须与父目录名称匹配。最大 64 个字符。 |
description |
是 | 技能功能和使用场景的描述。请具体说明能力和使用场景,以帮助 Copilot 判断何时加载该技能。最大 1024 个字符。 |
argument-hint |
否 | 当技能作为斜杠命令调用时,在聊天输入字段中显示的提示文本。帮助用户理解需要提供哪些额外信息(例如 [测试文件] [选项])。 |
user-invocable |
否 | 控制技能是否在聊天菜单中显示为斜杠命令。默认为 true。设置为 false 可在 / 菜单中隐藏技能,但仍允许智能体自动加载。 |
disable-model-invocation |
否 | 控制智能体是否可以根据相关性自动加载技能。默认为 false。设置为 true 则要求只能通过 / 斜杠命令手动调用。 |
主体 (Body)
技能主体包含 Copilot 在使用此技能时应遵循的指令、指南和示例。请编写清晰、具体的指令,描述:
- 技能帮助完成什么。
- 何时使用该技能。
- 应遵循的逐步操作过程。
- 预期输入和输出的示例。
- 对任何包含的脚本或资源的引用。
您可以使用相对路径引用技能目录中的文件。例如,要引用技能目录中的脚本,可以使用 [测试脚本](./test-template.js)。
示例技能
以下示例展示了您可以创建的不同类型的技能。
- Web 应用程序测试技能: 这个技能可以帮助您使用 Playwright 创建和运行基于浏览器的 Web 应用程序测试。它可能包含测试模板、创建测试的步骤、运行和调试测试的命令,以及最佳实践。
- GitHub Actions 调试技能:
这个技能旨在帮助您调试失败的 GitHub Actions 工作流。它可能包含一个流程,指导您如何使用工具(如
list_workflow_runs、summarize_job_log_failures)来获取日志、重现问题、修复构建,并列出常见问题及其解决方案。
将技能作为斜杠命令使用
技能可以作为斜杠命令在聊天中使用,类似于提示文件。在聊天输入字段中输入 /,即可看到可用技能和提示的列表,选择一个技能即可调用它。您可以在斜杠命令后添加额外上下文,例如 /webapp-testing 登录页面 或 /github-actions-debugging PR #42。
默认情况下,所有技能都会出现在 / 菜单中。您可以使用 user-invocable 和 disable-model-invocation 前置元数据属性来控制每个技能的访问方式:
| 配置 | 斜杠命令可用 | Copilot 自动加载 | 用例 |
|---|---|---|---|
| 默认(两属性均省略) | 是 | 是 | 通用技能 |
user-invocable: false |
否 | 是 | 模型在相关时加载的背景知识技能 |
disable-model-invocation: true |
是 | 否 | 仅希望按需手动运行的技能 |
两者均设置 (user-invocable: false, disable-model-invocation: true) |
否 | 否 | 禁用技能(不通过命令或自动加载) |
Copilot 如何使用技能
Copilot 采用渐进式加载内容的方式,以保持上下文高效。以下是 Copilot 如何使用 webapp-testing 技能的示例:
- 发现:Copilot 从 YAML 前置元数据中读取技能的名称和描述。当您询问“帮我测试登录页面”时,Copilot 根据其描述将此与
webapp-testing技能匹配。 - 指令加载:Copilot 将
SKILL.md的主体加载到其上下文中,从而获得详细的测试过程和指南。您也可以通过在聊天中输入/webapp-testing直接触发此步骤。 - 资源访问:当 Copilot 按照指令工作时,它仅在引用时才访问技能目录中的其他文件,例如
test-template.js或示例场景。
这种三级加载系统意味着您可以安装许多技能而不会消耗大量上下文。Copilot 只加载与每个任务相关的内容。
共享与贡献技能
使用共享技能
您可以使用他人创建的技能来增强 Copilot 的能力。github/awesome-copilot 仓库包含了不断增长的社区技能、自定义智能体、指令和提示集合。anthropics/skills 仓库也包含额外的参考技能。您还可以发现和安装捆绑在智能体插件中的技能。来自已安装插件的技能会与您本地定义的技能一起出现在“配置技能”菜单中。
要使用共享技能:
- 浏览仓库中可用的技能。
- 将技能目录复制到您的
.github/skills/文件夹。 - 根据您的需求审查和定制
SKILL.md文件。 - (可选)根据需要修改或添加资源。
提示:在使用共享技能之前,请务必审查它们,以确保它们符合您的要求和安全标准。VS Code 的终端工具提供了脚本执行的控制,包括带有可配置允许列表的自动批准选项,以及对运行代码的严格控制。
扩展贡献技能
扩展程序可以通过其 package.json 中的 chatSkills 贡献点来贡献技能。路径必须指向一个包含 SKILL.md 文件的目录,并遵循 Agent Skills 规范。
总结
智能体技能为 GitHub Copilot 带来了前所未有的定制化和自动化能力,使开发者能够更高效、更精准地完成专业任务。无论是通过创建自己的技能,还是利用社区共享的丰富资源,开发者都能显著提升其工作流效率和代码质量。随着这一开放标准的不断发展,智能体驱动的开发模式将变得更加强大和普及。
👉 如果你需要 ChatGPT 代充 / Claude / Claude Code / 镜像 / 中转 API:
- 购买 / 了解更多:ai4.plus
- 备用入口:kk4099.com