现已发布!阅读关于 11 月的新功能和修复的信息。

在 VS Code 中使用 Copilot 聊天

使用 Visual Studio Code 中的 GitHub Copilot 聊天扩展,您可以进行 AI 驱动的聊天对话,以生成代码、提高您对代码的理解,甚至配置您的编辑器。您无需在文档或在线论坛中搜索答案,可以直接在 VS Code 中向 Copilot 聊天提问,并在编写代码的过程中获得代码建议。

Copilot 聊天集成在您的开发流程中,并在您需要的地方为您提供帮助

  • 内联聊天:直接从编辑器开始聊天对话,并在您编写代码时获得内联建议
  • 聊天视图:在侧边拥有一个 AI 助手,帮助您解答问题并提供代码建议
  • 快速聊天:提出快速问题,然后继续您的工作
提示

如果您打算在项目中的多个文件中进行编辑,您可以考虑使用 Copilot 编辑。您可以轻松地将现有聊天对话移动到 Copilot 编辑

Copilot 聊天用例

您可以在各种开发场景中使用 Copilot 聊天,例如

  • 回答关于编码和技术主题的问题 (“什么是链表?”, “十大热门 Web 框架”)
  • 回答关于如何最好地解决问题的编码问题 (“如何向我的项目添加身份验证?”)
  • 解释其他人的代码并提出改进建议 (“@workspace /explain”, “这段代码是做什么的?”)
  • 提出代码修复 (“@workspace /fix”, “此方法会引发 FileNotFoundException”)
  • 生成单元测试用例 (“@workspace /tests”)
  • 生成代码文档 (“/doc”)

先决条件

  • 要使用 GitHub Copilot,您必须在您的个人帐户中拥有 GitHub Copilot 的有效订阅,或者您需要由您的组织分配一个席位。

  • 要在 VS Code 中使用 GitHub Copilot,您必须安装 GitHub Copilot 扩展。当您安装此扩展时,也会安装 GitHub Copilot 聊天扩展。

按照以下步骤在 VS Code 中设置 GitHub Copilot,注册订阅并在 VS Code 中安装 Copilot 扩展。

开始使用 Copilot 聊天

打开聊天

使用 VS Code 命令中心中的 Copilot 聊天菜单开始不同的聊天体验。

Screenshot of the Copilot Chat menu in the VS Code Command Center

或者使用其中一个键盘快捷键开始与 Copilot 的聊天对话。

快捷键 描述
⌃⌘I (Windows、Linux Ctrl+Alt+I) 打开聊天视图,并使用自然语言开始与 Copilot 的聊天对话。
⇧⌥⌘L (Windows、Linux Ctrl+Shift+Alt+L) 打开快速聊天,并向 Copilot 提出快速问题。
⌘I (Windows、Linux Ctrl+I) 启动内联聊天,直接从编辑器向 Copilot 发送聊天请求。使用自然语言或使用 / 命令向 Copilot 提供指示。

聊天上下文

Copilot 尝试根据您的自然语言聊天提示确定您的问题的意图和范围。为了帮助 Copilot 为您提供最佳和最相关的答案,请向您的聊天提示添加上下文。例如,附加特定文件或甚至是您工作区的全部内容、当前编辑器选择等等。

VS Code 会自动将当前活动编辑器作为上下文添加到聊天视图中的聊天提示中。如果您在编辑器中选择了一段代码,则只会将该选择项添加为上下文。您可以通过选择上下文项上的禁用图标来禁用添加活动编辑器。

Screenshot of VS Code Copilot Chat view, showing the current editor selection as context.

