现已推出!阅读 10 月份的新功能和修复。

VS Code 中 GitHub Copilot 的自定义指令

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

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

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

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

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

自定义指令由自然语言指令组成,应简短、自成一体的语句,以补充聊天问题并添加上下文或相关信息。

定义代码生成自定义指令

Copilot 可以帮助您生成代码,例如作为重构、生成单元测试或实现功能的一部分。您可能希望在项目中使用特定的库,或者希望对 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 自动获取此文件。

注意

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 目录。

    提示

    在 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.

定义自定义指令的技巧

  • 保持指令简短且自成一体。每个指令都应是一个简单、单独的语句。如果您需要提供多个信息,请使用多个指令。

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

  • 定义特定于语言的指令,以便为每种语言获得更准确的生成代码。

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

设置

  • github.copilot.chat.codeGeneration.instructions : 一组添加到 Copilot 请求中的指令,这些指令会生成代码。
  • github.copilot.chat.codeGeneration.useInstructionFiles : 控制是否将来自 .github/copilot-instructions.md 的代码指令添加到 Copilot 请求中。
  • github.copilot.chat.testGeneration.instructions : 一组添加到生成测试的 Copilot 请求的指令。