VS Code 中 GitHub Copilot 的自定义指令
您可以通过提供有关团队的工作流程、工具或项目细节的上下文详细信息来增强 Copilot 的聊天响应。无需在每次聊天查询中手动包含此上下文,您可以创建一个自定义指令文件,该文件会在每次聊天请求中自动包含此信息。
Copilot 将这些指令应用于“聊天”视图、“快速聊天”或“内联聊天”中的聊天提示。这些指令不会显示在聊天中,而是由 VS Code 传递给 Copilot。
您可以为特定目的指定自定义指令
-
代码生成指令 - 提供特定于生成代码的上下文。例如,您可以指定私有变量应始终以 underscore 为前缀,或者单例应以某种方式实现。您可以在设置中或工作区中的 Markdown 文件中指定代码生成指令。
-
测试生成指令 - 提供特定于生成测试的上下文。例如,您可以指定所有生成的测试都应使用特定的测试框架。您可以在设置中或工作区中的 Markdown 文件中指定测试生成指令。
-
代码审查指令 - 提供特定于审查当前编辑器选择的上下文。例如,您可以指定审查者应查找代码中特定类型的错误。您可以在设置中或工作区中的 Markdown 文件中指定审查选择指令。
-
提交消息生成指令 - 提供特定于生成提交消息的上下文。您可以在设置中或工作区中的 Markdown 文件中指定提交消息生成指令。
自定义指令由自然语言指令组成,并且应该是简短、独立的语句,用于添加上下文或相关信息以补充聊天问题。
定义代码生成自定义指令
Copilot 可以帮助您生成代码,例如作为重构、生成单元测试或实现功能的一部分。您可能希望在项目中使用特定的库,或者希望 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 自动拾取此文件。
如果您在 .github/copilot-instructions.md
文件和设置中都定义了自定义指令,Copilot 将尝试合并来自两个来源的指令。
Visual Studio 中的 GitHub Copilot 也会检测 .github/copilot-instructions.md
文件。如果您有一个在 VS Code 和 Visual Studio 中都使用的工作区,则可以使用同一文件为两个编辑器定义自定义指令。
-
将 github.copilot.chat.codeGeneration.useInstructionFiles 设置为
true
,以指示 VS Code 中的 Copilot 使用自定义指令文件。 -
在工作区的根目录中创建一个
.github/copilot-instructions.md
文件。如果需要,请先创建一个.github
目录。提示在 VS Code 的“资源管理器”视图中,您可以通过键入完整路径作为文件名,在一个操作中创建文件夹和文件。
-
将自然语言指令添加到文件中。您可以使用 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 设置。您可以在用户或工作区级别定义自定义指令。
定义自定义指令的提示
-
保持您的指令简短且独立。每个指令都应该是一个简单的语句。如果您需要提供多条信息,请使用多条指令。
-
不要在指令中引用外部资源,例如特定的编码标准。
-
通过将您的指令存储在外部文件中,可以轻松地与您的团队或跨项目共享自定义指令。您还可以对该文件进行版本控制,以跟踪随时间的变化。
可重用的提示文件 (实验性)
提示文件(提示)允许您构建和共享带有附加上下文的可重用提示指令。提示文件是一个 Markdown 文件,它模仿了在 Copilot Chat 中编写提示的现有格式(例如,Rewrite #file:x.ts
)。这允许混合自然语言指令、附加上下文,甚至链接到其他提示文件作为依赖项。
虽然自定义指令有助于为每个 AI 工作流程添加代码库范围的上下文,但提示文件允许您为特定的聊天交互添加指令。
常见用例包括
- 代码生成:为组件、测试或迁移创建可重用提示(例如,React 表单或 API 模拟)。
- 领域专业知识:通过提示共享专业知识,例如安全实践或合规性检查。
- 团队协作:记录模式和指南,并参考规范和文档。
- 入职:为复杂流程或特定于项目的模式创建分步指南。
提示文件示例
-
react-form.prompt.md
- 记录用于生成表单的可重用任务Your goal is to generate a new React form component. Ask for the form name and fields if not provided. Requirements for the form: - Use form design system components: [design-system/Form.md](../docs/design-system/Form.md) - Use `react-hook-form` for form state management: - Always define TypeScript types for your form data - Prefer *uncontrolled* components using register - Use `defaultValues` to prevent unnecessary rerenders - Use `yup` for validation: - Create reusable validation schemas in separate files - Use TypeScript types to ensure type safety - Customize UX-friendly validation rules
-
security-api.prompt.md
- 记录 REST API 的可重用安全实践,可用于对 REST API 进行安全审查Secure REST API review: - Ensure all endpoints are protected by authentication and authorization - Validate all user inputs and sanitize data - Implement rate limiting and throttling - Implement logging and monitoring for security events …
用法
要启用提示文件,请配置 chat.promptFiles VS Code 设置。默认情况下,提示文件位于工作区的 .github/prompts
目录中。您还可以指定提示文件所在的附加文件夹。
创建提示文件
-
在工作区的
.github/prompts
目录中创建一个.prompt.md
文件。 -
使用 Markdown 格式编写提示指令。
在提示文件中,将其他工作区文件引用为 Markdown 链接 (
[index](../index.ts)
),或作为提示文件中的#file:../index.ts
引用。您还可以引用其他
.prompt.md
文件来创建提示层次结构,其中可重用提示可以在多个提示文件之间共享。
将提示文件附加到聊天请求
-
选择“附加上下文” 图标 (⌘/ (Windows, Linux Ctrl+/)),然后选择“提示...”。
-
从“快速选择”中选择一个提示文件,以将其附加到您的聊天请求。
您可以在 Copilot Chat 和 Copilot Edits 中使用提示文件。
-
(可选)附加任务所需的其他上下文文件。
对于可重用任务,发送提示,无需任何其他指令。
要进一步优化可重用提示,请包含其他指令,以便为手头的任务提供更多上下文。
通过使用 Markdown 链接引用 API 规范或文档等其他上下文文件,为 Copilot 提供更完整的信息。
设置
自定义指令设置
- 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 请求中的指令。
提示文件(实验性)设置
-
chat.promptFiles (实验性):启用提示文件并指定提示文件文件夹。设置为
true
以使用默认位置 (.github/prompts
),或使用{ "/path/to/folder": boolean }
表示法来指定不同的路径。相对路径从工作区的根文件夹解析。设置值 描述 false
(默认)禁用提示文件。 true
启用提示文件。使用默认提示文件位置 ( .github/prompts
)。{ "/path/to/folder": boolean }
启用提示文件。指定一个或多个提示文件所在的文件夹。相对路径从工作区的根文件夹解析。
相关内容
- 使用 Copilot Chat 开始 AI 聊天对话。
- 使用 Copilot Edits 开始 AI 驱动的编辑会话。