VS Code 中 Copilot 的技巧和窍门
本文提供了一些技巧和窍门,以优化您在 Visual Studio Code 中使用 GitHub Copilot 的开发体验。
VS Code 中使用 Copilot 的检查清单
使用以下检查清单来充分利用 Copilot
-
选择合适的工具。使用针对编辑、提问或保持编码流程优化的工具。
-
个性化 Copilot。使用自定义说明,以获得符合您风格和编码实践的代码建议。
-
索引您的工作区。获得有关您代码库问题的准确响应。
-
选择您的人工智能模型。在模型之间进行选择,以实现快速编码或规划/推理。
-
重用提示。通过跨团队保存和重用特定任务的提示来节省时间。
选择合适的 Copilot 工具
根据您的任务,您可以在不同的 Copilot 工具之间进行选择。
| 工具 | 使用场景 |
|---|---|
| 行内建议 | 在编码流程中保持顺畅,从而简化编码。 在编写代码时,即可获得代码片段、变量名和函数的内联建议。 |
| 聊天 | 进行持续的聊天对话,以集思广益设计理念或获取代码建议,还可以选择性地调用特定领域的聊天参与者。 选择将特定代码建议应用到您的代码库。 |
| 使用代理 | 通过启动代理编码流程来实施高级要求。 代理会自动调用多个工具来规划和执行所需的代码更改和任务。 |
使用说明文件个性化 Copilot
当 Copilot 生成代码或回答问题时,它会尝试匹配您的编码实践和偏好,例如您使用的库或变量命名方式。但是,它可能无法始终获得足够的上下文来有效做到这一点。例如,如果您使用特定的框架版本,则需要在提示中提供其他上下文。
为了增强 AI 响应,您可以使用说明文件来提供有关您团队的编码实践、工具或项目细节的上下文信息。然后,您可以将这些说明附加到聊天提示中,或让它们自动应用。
为您的工作区启用说明文件
-
从命令面板运行 **Chat: New Instructions File** 命令。
此命令将在
.github/instructions文件夹中创建一个.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. -
可选地,在
applyTo元数据字段中添加 glob 模式,以指定说明适用的文件。--- applyTo: "**/*.ts" --- Coding practices for TypeScript files. ...
获取有关在 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的提示文件。
开始使用提示文件。
选择您的人工智能模型
Copilot 提供不同的人工智能模型供您选择。一些模型针对快速编码任务进行了优化,而另一些模型更适合较慢的规划和推理任务。
| 模型类型 | 模型 |
|---|---|
| 快速编码 |
|
| 推理/规划 |
|
使用模型选择器在聊天输入字段中选择最适合您需求的模型。
在 GitHub Copilot 文档中,详细了解 Copilot Chat 的 AI 模型。
工作区索引
Copilot 使用索引来快速准确地搜索您的代码库以查找相关代码片段。此索引可以由 GitHub 维护,也可以存储在您的本地计算机上。
对于 GitHub 存储库,您可以使用基于 GitHub 代码搜索的工作区远程索引。这使 Copilot 能够非常快速地搜索您的整个代码库,即使代码库非常大。
获取有关工作区索引的更多详细信息。
相关资源
- 提示工程指南
- GitHub Copilot 文档中的使用 GitHub Copilot 的最佳实践
- 自定义 VS Code 中的聊天