跳至主要内容

自定义代理配置

配置自定义代理的参考。

此参考文章提供了自定义代理的详细配置信息。有关创建自定义代理的一般信息,请参阅 为 Copilot 云代理创建自定义代理

注意

自定义代理目前在 JetBrains IDE、Eclipse 和 Xcode 中公开预览,且可能会更改。

YAML 前置属性

下表列出了您在 GitHub.com、Copilot CLI 和受支持的 IDE(除另有说明外)中可以为代理配置文件配置的属性。属性描述中会注明任何特定环境的行为。配置文件的名称(去除 .md.agent.md)用于在不同层级之间进行去重,以便最低层级的配置具有最高优先级。

属性类型用途
namestring自定义代理的显示名称。可选。
description必需 string自定义代理的目的和功能描述
targetstring自定义代理的目标环境或上下文(vscodegithub-copilot)。如果未设置,则默认在两个环境中均可用。
tools字符串列表,字符串自定义代理可以使用的工具名称列表。支持逗号分隔的字符串和 yaml 字符串数组两种格式。如果未设置,默认使用所有工具。参见 工具
modelstring自定义代理执行时使用的模型。如果未设置,则继承默认模型。
disable-model-invocationboolean阻止 Copilot 云代理根据任务上下文自动使用此自定义代理。当设置为 true 时,必须手动选择该代理。将 disable-model-invocation: true 等同于 infer: false。如果两者均被设置,disable-model-invocation 优先。如果未设置,默认值为 false
user-invocableboolean控制用户是否可以选择此自定义代理。当设置为 false 时,用户无法手动选择,只能通过编程方式访问。如果未设置,默认值为 true
inferboolean已废弃。请改用 disable-model-invocationuser-invocable。该属性用于让 Copilot 云代理根据任务上下文自动使用此自定义代理。当设置为 false 时,必须手动选择代理。如果未设置,默认值为 true
mcp-serversobject应由自定义代理使用的额外 MCP 服务器和工具。在 VS Code 以及其他 IDE 的自定义代理中不使用。
metadata对象,由名称和值对组成,均为字符串允许为代理添加有用的数据注解。在 VS Code 以及其他 IDE 的自定义代理中不使用。

在 YAML 前置属性下方的 Markdown 内容中定义代理的行为、专长和指令。提示的最大长度为 30,000 个字符。

注意

  • VS Code 和其他 IDE 自定义代理的 argument-hinthandoffs 属性目前不支持 GitHub.com 上的 Copilot 云代理。为确保兼容性,这些属性将被忽略。
  • 有关 VS Code 中自定义代理文件结构的更多信息,请参阅 VS Code 文档中的 VS Code 中的自定义代理

工具

自定义代理的 tools 属性决定哪些工具对您的代理可用,包括来自 MCP 服务器的工具。

您的自定义代理可以访问在其代理配置文件和/或仓库设置中配置的 MCP 服务器工具。有关在仓库中为云代理配置 MCP 服务器的更多信息,请参阅 使用模型上下文协议 (MCP) 扩展 GitHub Copilot 云代理

