Skip to main content
Skip to content

比较Copilot自定义功能

选择正确的方法,提供 Copilot 指导、专业知识和工具访问权限。

Introduction

可以自定义 Copilot 以遵循约定、执行可重复工作流或连接到代码库以外的系统。

本文介绍以下两者之间的差异:

  • 自定义指令

    这些指示Copilot一般的行为准则。 例如,为了确保它编写的代码遵循编码标准。 了解详细信息。

  • 代理技能

    这些说明 Copilot如何处理特定类型的任务。 例如,在起草发行说明时,要遵循团队的过程。 了解详细信息。

  • 工具

    这些 提供能力。 例如,用于查找和修改文件,或者用于与部分 GitHub文件进行交互。 了解详细信息。

  • MCP 服务器

    这些添加了工具集,允许 Copilot 与外部服务交互。 了解详细信息。

  • 钩子

    通过这些,可以在代理工作流中的特定点运行自己的逻辑。 例如,可以在代理使用工具之前运行脚本。 了解详细信息。

  • 子代理

    它们独立于主代理 执行委托工作。 他们有自己的对话上下文,因此他们的中间工作不会填充主代理的上下文窗口。 了解详细信息。

  • 自定义代理

    这些定义专门的角色,其中包含特定任务的说明和工具。 例如,自定义代理可以充当 React 审阅者、文档编写器或测试生成器。 了解详细信息。

  • 扩展

    这些 是在代码中实现的附加功能。 例如,Copilot CLI 扩展可以添加一个用于跟踪会话活动的工具。 了解详细信息。

  • 插件

    这些 包 可以提供预配置的自定义,例如技能、挂钩、自定义代理和 MCP 服务器。 了解详细信息。

不同表面之间的支持和配置有所不同。 有关支持比较,请参阅 Copilot自定义备忘单。

自定义说明

Copilot CLI、Copilot cloud agent、Copilot code review、Copilot Chat 和 GitHub.com 在 GitHub Copilot app 上以及受支持的 IDE 中均支持自定义说明。 可用的说明类型取决于使用它们的位置。

什么是自定义说明?

自定义说明是 Copilot 在定义范围内使用的持久性指南。 例如,存储库说明可以描述项目的编码约定和测试命令,而个人说明可以描述通信首选项。

说明指导模型,但不保证它将遵循每个规则。

自定义指令可以解决哪些问题?

自定义说明可帮助你:

  • 与编码约定和首选项保持 Copilot 一致。
  • 一致地应用团队或组织标准。
  • 避免在每个提示中包含重复提醒。

何时应使用自定义说明?

使用自定义说明以实现以下目的:

  • 样式和质量规则。 例如:“优先选择小型拉取请求(Pull Request)、编写测试,并避免未经讨论就更改公共 API。”
  • 存储库约定。 例如:“使用 pnpm、将更改日志条目保留在 CHANGELOG.md 中,并在提交之前运行 pnpm test。”
  • 通信偏好设置。 例如:“简要解释权衡,然后提供建议的选择。

何时不应使用自定义说明?

在以下情况下,尽量将其保持在最低限度:

  • 你只想对某一类任务采用这种行为。 请改用技能。
  • 说明非常详细,以至于让人无法专注于当前任务。 使用技能或自定义代理获取专门指导。

详细了解自定义说明

代理技能

代理技能在 、、、 以及 、 和 中的代理模式下受支持。

什么是技能?

技能是包含特定类型任务说明的 SKILL.md 文件的文件夹。 其名称和说明有助于 Copilot 确定何时加载这些说明。

技能还可以包括支持资源,例如代理可以运行的模板和脚本。

技能可以解决什么问题?

技能可帮助你:

  • 标准化 Copilot 在特定上下文中执行任务的方式,例如代码评审。
  • 在相关时提供说明,而无需将它们添加到每个交互中。
  • 避免使用与当前任务无关的说明填充上下文窗口。

何时应使用技能?

如果需要,请使用技能:

  • 可重复的工作流。 例如,检查前端代码更改时是否更新面向用户的文档。
  • 一致的输出格式。 例如,使用团队模板起草发行说明。
  • 一个有时需要但并非总是需要的工作流。 例如,在迁移过程中遵循详细的重构过程。

何时不应使用技能?

在以下情况下选择其他自定义项:

  • 该指导意见应广泛适用于你的工作。 请改用自定义说明。
  • 你需要访问外部系统。 使用 MCP 服务器提供工具,技能随后可以说明这些工具的用法。
  • 你需要一位具有特定工具集的可重用专家。 考虑使用自定义智能体。

详细了解代理技能

请参阅“代理技能”。

Tools

代理可在GitHub Copilot app、Copilot CLI、Copilot cloud agent和受支持的 IDE 中使用这些工具。 可用的工具和权限控件取决于界面。

