Skip to main content

为 GitHub Copilot CLI 添加自定义说明

提供 Copilot 有关如何理解你的项目以及如何构建、测试和验证其更改的额外背景信息。

          GitHub Copilot 如果提供了足够的上下文,它可以根据个人偏好、团队的工作方式、你使用的工具或项目的具体信息来定制响应。 可以创建自定义说明,自动为你添加此信息,而不是重复将此上下文详细信息添加到提示中。 附加信息虽然不会显示,但可供Copilot使用,以便生成更高质量的响应。

自定义说明的类型

          GitHub Copilot CLI 支持以下类型的自定义指令。

代码库范围的自定义指令

这些请求适用于存储库上下文中发出的所有请求。

这些在存储库根目录的 copilot-instructions.md 目录中的 .github 文件中指定。 请参阅创建全仓库内的自定义指令

路径特定的自定义说明

这些适用于在与指定路径匹配的文件上下文中发出的请求。

这些文件在存储库根目录的 NAME.instructions.md 目录或当前工作目录中的 .github/instructions 目录中或以下的一个或多个 .github/instructions 文件中指定。 请参阅创建路径特定的自定义指令

如果在这些说明中指定的路径与正在处理的文件 Copilot 匹配,并且还存在存储库范围的自定义指令文件,则使用这两个文件中的说明。 应避免指令之间的潜在冲突,因为 Copilot冲突指令之间的选择是不确定的。

智能体说明

各款 AI 智能体会使用这些指令。

可以创建一个或多个 AGENTS.md 文件。 这些目录可以位于存储库的根目录、当前工作目录或环境变量中 COPILOT_CUSTOM_INSTRUCTIONS_DIRS 以逗号分隔的路径列表指定的任何目录中。

          `AGENTS.md`根目录中的指令(如果找到)被视为主要指令。 如果在存储库的根目录中找到 `AGENTS.md` 文件和 `.github/copilot-instructions.md` 文件,则使用这两个文件中的说明。

在其他 AGENTS.md 文件中找到的说明被视为其他说明。 发现的任何主要指令都可能比 Copilot其他指令对响应产生更大的影响。

有关详细信息,请参阅 agentsmd/agents.md 存储库

或者,可以使用 CLAUDE.mdGEMINI.md 文件。 这些属性必须位于存储库的根目录中。

本地说明

这些应用在特定本地环境中。

可以在自己的主目录中通过创建文件$HOME/.copilot/copilot-instructions.md来指定指令。

还可以将 COPILOT_CUSTOM_INSTRUCTIONS_DIRS 环境变量设置为逗号分隔的目录列表。 Copilot CLI 将在这些目录中的每一个中查找一个 AGENTS.md 文件和任何 .github/instructions/**/*.instructions.md 文件。

创建全仓库内的自定义指令

  1. 在存储库的根目录中,创建名为 .github/copilot-instructions.md 的文件。

    创建 .github 目录(如果尚不存在)。

  2. 以 Markdown 格式在该文件中添加自然语言说明。

    系统会忽略说明信息间的空格,因此可将信息编写为一个段落,每个段落位于一行上,或用空白行分隔,以保持其可读性。

    有关编写有效自定义说明的帮助,请参阅 关于自定义GitHub Copilot 响应

创建路径特定的自定义指令

  1. 如果尚无 .github/instructions 目录,则创建该目录。

  2. (可选)创建用于组织指令文件的子目录 .github/instructions

  3. 创建一个或多个 NAME.instructions.md 文件,其中 NAME 指示指令的用途。 文件名必须以 .instructions.md 结尾。

  4. 在文件开头,创建包含 applyTo 关键字的前辅文块。 使用 glob 语法指定指令应用于的文件或目录。

    例如:

    ---
    applyTo: "app/models/**/*.rb"
    ---
    

    可以通过用逗号分隔多个模式来指定这些模式。 例如,若要将指令应用于仓库中的所有 TypeScript 文件,可以使用以下前辅文块:

    ---
    applyTo: "**/*.ts,**/*.tsx"
    ---
    

    Glob 示例:

    •      `*` - 会匹配当前目录中的所有文件。
      
    •      `**` 或 `**/*` - 均会匹配所有目录中的所有文件。
      
    •      `*.py` - 将匹配当前目录中的所有 `.py` 文件。
      
    •      `**/*.py` - 将以递归方式匹配所有目录中的所有 `.py` 文件。
      
    •      `src/*.py` - 将匹配 `.py` 目录中所有 `src` 文件。 例如,`src/foo.py`和`src/bar.py`但_不_`src/foo/bar.py`。
      
    •      `src/**/*.py` - 将以递归方式匹配目录中的所有 `.py` 文件 `src` 。 例如 、 `src/foo.py``src/foo/bar.py`和 `src/foo/bar/baz.py`。
      
    •      `**/subdir/**/*.py` - 将以递归方式匹配任何深度目录中所有`.py`文件。 例如,`subdir/foo.py`、`subdir/nested/bar.py`、`parent/subdir/baz.py`和`deep/parent/subdir/nested/qux.py`_,但不_`foo.py`位于不包含`subdir`目录的路径。
      
  5. 或者,为了防止文件被 Copilot云代理 或 Copilot代码评审 使用,将 excludeAgent 关键字添加到 frontmatter 区块中。 使用 "code-review""cloud-agent"

    例如,以下文件将仅由 Copilot云代理 读取。

    ---
    applyTo: "**"
    excludeAgent: "code-review"
    ---
    

    如果在 front matterblock 中不包括关键字 excludeAgent,则 Copilot代码评审 和 Copilot云代理 都将使用您的说明。

  6. 使用 Markdown 格式以自然语言添加自定义指令。 系统会忽略说明信息间的空格,因此可将信息编写为一个段落,每个段落位于一行上,或用空白行分隔,以保持其可读性。

你是否已成功将自定义指令文件添加到你的仓库中?

          <a href="https://docs.github.io/success-test/yes.html" target="_blank" class="btn btn-outline mt-3 mr-3 no-underline">
          <span>是</span></a><a href="https://docs.github.io/success-test/no.html" target="_blank" class="btn btn-outline mt-3 mr-3 no-underline"><span>否</span></a>

正在使用的自定义说明

文件(s)中的说明可在保存文件后立即使用 Copilot 。 指令会自动添加到您提交给Copilot的请求中。

如果在 CLI 会话期间对自定义说明进行更改,则在当前或将来的会话中下次提交提示时,这些更改将可供使用 Copilot 。

延伸阅读

  •         [AUTOTITLE](/copilot/reference/custom-instructions-support)
    
  •         [AUTOTITLE](/copilot/tutorials/customization-library/custom-instructions) — 精选的示例集合
    
  •         [AUTOTITLE](/copilot/tutorials/use-custom-instructions)