本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

在 VS Code 中使用代理技能

Agent Skills 是 GitHub Copilot 可以在相关时加载的指令、脚本和资源文件夹,用于执行特定任务。Agent Skills 是一个开放标准,可以在多个 AI 代理之间通用,包括 VS Code 中的 GitHub Copilot、GitHub Copilot CLI 和 GitHub Copilot 编码代理。

自定义指令主要定义编码指南不同,技能启用专门的功能和工作流程,可以包括脚本、示例和其他资源。您创建的技能是可移植的,并且可以在任何支持技能的代理上使用。

代理技能的主要好处:

  • 专用Copilot:为特定领域任务量身定制功能,无需重复上下文
  • 减少重复:创建一次,自动应用于所有对话
  • 组合能力:结合多种技能来构建复杂的流程
  • 高效加载:仅在需要时加载相关的内容到上下文中

智能体技能 vs 自定义指令

虽然代理技能和自定义指令都可以帮助定制 Copilot 的行为,但它们有不同的用途:

特征 特工技能 自定义指令
目的 教授专业技能和工作流程 定义编码标准和指南
便携性 适用于 VS Code、Copilot CLI 和 Copilot 编码代理 VS Code 和 GitHub.com 仅此
内容 说明、脚本、示例和资源 仅限说明
范围 任务专用,按需加载 始终应用(或通过 glob 模式)
标准 开放标准 (agentskills.io) VS Code特定的

使用特工技能在你想要的时候:

  • 创建可跨不同AI工具使用的可重用功能
  • 包括脚本、示例或其他资源以及说明一起。
  • 与更广泛的AI社区分享能力
  • 定义专门的工作流程,例如测试、调试或部署过程

当您需要时,请使用自定义指令:

  • 定义项目特定的编码标准
  • 设置语言或框架约定
  • 指定代码审查或提交信息指南
  • 使用 glob 模式基于文件类型应用规则

创建技能

小贴士

类型/技能 在聊天输入中快速打开 技能配置 菜单。

技能存储在目录中,使用SKILL.md定义技能行为的文件。VS Code 支持两种类型的技能:

技能类型 位置
项目技能,存储在你的仓库中 .github/技能/.claude/技能/.agents/技能/
个人技能,保存在您的用户个人资料中 ~/.copilot/skills/ ~/.claude/技能/ ~/.agents/技能/
小贴士

您可以通过使用以下方法来配置 VS Code 搜索技能的其他位置

聊天.代理技能地点
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。这有助于在项目之间共享技能或将其集中在一个地方。

要创建一个技能:

  1. 创建一个.github/技能在你的工作区中创建一个目录。

  2. 为您的技能创建一个子目录。每个技能应该有一个自己的目录(例如,.github/技能/网页应用测试)。

  3. 创建一个SKILL.md在技能目录中包含以下结构的文件:

    ---
    名称: 技能名称
    描述: 技能的作用及何时使用
    ---
    
    # 技能说明
    
    您的详细说明、指南和示例应在此处输入...
    
  4. 可选地,将脚本、示例或其他资源添加到技能目录中。

    例如,一个用于测试网页应用程序的技能可能包括:

    • SKILL.md- 运行测试的说明
    • 测试模板.js- 模板测试文件
    • 示例/- 示例测试场景

SKILL.md 文件格式

SKILL.md文件是一个带有YAML前导部分的Markdown文件,用于定义技能的元数据和行为。

标题(必填)

标题格式化为 YAML 前置标记,包含以下字段:

领域 必需 描述
名字 是的 技能的唯一标识符。必须是小写,并使用连字符代替空格(例如,网页应用测试). 必须与父目录名称匹配。最大长度为64个字符。
描述 是的 描述该技能的功能以及何时使用它。请具体说明功能和使用案例,以帮助 Copilot 决定何时加载该技能。最多 1024 个字符。
参数提示 当技能以斜线命令调用时,在聊天输入字段中显示的提示文本。帮助用户了解需要提供什么附加信息(例如,[测试文件] [选项])。
用户可调用 控制技能是否在聊天菜单中显示为斜线命令。默认为设置为隐藏技能输入:/菜单,同时允许代理自动加载它。
禁用模型调用 控制是否可以根据相关性自动加载技能。默认为设置为需要通过手动调用输入:/仅限斜线命令。

身体

技能主体包含 Copilot 在使用该技能时应遵循的说明、指南和示例。编写清晰、具体的说明,描述:

  • 该技能帮助完成的任务
  • 何时使用技能
  • 分步操作程序
  • 预期输入和输出示例
  • 任何包含的脚本或资源的引用

您可以在技能目录中使用相对路径引用文件。例如,要引用技能目录中的脚本,请使用[测试脚本](./test-template.js)输入:.

示例技能

以下示例展示了您可以创建的不同类型的技能。

示例:网页应用程序测试技能
---
名称: webapp测试
描述: 使用Playwright进行网络应用程序测试的指南。在需要创建或运行基于浏览器的测试时使用。
---

# 使用Playwright进行网络应用程序测试

此技能帮助您使用Playwright为网络应用程序创建和运行基于浏览器的测试。

## 何时使用此技能

Use this skill when you need to:
- Create new Playwright tests for web applications
- Debug failing browser tests
- Set up test infrastructure for a new project

## Creating tests

1. Review the [test template](./test-template.js) for the standard test structure
2. Identify the user flow to test
3. Create a new test file in the `tests/` directory
4. Use Playwright's locators to find elements (prefer role-based selectors)
5. Add assertions to verify expected behavior