什么是工具?

工具是一种能力,Copilot 使用它来完成某些操作,例如搜索文件、查看文件内容、编辑或运行命令。 某些工具内置,其他工具可以通过 MCP 服务器或扩展进行添加。

工具可以解决什么问题?

工具允许客服人员:

  • 通过读取和搜索来收集背景信息。
  • 通过编辑文件进行更改。
  • 执行命令并验证结果。

何时使用工具?

你通常不会直接调用工具。 Copilot 选择用于执行请求的工具,但须遵守你正在使用的界面的权限和控件。

当你执行以下操作时,你将看到所使用的工具:

  • 让代理搜索存储库、更新文件或运行测试。
  • 请求需要通过 MCP 服务器访问外部服务的任务。
  • 为代理提供适合委派给子代理处理的任务。

在添加集成之前,请检查代理的现有工具是否已满足你的需求。

MCP 服务器

MCP 服务器在 Copilot CLI、Copilot code review、Copilot cloud agent、Visual Studio、Visual Studio Code、JetBrains IDE系列、GitHub Copilot app、Xcode 和 Eclipse 中支持。 配置和身份验证选项取决于界面。

什么是 MCP 服务器?

MCP 服务器是一项允许 AI 应用程序(例如 Copilot)连接到外部数据源和工具的服务。

例如,可以添加 MCP 服务器,该服务器提供用于与联机日历或支持票证系统交互的工具。

MCP 服务器可以解决什么问题?

当内置工具不足时,MCP 服务器会有所帮助。 他们可以:

  • 将 Copilot 连接到外部系统。
  • 添加用于处理 API、数据库或其他服务的专用工具。
  • 提供对存储库外部信息的访问权限。

何时应使用 MCP 服务器?

如果需要,请使用 MCP 服务器:

  • 来自外部系统的信息。 例如:“本月为产品 X 创建了多少个支持工单?”
  • 另一个服务中的操作。 例如:“向支持工单添加一条评论,概述此次修复。”

何时不应使用 MCP 服务器?

当内置工具已满足需求时,请避免添加 MCP 服务器。

了解有关 MCP 服务器的详细信息

请参阅“模型上下文协议 (MCP)”。

钩子

、、 和 支持钩子。 支持的事件和控件取决于表面。

什么是挂钩?

挂钩会在代理工作流的特定节点运行您定义的 shell 命令。 例如,挂钩可以在使用工具之前或会话结束时运行。

与技能和自定义说明不同,它们通过提示引导模型,而钩子则在定义的事件处执行代码。

挂钩可以解决什么问题?

当你需要对代理操作进行更多控制时,挂钩会有所帮助,例如:

  • 在允许其运行之前检查工具请求。
  • 日志记录工具使用或会话活动。
  • 在受支持的事件上运行自定义验证。

何时应使用钩子?

如果需要,请使用挂钩:

  • 工具检查项 例如,在建议的命令运行前,先根据允许列表检查该命令。
  • 会话自动化。 例如,记录代理会话开始或结束的时间。
  • 自定义验证。 例如,检查工具请求是否会更改受保护的路径。

对你的界面使用事件和配置参考,而不是假设钩子在任何地方都保持不变。

何时不应使用挂钩?

在以下情况下选择其他自定义项:

  • 只需工作流说明即可。 使用一个技能。
  • 您需要持久的偏好设置和标准。 使用自定义指令。
  • 你需要访问外部工具。 使用 MCP 服务器。

了解有关挂钩的详细信息

子代理

子代理在 Copilot CLI、Visual Studio Code、JetBrains IDE系列、GitHub Copilot app、Xcode 和 Eclipse 中受支持。

什么是子代理?

子代理是主代理将特定工作委托给的代理。 它在自己的聊天上下文中工作,并将其结果报告回主代理。

子代理可以使用内置代理或自定义代理配置文件。 无需为每个委托任务定义自定义代理。

子代理可以解决什么问题?

子代理可帮助代理执行以下操作:

  • 通过在单独的上下文中处理子任务来保持主对话的焦点。
  • 在支持的情况下并行运行独立任务。
  • 使用自定义代理配置文件委托专业工作。

何时使用子代理?

子代理适用于:

  • 代码库探索。 例如,查找 API 中的所有终结点。
  • 命令执行。 例如,运行测试套件并汇总失败。
  • 查看更改。 例如,在主代理处理任务的另一部分时,查看暂存的更改。
  • 专业工作。 例如,将评审委托给自定义文档编写代理。

为主会话选择自定义代理,与将工作委派给它作为子代理不同。

详细了解子代理

自定义代理

自定义代理在 Copilot CLI、Visual Studio Code、Copilot cloud agent、Visual Studio、JetBrains IDE系列、GitHub Copilot app、Eclipse 和 Xcode 中受支持。 支持的配置文件属性取决于界面。

