VS Code 中 Copilot 的技巧和窍门
本文提供了优化你在 Visual Studio Code 中使用 GitHub Copilot 的开发体验的技巧和窍门。
在 VS Code 中使用 Copilot 的清单
使用以下清单以充分利用 Copilot
-
选择正确的工具。使用针对编辑、提问或保持代码编写流程而优化的工具。
-
个性化 Copilot。使用自定义指令以获取符合你的风格和编码实践的代码建议。
-
索引你的工作区。以便针对你的代码库中的问题获得准确的回答。
-
选择你的 AI 模型。在用于快速编码的模型和用于规划/推理的模型之间进行选择。
-
重用提示。通过保存并在团队中重用特定任务的提示来节省时间。
选择正确的 Copilot 工具
根据你的任务,你可以选择不同的 Copilot 工具。
| 工具 | 用例 |
|---|---|
| 行内建议 | 在保持工作流程的同时简化编码。 在你于编辑器中编写代码片段、变量名和函数时,接收内联建议。 |
| 聊天 | 进行持续的聊天对话,以集思广益设计理念或获取代码建议,可以选择调用特定领域的聊天参与者。 选择将特定的代码建议应用于你的代码库。 |
| 使用代理 | 通过启动代理式编码流程来实现高层级需求。 代理自主调用多个工具来规划和实现所需的代码更改和任务。 |
使用指令文件个性化 AI
当 AI 生成代码或回答问题时,它会尝试匹配你的编码实践和偏好,例如你使用的库或你如何命名变量。然而,它可能并不总是有足够的上下文来有效地做到这一点。例如,如果你处理的是特定的框架版本,你需要**在提示中提供额外的上下文**。
为了增强 AI 响应,你可以使用指令文件来提供关于你的团队编码实践、工具或项目特定细节的上下文信息。然后,你可以将这些指令附加到你的聊天提示中,或者让它们自动应用。
通过基于你当前项目结构和编码模式的永久自定义指令来启动你的工作区
-
在聊天输入中输入
/init命令。这会在工作区根目录的.github文件夹中生成一个copilot-instructions.md或AGENTS.md文件。 -
可选地,编辑生成的指令文件以添加或修改指令。
-
对于特定任务或技术的指令,你可以通过命令面板中使用 **Chat: New Instructions File** 命令来创建额外的基于文件的
.instructions.md指令文件。
获取关于在 VS Code 中使用指令文件的更多详细信息。
提示工程
你可以通过使用有效的提示来提高 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 文档中查找使用聊天时的提示的实用示例。
提供正确的上下文和工具
用相关的上下文丰富你的提示,以在聊天中获得更准确和相关的响应。使用正确的工具,你可以提高你的开发人员生产力。
- 在聊天中,选择工具按钮来配置你要使用的工具,或将它们显式添加到你的提示中。
- 使用
#codebase让 Copilot 通过执行代码搜索自动查找正确的文件。 - 使用
#fetch工具从网页获取内容,或使用#githubRepo在 GitHub 仓库上执行代码搜索。 - 通过使用
#<file name>、#<folder name>或#<symbol>在你的提示中引用文件、文件夹或符号。 - 将文件、文件夹或编辑器标签拖放到聊天提示上。
- 将问题、测试失败或终端输出添加到你的聊天提示中,以获得场景特定的上下文。
- 将图像或屏幕截图添加到你的提示中,让 Copilot 分析图像。
- 在使用代理时,提示预览你的应用可以直接使用集成浏览器打开它。
当你使用代理时,代理会自动为你查找相关文件和上下文。
获取关于向聊天提示添加上下文的更多详细信息。
可重用提示
提示文件使你能够将特定任务的提示及其上下文和指令保存在 Markdown 文件中。然后,你可以在聊天中附加并重用该提示。如果将提示存储在工作区中,你也可以与团队共享它。
创建可重用提示
-
使用命令面板中的 **Chat: New Prompt File** 命令创建提示文件。
此命令会在工作区根目录的
.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 -
可选地,添加关于如何在聊天中运行提示的元数据。使用
agent字段指定代理,使用tools字段指定要使用的代理模式工具。--- agent: 'agent' tools: ['githubRepo', 'search/codebase'] description: 'Generate a new React form component' --- Your goal is to generate a new React form component based on the templates in #githubRepo contoso/react-templates. 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 -
在聊天输入字段中输入
/,后跟提示文件名,即可运行命令。例如,输入
/new-react-form即可运行名为new-react-form.prompt.md的提示文件。
提示文件入门。
选择你的 AI 模型
Copilot 提供不同的 AI 模型供你选择。有些模型针对快速编码任务进行了优化,而其他模型更适合较慢的规划和推理任务。
| 模型类型 | 模型 |
|---|---|
| 快速编码 |
|
| 推理/规划 |
|
通过使用聊天输入字段中的模型选择器,选择最适合你需求的模型。
在 GitHub Copilot 文档中了解有关 Copilot Chat 的 AI 模型的更多信息。
工作区索引
Copilot 使用索引来快速准确地搜索你的代码库以查找相关的代码片段。该索引可以由 GitHub 维护,也可以存储在本地计算机上。
对于 GitHub 仓库,你可以使用基于GitHub 代码搜索的远程工作区索引。这使得 Copilot 能够非常快速地搜索你的整个代码库,即使代码库非常大。
有关工作区索引的更多详细信息。
相关资源
- 提示工程指南
- GitHub Copilot 文档中使用 GitHub Copilot 的最佳实践
- 自定义 VS Code 中的聊天