有几种方法可以将上下文添加到您的聊天提示中

  • 在任何聊天体验中使用 按钮 (⌘/ (Windows、Linux Ctrl+/))。

    然后,您可以从“快速选择”中选择特定类型的上下文,例如当前选择项、工作区中的一个或多个文件,或者源代码中的一个或多个符号。

    Screenshot of VS Code Copilot Chat view, showing the Attach context button and context Quick Pick.

    提示

    要从附件“快速选择”中快速添加多个项目,请使用 向上向下 键导航列表,使用 向右 键将项目添加为上下文,然后对其他项目重复此操作。

  • 将编辑器选项卡、文件或文件夹从“资源管理器”视图、“搜索”视图或编辑器面包屑拖放到“聊天”视图上。

  • 通过键入 # 字符使用聊天变量,您将看到可用聊天变量的列表。

    例如,您可以使用 #selection 将当前编辑器选择项添加到您的聊天提示中,使用 #file 添加工作区中的特定文件,或使用 #sym 添加工作区中的符号。

    Screenshot of VS Code Copilot Chat view, showing the chat variable picker.

    提示

    键入 # 并将其用作文件或符号建议的 IntelliSense 触发器。

  • 在“资源管理器”或“搜索”视图中的文件上使用上下文菜单Copilot > 将文件添加到聊天(或者对于文本选择,使用将选择添加到聊天)。

注意

如果可能,当您附加文件时,会包含文件的完整内容。如果文件太大,无法放入上下文窗口,则会包含文件的大纲,其中包含函数及其描述,但不包含实现。如果大纲也太大,则该文件将不会作为提示的一部分。

更改 AI 模型

聊天输入字段中的模型选择器使您可以更改用于生成响应的语言模型。选择模型选择器并选择一个可用的语言模型。

您可以在不同的聊天体验中使用模型选择器。

Screenshot of the model picker in the Chat view

内联聊天

内联聊天使您可以直接从编辑器与 Copilot 进行聊天对话,而无需离开您的工作上下文。借助内联聊天,您可以在代码中预览代码建议,这对于快速迭代代码更改非常有用。

在任何文件中,按键盘上的 ⌘I (Windows, Linux Ctrl+I) 即可调出 Copilot 内联聊天并开始使用。或者,打开一个文件,然后在 Copilot 聊天命令中心菜单中选择编辑器内联聊天

Screenshot of the Copilot Chat menu in the VS Code Command Center

根据您的问题,Copilot 会为当前文件建议代码修改或重构。Copilot 会给出更新的预览,您可以接受(⌘Enter (Windows, Linux Ctrl+Enter))或放弃(Escape)。或者,您可以生成新的代码建议。

Copilot Inline Chat asking to convert a sort algorithm to use bubble sort

如果您在编辑器中选择了一段代码,Copilot 会将您的问题范围限定为所选内容。

您还可以向 Copilot 提出更多探索性问题,这些问题会在您编写和迭代代码时出现,例如“解释这段代码”或“如何添加 X 功能?”。

Copilot Inline Chat asking information about the used sorting algorithm

使用 inlineChat.mode 设置,您可以配置内联聊天在编辑器中显示更新的方式。默认设置值为 live,这意味着更新直接应用于编辑器。如果您更喜欢并排预览更改,可以将设置配置为 preview

以下示例显示了内联聊天的 preview 模式。

Copilot Inline Chat preview mode, showing the code changes side-by-side

聊天视图

打开聊天视图

聊天视图使您可以在单独的视图中与 Copilot 进行聊天对话。默认情况下,聊天视图位于辅助侧边栏中。辅助侧边栏始终与主侧边栏相对,因此您可以同时打开聊天视图和主侧边栏中的资源管理器、源代码管理或其他视图。

Copilot Chat view in the Secondary Side Bar and Explorer view in the Primary Side Bar.

您可以通过按 ⌃⌘I (Windows, Linux Ctrl+Alt+I) 或在 Copilot 聊天命令中心菜单中选择打开聊天来访问聊天视图。

Screenshot of the Copilot Chat menu in the VS Code Command Center, highlighting Open Chat

您还可以使用 VS Code 标题栏中的布局控件来切换包含聊天视图的辅助侧边栏。