什么是自定义代理?

自定义代理定义专家角色,其中包含特定工作的说明和可用工具。 你可以将其视为 Copilot 可以采用的一种角色,例如 React 审阅者或文档编写者。

使用 YAML frontmatter 在 Markdown 文件中定义自定义代理。 其配置文件描述其用途,向其提供指令,并可以限制其可用工具。 在受支持的环境中,它还可以配置 MCP 服务器。

自定义代理可以解决哪些问题?

定制代理可在需要时提供帮助:

  • 专业指导一致地应用于特定任务。
  • 适用于不同类型的工作的不同工具集。
  • 可以为会话选择的可重用角色,也可以用于委派工作。

单独的上下文是将代理作为子代理运行的好处,而不是使用自定义代理的要求。

何时应使用自定义代理?

如果需要,请使用自定义代理:

  • 专业审阅者或助手。 例如,一个检查你们团队组件模式的 React 审阅工具。
  • 受限工具集。 例如,审阅者可以使用读取和搜索文件的工具,但不能编辑文件。
  • 统一的方法。 例如,遵循你的写作和评审标准的文档代理。

何时不应使用自定义代理?

在以下情况下选择更简单的选项:

  • 只需任务特定的说明和资源。 技能可能已经足够了。
  • 不需要专业化,默认代理将很好地执行任务。

详细了解自定义代理

Extensions

扩展在 Copilot CLI 和 GitHub Copilot app 中受支持。 下面的示例介绍适用于Copilot CLI的扩展。

什么是扩展?

扩展提供了在代码中实现的功能。 在 Copilot CLI 中,扩展是一个 JavaScript 模块,它与交互式会话一起运行,可以添加工具、斜杠命令和会话感知行为。

这些扩展不同于 IDE 扩展和已停用的基于 GitHub App 的 Copilot Extensions 集成。

扩展可以解决哪些问题?

扩展使你可以构建仅靠说明或配置无法实现的能力。 例如,Copilot CLI 扩展程序可以在工具调用之间保持状态,并通过自定义工具使其可用。

何时应使用扩展?

如果需要,请使用扩展程序:

  • 你自己的会话感知工具。 例如,跨一个 Copilot CLI 会话跟踪工具调用计时,并向代理公开总计。
  • 由代码支持的斜杠命令。 例如,添加一个命令,用于汇总 Copilot CLI 会话期间收集的信息。

何时不应使用扩展?

在以下情况下选择其他自定义项:

  • 说明和资源已足够。 施放一个技能。
  • 现有的 MCP 服务器提供所需的外部工具。
  • 你只需在预定义事件发生时运行一个命令。 使用挂钩。

详细了解扩展

请参阅“GitHub Copilot扩展”。

Plugins

插件在 Copilot CLI、Copilot cloud agent、Visual Studio Code 和 GitHub Copilot app 中受支持。 插件支持的组件取决于表面。

什么是插件?

插件是一个可安装包,可提供一系列功能。 例如,它可以包括技能、自定义代理、钩子和 MCP 服务器配置。

插件可打包自定义内容,但并不替代它们各自的用途。

插件可以解决什么问题?

插件可帮助你:

  • 添加相关功能,而无需单独配置每个部分。
  • 将一组自定义项分发给团队或公众。
  • 无需手动复制文件即可安装和更新自定义项。

何时应使用插件?

在以下情况下使用插件:

  • 你想要适用于整个团队的捆绑包。 例如,共享事件响应技能、评审代理和内部服务的 MCP 服务器配置。
  • 你想要一起安装和维护相关功能。

何时不应使用插件?

在以下情况下,从单个自定义开始:

  • 在本地进行试验,不需要分发。
  • 只需一个小工作流。 单个技能可能更简单。

了解有关插件的详细信息

请参阅“用于 GitHub Copilot 的插件”。

综合考虑:选择合适的方案

从能够解决您的问题的最小自定义项开始。 这些功能可以协同工作:技能可以描述使用 MCP 工具的工作流,插件可以分发这两者。

要求从...开始
我希望Copilot遵循我们的仓库约定。自定义说明
我需要特定类型的任务的可重复工作流。代理技能
我希望代理搜索存储库、更改文件或运行测试。其现有工具
我需要外部服务提供的工具。一个 MCP 服务器
我希望围绕工具使用和会话事件建立检查机制或实现自动化。钩子
我希望将重点子任务与主对话分开处理。子代理
我想要一个具有特定方法和工具集的可复用专家。自定义代理
我需要在 Copilot CLI 中构建自己的会话感知工具。扩展
我想同时安装或共享相关的自定义项。插件

后续步骤

有关配置位置和表面支持,请参阅 Copilot自定义备忘单。