VS Code 中 GitHub Copilot 的自定义指令

您可以通过提供有关团队工作流程、工具或项目细节的上下文信息来增强Copilot的聊天响应。无需在每次聊天查询中手动包含此上下文,您可以创建一个自定义指令文件,该文件会自动将此类信息包含在每次聊天请求中。

Copilot 将这些指令应用于聊天视图、快速聊天或内联聊天中的聊天提示。这些指令不会在聊天中显示,而是由 VS Code 传递给 Copilot。

您可以为特定目的指定自定义指令:

  • 代码生成指令 - 提供生成代码的特定上下文。例如,您可以指定私有变量应始终以下划线为前缀,或者单例应以某种方式实现。您可以在设置中或在工作区中的Markdown文件中指定代码生成指令。

  • 测试生成指令 - 提供用于生成测试的特定上下文。例如,您可以指定所有生成的测试都应使用特定的测试框架。您可以在设置中或在工作区中的Markdown文件中指定测试生成指令。

  • 代码审查说明 - 提供针对审查当前编辑器选择的特定上下文。例如,您可以指定审查者应在代码中查找特定类型的错误。您可以在设置中或工作区中的Markdown文件中指定审查选择的说明。

  • 提交信息生成说明 - 提供用于生成提交信息的特定上下文。您可以在设置中指定提交信息生成说明,或在工作区中的Markdown文件中指定。

自定义指令由自然语言指令组成,应该是简短的、自包含的陈述,用于为聊天问题添加上下文或相关信息。

定义代码生成自定义指令

Copilot 可以帮助你生成代码,例如作为重构的一部分,生成单元测试,或实现一个功能。你可能希望在项目中使用特定的库,或者希望 Copilot 生成的代码遵循特定的编码风格。

Note

Copilot 不适用于 代码补全 的代码生成指令。

使用设置

您可以通过使用github.copilot.chat.codeGeneration.instructions设置来配置自定义代码生成指令。您可以在用户或工作区级别定义自定义指令,还可以指定特定语言的指令。获取更多关于语言特定设置的信息。

以下代码片段展示了如何在settings.json文件中定义一组指令。要直接在设置中定义指令,请配置text属性。要引用外部文件,请配置file属性。

  "github.copilot.chat.codeGeneration.instructions": [
    {
      "text": "Always add a comment: 'Generated by Copilot'."
    },
    {
      "text": "In TypeScript always use underscore for private field names."
    },
    {
      "file": "code-style.md" // import instructions from file `code-style.md`
    }
  ],

code-style.md 文件内容的一个示例:

Always use React functional components.

Always add comments.

使用 .github/copilot-instructions.md 文件

你也可以在你的工作区或仓库中存储自定义指令,放在.github/copilot-instructions.md文件中,并让VS Code自动识别这个文件。

如果你在.github/copilot-instructions.md文件和设置中都定义了自定义指令,Copilot会尝试结合来自这两个来源的指令。

Note

Visual Studio 中的 GitHub Copilot 也会检测到 .github/copilot-instructions.md 文件。如果您有一个在 VS Code 和 Visual Studio 中都使用的工作区,您可以使用相同的文件为两个编辑器定义自定义指令。

  1. github.copilot.chat.codeGeneration.useInstructionFiles设置设为true,以指示VS Code中的Copilot使用自定义指令文件。

  2. 在工作区的根目录下创建一个.github/copilot-instructions.md文件。如果需要,首先创建一个.github目录。

    Tip

    在VS Code的资源管理器视图中,您可以通过输入完整路径作为文件名来创建文件夹并直接在一个操作中完成。

  3. 向文件中添加自然语言指令。您可以使用Markdown格式。

    指令之间的空白会被忽略,因此指令可以写成一个段落,每个指令在新的一行,或者用空行分隔以提高可读性。

定义测试生成自定义指令

你可以使用Copilot为你的代码生成测试,例如通过在聊天视图中使用@workspace /tests提示。你可以定义自定义指令,以帮助Copilot生成特定于你的项目和开发工作流程的测试。

要配置自定义测试生成指令,请使用 github.copilot.chat.testGeneration.instructions 设置。您可以在用户或工作区级别定义自定义指令。

以下代码片段展示了如何在settings.json文件中定义一组指令。要直接在设置中定义指令,请配置text属性。要引用外部文件,请配置file属性。

  "github.copilot.chat.testGeneration.instructions": [
    {
      "text": "Always use vitest for testing React components."
    },
    {
      "text": "Use Jest for testing JavaScript code."
    },
    {
      "file": "code-style.md" // import instructions from file `code-style.md`
    }
  ],

code-style.md 文件内容的一个示例:

Always add code comments.

Always use React functional components.

定义代码审查自定义指令

你可以使用Copilot来审查编辑器中的代码选择。你可以定义自定义指令,以帮助Copilot考虑与你的项目和开发工作流程相关的特定代码审查标准。

要配置自定义代码审查指令,请使用 github.copilot.chat.reviewSelection.instructions 设置。您可以在用户或工作区级别定义自定义指令。

定义提交消息生成自定义指令

在源代码控制视图中,您可以使用Copilot为待处理的代码更改生成提交信息。您可以定义自定义指令,以帮助Copilot生成考虑到特定格式和结构的提交信息,这些格式和结构特定于您的项目和开发工作流程。

要配置自定义提交消息生成指令,请使用 github.copilot.chat.commitMessageGeneration.instructions 设置。您可以在用户或工作区级别定义自定义指令。

定义自定义指令的提示

  • 保持你的指令简短且自包含。每个指令应该是一个单一的、简单的陈述。如果你需要提供多条信息,请使用多条指令。

  • 不要在指令中引用外部资源,例如特定的编码标准。

  • 通过将您的指令存储在外部文件中,使与团队或跨项目共享自定义指令变得容易。您还可以对文件进行版本控制,以跟踪随时间的变化。

设置

  • github.copilot.chat.codeGeneration.instructions : 一组将添加到生成代码的Copilot请求中的指令。
  • github.copilot.chat.codeGeneration.useInstructionFiles (预览): 控制是否将来自 .github/copilot-instructions.md 的代码指令添加到 Copilot 请求中。
  • github.copilot.chat.testGeneration.instructions : 一组将添加到生成测试的Copilot请求中的指令。
  • github.copilot.chat.reviewSelection.instructions (预览): 一组指令,将添加到Copilot请求中,用于审查当前编辑器选择的内容。
  • github.copilot.chat.commitMessageGeneration.instructions : 一组将添加到生成提交消息的Copilot请求中的指令。