在 VS Code 中使用 Copilot 的提示和技巧
本文提供了优化你在 Visual Studio Code 中使用 GitHub Copilot 的开发体验的提示和技巧。
在 VS Code 中使用 Copilot 的检查清单
使用以下检查清单充分利用 Copilot
-
选择合适的工具。 使用为编辑、提问或保持代码编写流程而优化的工具。
-
个性化 Copilot。 使用自定义指令来获得符合你的风格和编码习惯的代码建议。
-
索引你的工作区。 接收关于你的代码库问题的准确回答。
-
选择你的 AI 模型。 在为快速编码或规划/推理而优化的模型之间选择。
-
重用提示词。 通过保存和重用团队中特定任务的提示词来节省时间。
选择合适的 Copilot 工具
根据你的任务,你可以在不同的 Copilot 工具之间选择。
工具 | 用例 |
---|---|
代码补全 | 在保持流程的同时简化编码。 在编辑器中编写代码片段、变量名和函数时,接收内联建议。 |
聊天 | 进行持续的聊天对话,用于头脑风暴设计想法或获取代码建议,可以选择调用特定领域的聊天参与者。 选择将特定的代码建议应用于你的代码库。 |
编辑 | 使用自然语言启动代码编辑会话。 自动将大型代码更改应用于工作区中的多个文件。 |
代理模式 | 通过启动代理式编码流程来实现高层需求。 Copilot 自主调用多个工具来计划和实施所需的代码更改和任务。 |
使用自定义指令个性化 Copilot
当 Copilot 生成代码或回答问题时,它会尝试匹配你的编码习惯和偏好,例如你使用的库或你如何命名变量。但是,它可能并不总是有足够的上下文来有效地做到这一点。例如,如果你使用特定框架版本,则需要在提示词中提供额外的上下文。
为了增强 Copilot 的响应,你可以使用自定义指令向其提供关于你的团队工作流程、工具或项目细节的上下文信息。然后,Copilot 会将这些自定义指令与每个请求结合起来。
要为你的工作区启用自定义指令
-
在你的工作区根目录中创建一个
.github/copilot-instructions.md
文件 -
以 Markdown 格式将你的指令添加到文件中。例如
# Custom instructions for Copilot ## Project context This project is a web application built with React and Node.js. ## Indentation We use tabs, not spaces. ## Coding style Use camelCase for variable names and prefer arrow functions over traditional function expressions. ## Testing We use Jest for unit testing and Playwright for end-to-end testing.
获取关于在 VS Code 中使用 Copilot 的自定义指令的更多详细信息。
提示词工程
你可以通过使用有效的提示词来提高 Copilot 响应的质量。精心设计的提示词可以帮助 Copilot 更好地理解你的需求,并生成更相关的代码建议。
-
从概括开始,然后变得具体。
Generate a Calculator class. Add methods for addition, subtraction, multiplication, division, and factorial. Don't use any external libraries and don't use recursion.
-
给出你想要的内容的示例。
Generate a function that takes a string and returns the number of vowels in it. Example: findVowels("hello") returns 2 findVowels("sky") returns 0
-
将复杂的任务分解为更简单的任务。
与其要求 Copilot 生成膳食计划应用程序,不如将其分解为更小的任务
- 生成一个函数,该函数接受配料列表并返回食谱列表。
- 生成一个函数,该函数接受食谱列表并返回购物清单。
- 生成一个函数,该函数接受食谱列表并返回一周的膳食计划。
-
提供正确的上下文,例如代码选择、文件、终端输出等等。
例如,使用
#codebase
变量来引用整个代码库Where is the database connection string used in #codebase?
-
迭代你的提示词。
提供后续提示词以优化或修改响应。例如
- “编写一个函数来计算一个数的阶乘。”
- “不要使用递归,并通过使用缓存进行优化。”
- “使用有意义的变量名。”
-
保持聊天记录的相关性。
Copilot 使用对话历史记录来提供上下文。如果过去的问题和回答不相关,请从历史记录中删除它们。或者,如果你想更改上下文,请开始一个新的会话。
获取关于提示词工程的更多详细信息。
在 GitHub Copilot 文档中查找与 Copilot 一起使用的提示词的实用示例。
提供正确的上下文
使用相关的上下文丰富你的提示词,以从 Copilot 获得更准确和相关的响应。
- 使用
#codebase
变量让 Copilot 自动查找正确的文件。 - 使用
#fetch
变量从网页获取内容。 - 通过使用
#file
或#sym
聊天变量在你的提示词中引用文件或符号。 - 将文件、文件夹或编辑器标签拖放到聊天提示词中。
- 将问题、测试失败或终端输出添加到你的聊天提示词中,以获得特定场景的上下文。
- 将图像或屏幕截图添加到你的提示词中,以便 Copilot 分析图像。
当你使用代理模式时,Copilot 会自主为你查找相关的文件和上下文。
获取关于向聊天提示词添加上下文的更多详细信息。
可重用提示词
可重用提示词使你能够将特定任务的提示词及其上下文和指令保存在文件中。然后,你可以在聊天中附加和重用该提示词。如果将提示词存储在你的工作区中,你还可以与你的团队共享它。
要创建可重用提示词
-
使用命令面板中的“创建提示词”命令创建一个提示词文件。
此命令在你的工作区根目录的
.github/prompts
文件夹中创建一个.prompt.md
文件。 -
以 Markdown 格式描述你的提示词和相关上下文。
例如,使用此提示词生成一个新的 React 表单组件。
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
-
在聊天中将提示词添加为上下文。
开始使用可重用提示词。
选择你的 AI 模型
Copilot 提供了不同的 AI 模型供你选择。一些模型针对快速编码任务进行了优化,而另一些模型更适合较慢的规划和推理任务。
模型类型 | 模型 |
---|---|
快速编码 |
|
推理/规划 |
|
通过使用聊天输入字段中的模型选择器,选择最适合你需求的模型。
在 GitHub Copilot 文档中了解关于 Copilot Chat 的 AI 模型的更多信息。
工作区索引
Copilot 使用索引来快速准确地搜索你的代码库以查找相关的代码片段。此索引可以由 GitHub 维护,也可以本地存储在你的机器上。
对于 GitHub 存储库,你可以使用基于 GitHub 代码搜索的远程工作区索引。这允许 Copilot 非常快速地搜索你的整个代码库,即使代码库非常大。
获取关于工作区索引的更多详细信息。
相关资源
- Copilot Chat 的提示词工程
- 在 GitHub Copilot 文档中查看使用 GitHub Copilot 的最佳实践
- 在 VS Code 中个性化 Copilot