## Running tests

To run tests locally:
```bash
npx playwright test
```

调试测试:
```bash
npx playwright test --debug
```

## 最佳实践

- 使用 data-testid 属性来处理动态内容
- 保持测试独立且原子性
- 对于复杂的页面使用页面对象模型
- 失败时截图
示例:GitHub Actions 调试技能
---
名称: github-actions调试
描述: 指导如何调试失败的GitHub Actions工作流程。当被要求调试失败的GitHub Actions工作流程时使用。
---

# GitHub Actions 调试

此技能帮助你在拉取请求中调试失败的 GitHub Actions 工作流。

## 过程

1. Use the `list_workflow_runs` tool to look up recent workflow runs for the pull request and their status
2. Use the `summarize_job_log_failures` tool to get an AI summary of the logs for failed jobs
3. If you need more information, use the `get_job_logs` or `get_workflow_run_logs` tool to get the full failure logs
4. Try to reproduce the failure locally in your environment
5. Fix the failing build and verify the fix before committing changes

## Common issues

- **缺少环境变量**:检查是否已配置所有所需的秘密
- **版本不匹配**:验证操作版本和依赖项是否兼容
- **权限问题**:确保工作流具有必要的权限
- **超时问题**:考虑将长时间运行的任务拆分或增加超时值

使用技能作为斜线命令

技能可以作为聊天中的斜线命令使用,提示文件。输入 输入:/在聊天输入框中查看可用技能和提示,并选择一个技能来调用它。

您可以在斜线命令后添加额外的上下文。例如,/webapp测试 登录页面/GitHub Actions 调试 PR #42输入:.

默认情况下,所有技能都显示在输入:/菜单。使用用户可调用禁用模型调用前 matter 属性控制每个技能的访问方式:

配置 斜线命令 由Copilot自动加载 使用案例
默认(均省略属性) 是的 是的 通用技能
用户可调用:否 是的 模型在相关时加载的背景知识技能
禁用模型调用:真 是的 技能你只希望按需运行
两者都设置 禁用技能

Copilot如何使用技能

技能使用渐进式披露,在需要时高效加载内容。这个三级加载系统确保您可以在不消耗上下文的情况下安装许多技能:

第1级:技能发现

Copilot通过阅读他们的技能来了解哪些技能是可用的名字描述从 YAML 前置信息中获取。此元数据轻量级,有助于 Copilot 决定哪些技能与您的请求相关。

第2级:说明加载中

当您的请求与某项技能的描述匹配时,Copilot 会加载SKILL.md将文件主体放入其上下文中。只有这样,详细说明才会可用。您还可以直接使用技能调用。输入:/在聊天中输入斜线命令。

第3级:资源访问

Copilot仅在需要时访问技能目录中的附加文件(脚本、示例、文档)。这些资源在 Copilot 参考它们之前不会加载,从而保持上下文的高效性。

这种架构意味着技能既可以基于你的提示自动激活,也可以通过斜线命令手动调用。你可以安装许多技能,而 Copilot 只会加载每个任务相关的技能。

使用共享技能

您可以使用其他人创建的技能来增强 Copilot 的功能。 github/awesome-copilot 仓库包含一个不断增长的社区技能、自定义代理、说明和提示的集合。 anthropics/skills 仓库包含额外的参考技能。

要使用共享技能:

  1. 浏览仓库中可用的技能
  2. 复制技能目录到你的.github/技能/文件夹
  3. 查看并自定义SKILL.md文件以满足您的需求
  4. 可选地,根据需要修改或添加资源
小贴士

在使用共享技能之前,始终进行审查以确保它们符合您的要求和安全标准。VS Code 的终端工具 提供了脚本执行的控制选项,包括 自动批准选项,并具有可配置的允许列表和对运行代码的严格控制。了解更多关于自动批准功能的安全考虑

贡献来自扩展的技能

扩展可以使用技能贡献聊天技能贡献点在他们的package.json路径必须指向包含一个的目录SKILL.md 文件,遵循 代理技能规范

所需文件夹结构

技能目录必须遵循以下结构:

extension-root/
└── skills/
    └── my-skill/           # 目录名必须与 SKILL.md 中的 `name` 字段匹配
        └── SKILL.md         # 必需

在 package.json 中注册该技能

添加聊天技能在你的扩展中的贡献点package.json路径属性必须指向包含一个的目录SKILL.md文件:

{
  "贡献": {
    "聊天技能": [
      {
        "路径": "./技能/我的技能"
      }
    ]
  }
}
重要

名字领域在SKILL.md前 matter必须与父目录名称匹配。例如,如果目录是技能/我的技能/,这个名字字段必须是我的技能如果名称不匹配,则技能未加载。

SKILL.md 文件格式与 项目和个人技能相同。例如:

---
名称: 我的技能
描述: 技能的效果以及何时使用。
---

# 我的技能

详细说明该技能的使用方法...

代理技能标准

Agent Skills 是一种开放标准,可实现不同 AI 代理之间的可移植性。您在 VS Code 中创建的技能可以与多个代理一起使用,包括:

  • GitHub Copilot 在 VS Code 中:支持聊天和代理模式
  • GitHub Copilot CLI:在终端中工作时可访问
  • GitHub Copilot 编码助手:用于自动化编码任务

了解更多关于代理技能标准的信息,请访问 agentskills.io.