尝试以扩展 VS Code 中的代理模式!

在 VS Code 中使用 Copilot 的提示和技巧

本文提供了一些提示和技巧,以优化您在 Visual Studio Code 中使用 GitHub Copilot 的开发体验。

在 VS Code 中使用 Copilot 的核对清单

使用以下核对清单来充分利用 Copilot

  1. 选择正确的工具使用为编辑、提问或保持代码编写流程而优化的工具。

  2. 个性化 Copilot使用自定义说明来获取符合您风格和编码实践的代码建议。

  3. 编写有效的提示并提供上下文获取最相关的响应。

  4. 为您的工作区建立索引获取关于您代码库问题的准确回答。

  5. 选择您的 AI 模型在用于快速编码或规划/推理的模型之间进行选择。

  6. 重用提示通过在团队中保存和重用特定于任务的提示来节省时间。

选择正确的 Copilot 工具

根据您的任务,您可以在不同的 Copilot 工具之间进行选择。

工具 用例
代码补全 在保持流程的同时简化编码。
在编辑器中编写代码时,接收有关代码片段、变量名和函数的内联建议。
聊天 进行持续的聊天对话,以进行头脑风暴设计思想或获取代码建议,并可选择性地调用特定领域的聊天参与者。
选择将特定的代码建议应用到您的代码库。
编辑 使用自然语言开始编码编辑会话。
在工作区中的多个文件之间自动应用大型代码更改。
代理模式 通过启动代理式编码流程来实现高级需求。
Copilot 自主调用多种工具来规划和实施所需的代码更改和任务。

使用说明文件个性化 Copilot

当 Copilot 生成代码或回答问题时,它会尝试匹配您的编码实践和偏好,例如您使用的库或您如何命名变量。但是,它可能并不总是有足够的上下文来有效地做到这一点。例如,如果您使用特定框架版本,则需要在提示中提供额外的上下文。

为了增强 AI 响应,您可以使用说明文件来提供有关团队编码实践、工具或项目细节的上下文信息。然后,您可以将这些说明附加到聊天提示中,或让它们自动应用。

为您的工作区启用说明文件

  1. 从命令面板运行 Chat: New Instructions File 命令。

    此命令会在 .github/instructions 文件夹中创建一个 .instructions.md 文件。

  2. 将您的说明以 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.
    
  3. 或者,向 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 文档中查找与 Copilot 一起使用的实用提示示例

提供正确的上下文和工具

用相关的上下文丰富您的提示,以便在聊天中获得更准确、更相关的响应。借助正确的工具,您可以提高开发人员的生产力。

  • 代理模式下,选择工具按钮以配置您想要使用的工具,或在提示中明确添加它们。
  • 使用 #codebase 让 Copilot 通过执行代码搜索自动找到正确的文件。
  • 使用 #fetch 工具从网页获取内容,或使用 #githubRepo 在 GitHub 存储库上执行代码搜索。
  • 通过使用 #<文件名>#<文件夹名>#<符号> 在提示中引用文件、文件夹或符号。
  • 将文件、文件夹或编辑器选项卡拖放到聊天提示中。
  • 将问题、测试失败或终端输出添加到您的聊天提示中,以获得特定场景的上下文。
  • 将图像或屏幕截图添加到您的提示中,让 Copilot 分析图像。
  • 在代理模式下,提示预览您的应用,以使用内置的简单浏览器直接打开它。

当您使用代理模式时,Copilot 会自主为您找到相关的文件和上下文。

获取有关向聊天提示添加上下文的更多详细信息。

可重用提示

提示文件使您能够将特定任务的提示及其上下文和说明保存在 Markdown 文件中。然后,您可以在聊天中附加并重用该提示。如果将提示存储在工作区中,您还可以与团队共享。

创建可重用提示

  1. 在命令面板中使用 Chat: New Prompt File 命令创建一个提示文件。

    此命令会在您工作区根目录的 .github/prompts 文件夹中创建一个 .prompt.md 文件。

  2. 以 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
    
  3. 或者,添加有关如何在聊天中运行提示的元数据。使用 mode 字段指定聊天模式,使用 tools 字段指定要使用的代理模式工具。

    ---
    mode: 'agent'
    tools: ['githubRepo', '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
    
  4. 通过在聊天输入字段中键入 /,后跟提示文件名来运行命令。

    例如,键入 /new-react-form 来运行名为 new-react-form.prompt.md 的提示文件。

开始使用提示文件

选择您的 AI 模型

Copilot 提供不同的 AI 模型供选择。一些模型针对快速编码任务进行了优化,而另一些模型则更适合较慢的规划和推理任务。

模型类型 模型
快速编码
  • GPT-4o
  • Claude Sonnet 3.5
  • Claude Sonnet 3.7
  • Gemini 2.0 Flash
推理/规划
  • Claude Sonnet 3.7 Thinking
  • o1
  • o3-mini

通过使用聊天输入字段中的模型选择器,选择最适合您需求的模型。

在 GitHub Copilot 文档中了解有关Copilot Chat 的 AI 模型的更多信息。

工作区索引

Copilot 使用索引来快速准确地搜索您的代码库以查找相关的代码片段。此索引可以由 GitHub 维护,也可以存储在您的本地计算机上。

对于 GitHub 存储库,您可以使用工作区的远程索引,该索引基于GitHub 代码搜索。这使 Copilot 能够非常快速地搜索您的整个代码库,即使代码库非常大。

获取有关工作区索引的更多详细信息。