Layout controls in the VS Code title bar, highlighting the Secondary Side Bar toggle.

提示

您可以随时将聊天视图拖动到其他位置,甚至将其作为编辑器打开。了解有关 VS Code 中的自定义布局的更多信息。

输入聊天提示

要开始使用,请在聊天输入字段中输入您的问题。例如,询问有关一般编程主题的问题,或询问有关工作区中特定代码的问题。请务必附加相关上下文以帮助 Copilot 为您提供更相关的答案。

Copilot explaining a devcontainer.json file

提示

在聊天输入框中键入 /help 以获取有关 GitHub Copilot 以及如何与 Copilot 聊天互动的帮助。

Copilot 聊天可以提供包含以下内容的丰富且交互式的结果:简单文本、图像、用于调用 VS Code 命令的按钮、引用 URI 或编辑器位置或文件树(例如,当聊天参与者建议创建新工作区时,显示工作区预览)。

以下示例(“@workspace /new 使用 TypeScript 和 pug 的 Express”)显示了用于创建 Express 应用程序的聊天提示,该提示返回一个树视图,其中包含建议的工作区结构和一个用于创建新工作区的按钮。

Copilot response containing rich results, such as a file tree with a proposed workspace structure, and a button to create a new workspace

随着对话的进行,Copilot 会维护您的聊天消息和响应的历史记录,并在其响应中提供相关的后续问题或命令。

代码块

根据您的问题,Copilot 聊天可能会在代码块中返回源代码。根据语言扩展,聊天响应中的代码块可能支持 IntelliSense,这使您可以通过将鼠标悬停在方法和符号上来获取有关方法和符号的信息,或者转到其定义。

A Copilot Chat code block response.

将鼠标悬停在代码块上会显示在编辑器中应用在光标处插入复制选项。

更多操作 (...) 按钮提供插入到新文件插入到终端选项(⌃⌥Enter (Windows, Linux Ctrl+Alt+Enter))。

如果 Copilot 聊天检测到代码块包含 shell 命令,您可以直接在集成终端中使用插入到终端⌃⌥Enter (Windows, Linux Ctrl+Alt+Enter))运行它。此选项会创建或打开活动终端并插入命令文本,以便您运行。

Copilot Chat code block to list files with Insert into Terminal option visible

提示

使用聊天:下一个代码块⌥⌘PageDown (Windows, Linux Ctrl+Alt+PageDown))和聊天:上一个代码块⌥⌘PageUp (Windows, Linux Ctrl+Alt+PageUp))在代码块之间导航。

您可以使用以下设置控制聊天中代码块的字体

  • chat.editor.fontFamily
  • chat.editor.fontSize
  • chat.editor.fontWeight
  • chat.editor.lineHeight

聊天记录

Copilot 聊天会维护您以前的聊天对话的历史记录,您可以使用聊天视图中的显示聊天...按钮或使用命令面板中的聊天:显示聊天...命令来访问这些记录。

快速选择会显示以前的聊天列表,按最近时间排序。您可以选择一个聊天以在聊天视图中打开它。

Screenshot of the Chat view with the Show Chats... button highlighted

快速聊天

如果您想快速询问 Copilot 一个问题,并且不想启动完整的聊天视图会话或在编辑器中打开内联聊天,则可以使用快速聊天下拉列表。

Quick Chat dropdown

按键盘上的 ⇧⌥⌘L (Windows, Linux Ctrl+Shift+Alt+L) 以调出快速聊天。或者,在 Copilot 聊天命令中心菜单中选择快速聊天

Screenshot of the Copilot Chat menu in the VS Code Command Center

您可以输入问题,使用聊天参与者斜杠命令来限定您的问题范围,然后使用下拉列表右上角的在聊天视图中打开按钮将讨论升级为完整的聊天视图会话。

Quick Chat Open in Chat View button