您可以通过以下方式配置 tools

  • 启用所有可用工具:完全省略 tools 属性,或使用 tools: ["*"] 来启用所有可用工具。这将包括在代理配置文件和/或仓库设置中配置的所有 MCP 服务器工具。
  • 启用特定工具:提供特定工具名称或别名的列表(例如 tools: ["read", "edit", "search"]),仅启用这些工具。可用的工具别名请参见下文 工具别名
    • 请注意,如果您的仓库已配置 MCP 服务器,您可以仅为自定义代理提供这些服务器中的特定工具。特定 MCP 服务器的工具名称可以使用服务器名称加斜杠(/)作为前缀。例如 some-mcp-server/some-tool
    • 您也可以使用 some-mcp-server/* 明确启用某一 MCP 服务器的全部工具。
    • 来自 VS Code 扩展的工具可以使用扩展名称作为代理,例如 azure.some-extension/some-tool
  • 禁用所有工具:使用空列表(tools: [])来禁用代理的所有工具。

所有未识别的工具名称都会被忽略,这允许在代理配置文件中指定特定产品的工具而不会导致问题。

工具别名

以下工具别名可用于自定义代理。所有别名均不区分大小写。

主要别名兼容别名云代理映射用途
executeshell, Bash, powershellShell 工具:bashpowershell在对应操作系统的 Shell 中执行命令。
读取Read, NotebookReadview读取文件内容。
editEdit, MultiEdit, Write, NotebookEdit编辑工具:例如 str_replacestr_replace_editor允许大语言模型进行编辑。具体参数可能有所不同。
searchGrep, Globsearch搜索文件或文件中的文本。
agentcustom-agent, Task“自定义代理”工具允许调用另一个自定义代理来完成任务。
webWebSearch, WebFetch目前不适用于云代理。允许从 URL 获取内容并执行网络搜索。
todoTodoWrite目前不适用于云代理。创建并管理结构化任务列表。当前云代理不支持,但在 VS Code 中受支持。

“开箱即用” MCP 服务器的工具名称

以下 MCP 服务器已为 Copilot 云代理开箱即用,可通过命名空间进行引用。

MCP 服务器名称可用工具
github所有只读工具默认均可用,但服务器收到的 token 仅限于源仓库。github/* 包含全部工具,或者您可以使用 github/<tool name>,其中 <tool name> 来自该 MCP 服务器的文档。
playwright所有 playwright 工具默认均可用,但服务器配置为只能访问 localhost。playwright/* 包含全部工具,或者使用 playwright/<tool name><tool name> 同样取自 MCP 服务器文档)。默认情况下,其 token 的访问范围被限制在源代码仓库。

MCP 服务器配置详情

下面的示例代理配置展示了一个配置了 MCP 服务器和机密的代理。同时,仅在 YAML 前置属性的 tools 中启用了该 MCP 服务器的一个工具。

---
name: my-custom-agent-with-mcp
description: Custom agent description
tools: ['tool-a', 'tool-b', 'custom-mcp/tool-1']
mcp-servers:
  custom-mcp:
    type: 'local'
    command: 'some-command'
    args: ['--arg1', '--arg2']
    tools: ["*"]
    env:
      ENV_VAR_NAME: ${{ secrets.COPILOT_MCP_ENV_VAR_VALUE }}
---

Prompt with suggestions for behavior and output

代理配置文件中的 mcp-servers 属性是用于为 Copilot 云代理配置 MCP 服务器的 JSON 配置格式的 YAML 表示。

大多数子属性与 JSON 表示相同。下面的章节描述了 Copilot 云代理中 MCP 配置的初始实现与自定义代理相关的更改。有关 JSON 配置格式的更多信息,请参阅 使用模型上下文协议 (MCP) 扩展 GitHub Copilot 云代理

MCP 服务器类型

出于兼容性考虑,Claude Code 和 VS Code 使用的 stdio 类型映射为云代理的 local 类型。

MCP 服务器环境变量和机密

注意

如果您的 MCP 服务器需要机密或环境变量,则必须在每个使用该自定义代理的仓库的 Copilot 环境中进行配置。有关设置环境变量的更多信息,请参阅 自定义 GitHub Copilot 云代理的开发环境

自定义代理的 MCP 配置支持与现有仓库级 MCP 配置相同的环境变量和机密替换功能。与仓库级配置类似,机密和变量可以来源于仓库设置中的 “copilot” 环境。引用这些值的语法已扩展,以支持 GitHub Actions 和 Claude Code 中常见的模式。

仓库级 MCP JSON 配置和自定义代理 YAML 配置均支持以下语法模式:

  • $COPILOT_MCP_ENV_VAR_VALUE - 环境变量和标题
  • ${COPILOT_MCP_ENV_VAR_VALUE} - 环境变量和标题(Claude Code 语法)
  • ${COPILOT_MCP_ENV_VAR_VALUE:-default} - 带默认值的环境变量和标题

自定义代理 YAML 配置还支持以下额外语法模式:

  • ${{ secrets.COPILOT_MCP_ENV_VAR_VALUE }} - 环境变量和标题
  • ${{ vars.COPILOT_MCP_ENV_VAR_VALUE }} - 环境变量和标题

示例代理配置文件

以下示例演示了在编写测试或规划项目实现等常见任务时,代理配置文件可能的样子。更多灵感请参阅自定义库中的 自定义代理 示例。您还可以在 awesome-copilot 社区集合中找到更具体的示例。

测试专家

此示例通过省略 tools 属性来启用所有工具。

Text
---
name: test-specialist
description: Focuses on test coverage, quality, and testing best practices without modifying production code
---

You are a testing specialist focused on improving code quality through comprehensive testing. Your responsibilities:

- Analyze existing tests and identify coverage gaps
- Write unit tests, integration tests, and end-to-end tests following best practices
- Review test quality and suggest improvements for maintainability
- Ensure tests are isolated, deterministic, and well-documented
- Focus only on test files and avoid modifying production code unless specifically requested

Always include clear test descriptions and use appropriate testing patterns for the language and framework.

实现规划师

此示例仅启用了一部分工具。

Text
---
name: implementation-planner
description: Creates detailed implementation plans and technical specifications in markdown format
tools: ["read", "search", "edit"]
---

You are a technical planning specialist focused on creating comprehensive implementation plans. Your responsibilities:

- Analyze requirements and break them down into actionable tasks
- Create detailed technical specifications and architecture documentation
- Generate implementation plans with clear steps, dependencies, and timelines
- Document API designs, data models, and system interactions
- Create markdown files with structured plans that development teams can follow

Always structure your plans with clear headings, task breakdowns, and acceptance criteria. Include considerations for testing, deployment, and potential risks. Focus on creating thorough documentation rather than implementing code.

自定义代理的处理

自定义代理名称

在出现命名冲突的情况下,最低层级的配置会覆盖更高层级的配置。这意味着仓库级代理优先于组织级代理,组织级代理又优先于企业级代理。

版本控制

自定义代理的版本基于代理配置文件的 Git 提交 SHA。这使您能够根据需要创建分支或标签来管理不同版本的自定义代理。当您将自定义代理分配给任务时,将使用该仓库及其分支上最新的代理配置文件版本实例化代理。当代理创建拉取请求时,拉取请求内部的交互也使用相同版本的自定义代理,以保持一致性。

工具处理

tools 列表用于过滤提供给代理的工具集合——无论是内置工具还是来自 MCP 服务器的工具。当您在代理配置文件中配置工具时,其行为取决于您指定的内容。

  • 如果未指定任何工具,则默认启用所有可用工具。
  • 空工具列表(tools: [])会禁用所有工具。
  • 特定列表(tools: [...])仅启用列出的工具。

MCP 服务器配置

对于 MCP 服务器配置,存在一个特定的处理顺序以确保正确的覆盖行为:首先处理开箱即用的 MCP 配置(如 GitHub MCP),随后是自定义代理的 MCP 配置,最后是通过仓库设置指定的 MCP 配置。这样每一层级都可以在适当情况下覆盖前一层级的设置。

延伸阅读

© . This site is unofficial and not affiliated with GitHub, Inc.