在 VS Code 中使用 Copilot 聊天
使用 Visual Studio Code 中的 GitHub Copilot 聊天扩展,您可以进行 AI 驱动的聊天对话,以生成代码、提高您对代码的理解,甚至配置您的编辑器。您无需在文档或在线论坛中搜索答案,可以直接在 VS Code 中向 Copilot 聊天提问,并在编写代码的过程中获得代码建议。
Copilot 聊天集成在您的开发流程中,并在您需要的地方为您提供帮助
如果您打算在项目中的多个文件中进行编辑,您可以考虑使用 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 聊天菜单开始不同的聊天体验。
或者使用其中一个键盘快捷键开始与 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 会自动将当前活动编辑器作为上下文添加到聊天视图中的聊天提示中。如果您在编辑器中选择了一段代码,则只会将该选择项添加为上下文。您可以通过选择上下文项上的禁用图标来禁用添加活动编辑器。
有几种方法可以将上下文添加到您的聊天提示中
-
在任何聊天体验中使用 按钮 (⌘/ (Windows、Linux Ctrl+/))。
然后,您可以从“快速选择”中选择特定类型的上下文,例如当前选择项、工作区中的一个或多个文件,或者源代码中的一个或多个符号。
提示要从附件“快速选择”中快速添加多个项目,请使用 向上 和 向下 键导航列表,使用 向右 键将项目添加为上下文,然后对其他项目重复此操作。
-
将编辑器选项卡、文件或文件夹从“资源管理器”视图、“搜索”视图或编辑器面包屑拖放到“聊天”视图上。
-
通过键入
#
字符使用聊天变量,您将看到可用聊天变量的列表。例如,您可以使用
#selection
将当前编辑器选择项添加到您的聊天提示中,使用#file
添加工作区中的特定文件,或使用#sym
添加工作区中的符号。提示键入
#
并将其用作文件或符号建议的 IntelliSense 触发器。 -
在“资源管理器”或“搜索”视图中的文件上使用上下文菜单Copilot > 将文件添加到聊天(或者对于文本选择,使用将选择添加到聊天)。
如果可能,当您附加文件时,会包含文件的完整内容。如果文件太大,无法放入上下文窗口,则会包含文件的大纲,其中包含函数及其描述,但不包含实现。如果大纲也太大,则该文件将不会作为提示的一部分。
更改 AI 模型
聊天输入字段中的模型选择器使您可以更改用于生成响应的语言模型。选择模型选择器并选择一个可用的语言模型。
您可以在不同的聊天体验中使用模型选择器。
内联聊天
内联聊天使您可以直接从编辑器与 Copilot 进行聊天对话,而无需离开您的工作上下文。借助内联聊天,您可以在代码中预览代码建议,这对于快速迭代代码更改非常有用。
在任何文件中,按键盘上的 ⌘I (Windows, Linux Ctrl+I) 即可调出 Copilot 内联聊天并开始使用。或者,打开一个文件,然后在 Copilot 聊天命令中心菜单中选择编辑器内联聊天。
根据您的问题,Copilot 会为当前文件建议代码修改或重构。Copilot 会给出更新的预览,您可以接受(⌘Enter (Windows, Linux Ctrl+Enter))或放弃(Escape)。或者,您可以生成新的代码建议。
如果您在编辑器中选择了一段代码,Copilot 会将您的问题范围限定为所选内容。
您还可以向 Copilot 提出更多探索性问题,这些问题会在您编写和迭代代码时出现,例如“解释这段代码”或“如何添加 X 功能?”。
使用 inlineChat.mode 设置,您可以配置内联聊天在编辑器中显示更新的方式。默认设置值为 live
,这意味着更新直接应用于编辑器。如果您更喜欢并排预览更改,可以将设置配置为 preview
。
以下示例显示了内联聊天的 preview
模式。
聊天视图
打开聊天视图
聊天视图使您可以在单独的视图中与 Copilot 进行聊天对话。默认情况下,聊天视图位于辅助侧边栏中。辅助侧边栏始终与主侧边栏相对,因此您可以同时打开聊天视图和主侧边栏中的资源管理器、源代码管理或其他视图。
您可以通过按 ⌃⌘I (Windows, Linux Ctrl+Alt+I) 或在 Copilot 聊天命令中心菜单中选择打开聊天来访问聊天视图。
您还可以使用 VS Code 标题栏中的布局控件来切换包含聊天视图的辅助侧边栏。
您可以随时将聊天视图拖动到其他位置,甚至将其作为编辑器打开。了解有关 VS Code 中的自定义布局的更多信息。
输入聊天提示
要开始使用,请在聊天输入字段中输入您的问题。例如,询问有关一般编程主题的问题,或询问有关工作区中特定代码的问题。请务必附加相关上下文以帮助 Copilot 为您提供更相关的答案。
在聊天输入框中键入 /help
以获取有关 GitHub Copilot 以及如何与 Copilot 聊天互动的帮助。
Copilot 聊天可以提供包含以下内容的丰富且交互式的结果:简单文本、图像、用于调用 VS Code 命令的按钮、引用 URI 或编辑器位置或文件树(例如,当聊天参与者建议创建新工作区时,显示工作区预览)。
以下示例(“@workspace /new 使用 TypeScript 和 pug 的 Express”)显示了用于创建 Express 应用程序的聊天提示,该提示返回一个树视图,其中包含建议的工作区结构和一个用于创建新工作区的按钮。
随着对话的进行,Copilot 会维护您的聊天消息和响应的历史记录,并在其响应中提供相关的后续问题或命令。
代码块
根据您的问题,Copilot 聊天可能会在代码块中返回源代码。根据语言扩展,聊天响应中的代码块可能支持 IntelliSense,这使您可以通过将鼠标悬停在方法和符号上来获取有关方法和符号的信息,或者转到其定义。
将鼠标悬停在代码块上会显示在编辑器中应用、在光标处插入和复制选项。
更多操作 (...
) 按钮提供插入到新文件和插入到终端选项(⌃⌥Enter (Windows, Linux Ctrl+Alt+Enter))。
如果 Copilot 聊天检测到代码块包含 shell 命令,您可以直接在集成终端中使用插入到终端(⌃⌥Enter (Windows, Linux Ctrl+Alt+Enter))运行它。此选项会创建或打开活动终端并插入命令文本,以便您运行。
使用聊天:下一个代码块(⌥⌘PageDown (Windows, Linux Ctrl+Alt+PageDown))和聊天:上一个代码块(⌥⌘PageUp (Windows, Linux Ctrl+Alt+PageUp))在代码块之间导航。
您可以使用以下设置控制聊天中代码块的字体
聊天记录
Copilot 聊天会维护您以前的聊天对话的历史记录,您可以使用聊天视图中的显示聊天...按钮或使用命令面板中的聊天:显示聊天...命令来访问这些记录。
快速选择会显示以前的聊天列表,按最近时间排序。您可以选择一个聊天以在聊天视图中打开它。
快速聊天
如果您想快速询问 Copilot 一个问题,并且不想启动完整的聊天视图会话或在编辑器中打开内联聊天,则可以使用快速聊天下拉列表。
按键盘上的 ⇧⌥⌘L (Windows, Linux Ctrl+Shift+Alt+L) 以调出快速聊天。或者,在 Copilot 聊天命令中心菜单中选择快速聊天。
您可以输入问题,使用聊天参与者和斜杠命令来限定您的问题范围,然后使用下拉列表右上角的在聊天视图中打开按钮将讨论升级为完整的聊天视图会话。
多轮对话
当您在 Copilot 聊天中提出问题时,您不会被第一个响应所困扰。保持聊天对话打开,并继续迭代和提示 Copilot 以改进建议的解决方案。Copilot 具有生成的代码和您当前对话历史记录的上下文。当您继续提出其他问题时,Copilot 会根据您的要求进一步完善响应。
以下是使用内联聊天创建计算斐波那契数的函数的示例
如果您更喜欢不使用递归的解决方案,请更新聊天提示并将其提交给 Copilot 以获得不同的响应。
了解有关如何迭代 Copilot 聊天对话的更多信息。
终端内联聊天
与编辑器中的内联聊天类似,您可以在终端中调出 Copilot 内联聊天,以帮助您回答与终端和 shell 命令相关的问题。终端内联聊天使用 @terminal
聊天参与者,该参与者具有有关集成终端的 shell 及其内容的上下文。例如,您可以提出诸如“如何安装 npm 包”或“列出 src 目录中最大的 5 个文件”之类的问题。
要在终端中启动内联聊天,请按 ⌘I (Windows, Linux Ctrl+I) 键盘快捷键。
一旦建议了一个命令,请使用运行(⌘Enter (Windows, Linux Ctrl+Enter))在终端中运行该命令,或使用插入(⌥Enter (Windows, Linux Alt+Enter))将该命令插入到终端中。
或者,您可以在运行该命令之前通过将光标放置在响应中或在 Windows 和 Linux 上按 Ctrl+向下、Tab、Tab,或者在 macOS 上按 Cmd+向下、Tab、Tab 来直接在 Copilot 响应中编辑该命令。
智能操作
Copilot 聊天允许您使用自然语言从 Copilot 获得帮助。对于几种常见情况,您可以使用智能操作从 Copilot 获得帮助,而无需编写提示。这些智能操作的示例包括生成提交消息、生成文档、修复代码、解释代码或查看代码更改等任务。
这些智能操作在整个 VS Code UI 中可用。例如,您可以从编辑器上下文菜单或通过快速修复操作访问 Copilot 智能操作。
在编辑器中,您可以通过选择一段代码、右键单击,然后选择Copilot来访问智能操作。
最强大的智能操作是 修复 操作。这里有一个相对简单的 TypeScript 计算器,其中有一个错误提示“类型 'string' 的参数不能分配给类型 'number' 的参数”。选择闪光图标,然后选择 修复。
类似于 /fix
,/doc
智能操作也是一个常用的操作。要使用 /doc
,请选择一段代码,右键单击,然后选择 Copilot > 生成文档。Copilot 将为你的代码生成文档注释。
你还可以通过在聊天中使用等效的 斜杠命令 来调用其中一些智能操作。例如,你可以使用 /fix
来修复所选代码中的问题,或者使用 /doc
为所选代码生成文档。
聊天参与者
聊天参与者 就像可以帮助你的专家,他们有自己的专长。你可以在聊天输入框中键入“@”符号,然后输入参与者名称来调用聊天参与者。有几个内置的聊天参与者
@workspace
拥有关于你的工作区中代码的上下文,可以帮助你导航、查找相关文件或类。@vscode
了解 VS Code 编辑器本身的命令和功能,可以帮助你使用它们。@terminal
拥有关于集成终端 shell 及其内容的上下文。@github
了解你的 GitHub 存储库、问题、拉取请求和主题,还可以使用 Bing API 执行 Web 搜索。
扩展还可以贡献聊天参与者,为其领域提供专门的帮助。要查找可用聊天参与者的列表,请在聊天输入框中键入 @
。
以下是一些 Visual Studio Marketplace 中扩展的示例,它们为 VS Code 中的聊天视图贡献了聊天参与者。请转到 Marketplace 或使用集成的 扩展视图 并使用 chat-participant
标签搜索更多扩展。
@workspace
@workspace
聊天参与者知道如何收集有关你的工作区中代码的上下文,可以帮助你导航、查找相关的类、文件等。
因为它拥有所有必要的上下文,所以 @workspace
可以回答开发人员更可能提出的问题。例如,与代码的不同部分如何交互有关的问题
- “
@workspace
如何安排通知?”
或者需要了解相关代码、依赖项和设计模式的问题
- “
@workspace
添加表单验证,类似于新闻通讯页面”
@vscode
VS Code 可以通过多种方式进行自定义,以至于人们在发现一些隐藏的功能时会感到惊喜。为了帮助你充分释放 VS Code 的强大功能,我们创建了 @vscode
。
此聊天参与者了解有关 VS Code 的一切,可以帮助你弥合自然语言与 VS Code 命令和自定义之间的差距。@vscode
内部使用工具来访问所有设置和命令的索引,我们正在添加一个工具,以便此聊天参与者也可以使用 VS Code 文档。现在你可以问一些模糊的问题,例如
- “
@vscode
VS Code 虚假打开文件时的那个东西叫什么?以及如何禁用它?” - “
@vscode
如何更改我的 VS Code 颜色?”
使用 /runCommand
斜杠命令,你可以要求 @vscode
在编辑器中运行命令。例如,你可以要求 @vscode /runCommand show minimap
在编辑器中显示小地图。
@terminal
使用 @terminal
,你可以询问有关集成终端 shell、其缓冲区和当前选定的内容的问题。在以下示例中,你使用终端中的快速修复 使用 Copilot 解释 来获取有关失败的 shell 命令的信息。
请注意,“聊天”视图中的提示是如何填充了 @terminal #terminalLastCommand
以帮助纠正错误的。#terminalLastCommand
是一个聊天变量,允许你向聊天提示添加更多上下文。了解更多关于向聊天添加上下文的信息。
终端不会自动提取工作区上下文,因此关于你的工作区的问题可能需要一些时间。
@github
使用 @github
,你可以询问有关你的 GitHub 存储库以及你的提交、问题、拉取请求等的问题。以下是如何使用 @github
参与者的示例
@github 我分配的所有未完成的 PR 是什么?
@github 我分配的最新问题是什么?
@github 最近一次发布是什么时候?
在 GitHub 文档中获取有关可用的 GitHub 技能的更多信息。
扩展贡献的聊天参与者
你可以从 Visual Studio Code Marketplace 或 GitHub 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
数据类型。
你可以通过将鼠标悬停在提示上并选择 x 控件来从对话历史记录中删除提示和相应的响应。删除一个或多个提示以获得更相关的响应可能会很有用。
你可以使用“命令面板”中的 聊天:导出聊天... 命令将聊天会话的所有提示和响应导出为 JSON 文件。
使用语音交互
借助 VS Code 中的语音控制功能(由 VS Code 语音 扩展提供),你可以通过语音发起聊天对话
- 使用你的声音来口述你的聊天提示
- 使用“Hey Code”语音命令启动与 Copilot 聊天的语音会话
- 通过使用“按住说话”模式来加速聊天的语音输入
了解有关如何在 VS Code 中使用语音交互的更多信息。
隐私和透明度
我们强调负责任地使用人工智能,尤其是在源代码方面。inlineChat.acceptedOrDiscardBeforeSave 设置(默认启用)会在保存由 Copilot 生成的代码之前要求你确认。
启用此设置后,文件保存操作将等待你接受或放弃任何挂起的内联聊天会话。当启用自动保存时,也会应用此设置,在内联聊天结束之前将暂时禁用自动保存。
要为私有存储库启用更多工作区搜索功能,我们需要额外的权限。如果我们检测到我们尚未拥有这些权限,我们会在启动时要求它们。授予后,我们将安全地存储会话以备将来使用。
在 GitHub Copilot 信任中心 中了解有关安全性、隐私和透明度的更多信息。
常见问题
我应该如何在 Copilot 编辑、内联聊天、“聊天”视图和快速聊天之间进行选择?
下表提供了每个接口的功能比较。
功能 | Copilot 编辑 | 聊天视图 | 内联聊天 | 快速聊天 |
---|---|---|---|---|
接收代码建议 | ✅ | ✅ | ✅ | ✅ |
多文件编辑 | ✅ | ✅* | ✅* | |
在编辑器中预览代码编辑 | ✅ | ✅ | ||
代码审查流程 | ✅ | |||
回滚更改 | ✅ | |||
附加上下文 | ✅ | ✅ | ✅ | ✅ |
使用参与者和命令 | ✅ | ✅ | ||
生成 shell 命令 | ✅ | ✅ | ||
通用聊天 | ✅ | ✅ | ✅ |
* 代码块包含在聊天对话中,需要手动将其应用到正确的文件
其他资源
你可以在 GitHub Copilot 文档中阅读有关 GitHub Copilot 以及如何在 VS Code 中使用它的更多信息。
或者在 YouTube 上查看 VS Code Copilot 系列,你可以在其中找到更多入门内容以及有关将 Copilot 与 Python、C#、Java、PowerShell、C++ 等一起使用的特定于编程的视频。
后续步骤
-
通过入门的 Copilot 聊天教程开始使用。
-
使用 Copilot 编辑 跨多个文件进行编辑。