多轮对话

当您在 Copilot 聊天中提出问题时,您不会被第一个响应所困扰。保持聊天对话打开,并继续迭代和提示 Copilot 以改进建议的解决方案。Copilot 具有生成的代码和您当前对话历史记录的上下文。当您继续提出其他问题时,Copilot 会根据您的要求进一步完善响应。

以下是使用内联聊天创建计算斐波那契数的函数的示例

First response from Copilot for a function to calculate Fibonacci numbers

如果您更喜欢不使用递归的解决方案,请更新聊天提示并将其提交给 Copilot 以获得不同的响应。

Ask Copilot to not use recursion and new result

了解有关如何迭代 Copilot 聊天对话的更多信息。

终端内联聊天

与编辑器中的内联聊天类似,您可以在终端中调出 Copilot 内联聊天,以帮助您回答与终端和 shell 命令相关的问题。终端内联聊天使用 @terminal 聊天参与者,该参与者具有有关集成终端的 shell 及其内容的上下文。例如,您可以提出诸如“如何安装 npm 包”或“列出 src 目录中最大的 5 个文件”之类的问题。

要在终端中启动内联聊天,请按 ⌘I (Windows, Linux Ctrl+I) 键盘快捷键。

Screenshot showing that you can ask complex questions like "list the top 5 largest files in the src dir"

一旦建议了一个命令,请使用运行⌘Enter (Windows, Linux Ctrl+Enter))在终端中运行该命令,或使用插入⌥Enter (Windows, Linux Alt+Enter))将该命令插入到终端中。

或者,您可以在运行该命令之前通过将光标放置在响应中或在 Windows 和 Linux 上按 Ctrl+向下TabTab,或者在 macOS 上按 Cmd+向下TabTab 来直接在 Copilot 响应中编辑该命令。

智能操作

Copilot 聊天允许您使用自然语言从 Copilot 获得帮助。对于几种常见情况,您可以使用智能操作从 Copilot 获得帮助,而无需编写提示。这些智能操作的示例包括生成提交消息、生成文档、修复代码、解释代码或查看代码更改等任务。

这些智能操作在整个 VS Code UI 中可用。例如,您可以从编辑器上下文菜单或通过快速修复操作访问 Copilot 智能操作。

在编辑器中,您可以通过选择一段代码、右键单击,然后选择Copilot来访问智能操作。

Editor context menu with the Copilot menu group expanded

最强大的智能操作是 修复 操作。这里有一个相对简单的 TypeScript 计算器,其中有一个错误提示“类型 'string' 的参数不能分配给类型 'number' 的参数”。选择闪光图标,然后选择 修复

Quick fix a type mismatch error by using the Copilot smart action

类似于 /fix/doc 智能操作也是一个常用的操作。要使用 /doc,请选择一段代码,右键单击,然后选择 Copilot > 生成文档。Copilot 将为你的代码生成文档注释。

Inline Chat /doc results adding JSDoc comment for a TypeScript function

你还可以通过在聊天中使用等效的 斜杠命令 来调用其中一些智能操作。例如,你可以使用 /fix 来修复所选代码中的问题,或者使用 /doc 为所选代码生成文档。

聊天参与者

聊天参与者 就像可以帮助你的专家,他们有自己的专长。你可以在聊天输入框中键入“@”符号,然后输入参与者名称来调用聊天参与者。有几个内置的聊天参与者

  • @workspace 拥有关于你的工作区中代码的上下文,可以帮助你导航、查找相关文件或类。
  • @vscode 了解 VS Code 编辑器本身的命令和功能,可以帮助你使用它们。
  • @terminal 拥有关于集成终端 shell 及其内容的上下文。
  • @github 了解你的 GitHub 存储库、问题、拉取请求和主题,还可以使用 Bing API 执行 Web 搜索。

扩展还可以贡献聊天参与者,为其领域提供专门的帮助。要查找可用聊天参与者的列表,请在聊天输入框中键入 @

