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自定义备忘单。