以下是一些 Visual Studio Marketplace 中扩展的示例,它们为 VS Code 中的聊天视图贡献了聊天参与者。请转到 Marketplace 或使用集成的 扩展视图 并使用 chat-participant 标签搜索更多扩展。

@workspace

@workspace 聊天参与者知道如何收集有关你的工作区中代码的上下文,可以帮助你导航、查找相关的类、文件等。

Asking the @workspace chat participant about where a URL is specified in an Express app

因为它拥有所有必要的上下文,所以 @workspace 可以回答开发人员更可能提出的问题。例如,与代码的不同部分如何交互有关的问题

  • @workspace 如何安排通知?”

或者需要了解相关代码、依赖项和设计模式的问题

  • @workspace 添加表单验证,类似于新闻通讯页面”

@vscode

VS Code 可以通过多种方式进行自定义,以至于人们在发现一些隐藏的功能时会感到惊喜。为了帮助你充分释放 VS Code 的强大功能,我们创建了 @vscode

此聊天参与者了解有关 VS Code 的一切,可以帮助你弥合自然语言与 VS Code 命令和自定义之间的差距。@vscode 内部使用工具来访问所有设置和命令的索引,我们正在添加一个工具,以便此聊天参与者也可以使用 VS Code 文档。现在你可以问一些模糊的问题,例如

  • @vscode VS Code 虚假打开文件时的那个东西叫什么?以及如何禁用它?”
  • @vscode 如何更改我的 VS Code 颜色?”

Asking @vscode how to change the VS Code colors

使用 /runCommand 斜杠命令,你可以要求 @vscode 在编辑器中运行命令。例如,你可以要求 @vscode /runCommand show minimap 在编辑器中显示小地图。

Toggle the minimap in the editor with the /runCommand slash command in Copilot Chat.

@terminal

使用 @terminal,你可以询问有关集成终端 shell、其缓冲区和当前选定的内容的问题。在以下示例中,你使用终端中的快速修复 使用 Copilot 解释 来获取有关失败的 shell 命令的信息。

请注意,“聊天”视图中的提示是如何填充了 @terminal #terminalLastCommand 以帮助纠正错误的。#terminalLastCommand 是一个聊天变量,允许你向聊天提示添加更多上下文。了解更多关于向聊天添加上下文的信息。

Quick Chat with @terminal #terminalLastCommand and Copilot's answer

注意

终端不会自动提取工作区上下文,因此关于你的工作区的问题可能需要一些时间。

@github

使用 @github,你可以询问有关你的 GitHub 存储库以及你的提交、问题、拉取请求等的问题。以下是如何使用 @github 参与者的示例

  • @github 我分配的所有未完成的 PR 是什么?
  • @github 我分配的最新问题是什么?
  • @github 最近一次发布是什么时候?

在 GitHub 文档中获取有关可用的 GitHub 技能的更多信息。

扩展贡献的聊天参与者

你可以从 Visual Studio Code MarketplaceGitHub Marketplace 安装其他聊天参与者。

通过 VS Code 扩展贡献的聊天参与者是客户端扩展,可以完全访问 VS Code 扩展 API 表面。

通过 GitHub App 贡献的聊天参与者不在你的本地计算机上运行,并且必须明确请求访问你的本地编辑器上下文。在你安装贡献聊天参与者的 GitHub App 之后,第一次你在 VS Code 中 @-提及 该参与者时,系统会要求你授权其访问你的本地编辑器上下文。

注意

为了保护你的隐私,你选择与 GitHub App 的聊天参与者共享编辑器上下文的偏好将按每个工作区保存,除非你选择“允许所有工作区”。

斜杠命令

聊天参与者可以通过使用斜杠命令来提供特定功能的快捷方式。这些命令提供了一种简洁且结构化的方式来与聊天参与者进行交互并向他们提供指令。你可以在聊天提示中键入参与者,后跟 / 和命令名称来引用斜杠命令。

例如,@workspace 参与者有一个斜杠命令 /new 来搭建新的工作区或新文件。在聊天输入框中键入 @workspace /new Node.js Express Pug TypeScript 将创建一个新的工作区,其中包含 Node.js Express Pug TypeScript 项目。

以下是一些内置斜杠命令的示例

  • /clear:开始新的聊天会话
  • /help:获取有关使用 GitHub Copilot 的帮助
  • @workspace /explain(或 /explain):解释所选代码的工作原理
  • @workspace /fix(或 /fix):为所选代码中的问题提出修复建议
  • @workspace /new(或 /new):为新的工作区或新文件搭建代码
  • @vscode /runCommand:搜索或运行 VS Code 命令

要查看内置参与者及其命令的列表,请在聊天输入框中键入 @ 或选择 图标。

对话历史记录

Copilot 会跟踪你在“聊天”视图中的对话历史记录。Copilot 可以将此信息用作后续提示中的上下文,例如当你进行多轮对话时。

例如,当你首先问“TypeScript 中的数字数据类型是什么?”然后问“它也可以用于十进制数吗?”,Copilot 知道你仍然指的是 number 数据类型。

Chat view with multiple prompts, where Copilot understands that 'it' refers to the first prompt.

你可以通过将鼠标悬停在提示上并选择 x 控件来从对话历史记录中删除提示和相应的响应。删除一个或多个提示以获得更相关的响应可能会很有用。

Chat view with multiple prompts, highlighting the 'x' control to delete a chat prompt and response.

你可以使用“命令面板”中的 聊天:导出聊天... 命令将聊天会话的所有提示和响应导出为 JSON 文件。

使用语音交互

借助 VS Code 中的语音控制功能(由 VS Code 语音 扩展提供),你可以通过语音发起聊天对话

  • 使用你的声音来口述你的聊天提示
  • 使用“Hey Code”语音命令启动与 Copilot 聊天的语音会话
  • 通过使用“按住说话”模式来加速聊天的语音输入

了解有关如何在 VS Code 中使用语音交互的更多信息。

隐私和透明度

我们强调负责任地使用人工智能,尤其是在源代码方面。inlineChat.acceptedOrDiscardBeforeSave 设置(默认启用)会在保存由 Copilot 生成的代码之前要求你确认。

启用此设置后,文件保存操作将等待你接受或放弃任何挂起的内联聊天会话。当启用自动保存时,也会应用此设置,在内联聊天结束之前将暂时禁用自动保存。

Inline Chat save consent message.

要为私有存储库启用更多工作区搜索功能,我们需要额外的权限。如果我们检测到我们尚未拥有这些权限,我们会在启动时要求它们。授予后,我们将安全地存储会话以备将来使用。

Modal window asking for additional authentication for a private repository.

GitHub Copilot 信任中心 中了解有关安全性、隐私和透明度的更多信息。

常见问题

我应该如何在 Copilot 编辑、内联聊天、“聊天”视图和快速聊天之间进行选择?

下表提供了每个接口的功能比较。

功能 Copilot 编辑 聊天视图 内联聊天 快速聊天
接收代码建议
多文件编辑 ✅* ✅*
在编辑器中预览代码编辑
代码审查流程
回滚更改
附加上下文
使用参与者和命令
生成 shell 命令
通用聊天

* 代码块包含在聊天对话中,需要手动将其应用到正确的文件

其他资源

你可以在 GitHub Copilot 文档中阅读有关 GitHub Copilot 以及如何在 VS Code 中使用它的更多信息。

或者在 YouTube 上查看 VS Code Copilot 系列,你可以在其中找到更多入门内容以及有关将 Copilot 与 PythonC#JavaPowerShellC++ 等一起使用的特定于编程的视频。

后续步骤