在 VS Code 中使用 Copilot Chat
通过 Visual Studio Code 中的 Copilot Chat,你可以通过聊天提问以获得代码建议、加深对代码的理解,甚至配置你的编辑器。无需在文档或在线论坛中搜索答案,直接在 VS Code 中向 Copilot 提问,并将建议立即应用到你的代码库中。
除了使用聊天获取建议外,Copilot 还可以直接在项目中的多个文件中进行编辑。在这种情况下,你可以考虑使用 Copilot Edits。你可以轻松地将现有的聊天对话转移到 Copilot Edits。
如果你还没有 Copilot 订阅,你可以通过注册 Copilot Free 计划免费使用 Copilot,并获得每月有限的补全和聊天互动次数。
在 VS Code 中访问 Copilot Chat
你可以通过多种方式在 VS Code 中向 Copilot 提交提示,具体取决于你的工作流程。
- 聊天视图:在侧边栏拥有一个 AI 助手,帮助你解答问题并提供代码建议 (⌃⌘I (Windows, Linux Ctrl+Alt+I))
- 内联聊天:直接从编辑器或集成终端启动内联聊天对话,以获得就地建议 (⌘I (Windows, Linux Ctrl+I))
- 快速聊天:快速提问并返回到你正在做的事情 (⇧⌥⌘L (Windows, Linux Ctrl+Shift+Alt+L))
你还可以使用 VS Code 标题栏中的 Copilot 菜单开始使用不同的聊天体验。
提交提示
你可以要求 Copilot Chat 提供代码建议、加深对代码的理解、为你的项目设置调试,或帮助配置 VS Code。
-
打开聊天视图 (⌃⌘I (Windows, Linux Ctrl+Alt+I))
提示要在编辑器中直接获得内联代码建议,请考虑改用编辑器内联聊天。
-
在聊天输入字段中输入提示,或选择提示建议之一。一些提示示例:
- 询问有关编码和技术概念的问题(“什么是链表?”,“十大流行的 Web 框架”)
- 集思广益,讨论如何最佳地解决编码问题(“如何为我的项目添加身份验证?”)
- 解释别人的代码(“@workspace /explain”,“这段代码是做什么的?”)
- 提出代码修复建议(“@workspace /fix”,“此方法引发 FileNotFoundException 异常”)
- 生成单元测试用例或代码文档(“@workspace /tests”,“@workspace /doc”)
- 询问有关 VS Code 设置的问题(@vscode 如何禁用小地图?)
有关更多提示示例,请参阅 GitHub 文档中的 Copilot Chat Cookbook。
-
查看 Copilot 的响应,并在需要时提出后续问题。
响应可能包含文本、代码块、按钮、代码符号链接、文件树或其他富内容。
要查看 Copilot 用于响应的资源,请在聊天响应中选择 使用了 n 个资源 下拉列表。你可以通过将上下文附加到聊天提示来帮助 Copilot 提供更相关的答案。
随着对话的进行,Copilot 会维护聊天消息和响应的历史记录,并在其响应中提供相关的后续问题或命令。
在聊天输入字段中键入 /help
以获取有关 GitHub Copilot 以及如何与 Copilot Chat 交互的帮助。
向聊天提示添加上下文
Copilot 尝试根据你的自然语言聊天提示确定你的问题的意图和范围。在聊天响应中,选择 使用了 n 个资源 下拉列表以查看 Copilot 用于生成响应的资源。
为了帮助 Copilot 为你提供最佳和最相关的答案,请向你的聊天提示添加上下文。例如,附加特定文件、特定代码符号、当前编辑器选择等等。
有几种方法可以向你的聊天提示添加上下文:
-
VS Code 会自动将当前活动编辑器添加为上下文。如果你在编辑器中选择了代码块,则仅将该选择项添加为上下文。你可以通过选择上下文项旁边的禁用(眼睛)图标来禁用添加活动编辑器。
-
使用附加 图标 (⌘/ (Windows, Linux Ctrl+/)),然后从快速选择中选择上下文类型。
提示要从附件快速选择中快速添加多个项目,请使用 向上 和 向下 键导航列表,使用 向右 键将项目添加为上下文,然后对其他项目重复此操作。
-
将编辑器选项卡或来自资源管理器视图、搜索视图或编辑器面包屑的文件或文件夹拖放到聊天视图上。
-
通过键入
#
字符来使用聊天变量,你将看到可用聊天变量的列表。例如,你可以使用
#selection
将当前编辑器选择添加到你的聊天提示,使用#file
添加工作区中的特定文件,或使用#sym
添加工作区中的符号。提示键入
#
并将其用作 IntelliSense 触发器,用于选择文件或符号。 -
在资源管理器或搜索视图中的文件上使用上下文菜单 Copilot > 将文件添加到聊天,或在编辑器中对文本选择使用 将选择添加到聊天。
这些命令在 VS Code 标题栏的 Copilot 菜单中也可用。
如果可能,附加文件时将包含文件的完整内容。如果文件太大而无法放入上下文窗口,则将包含文件的轮廓,其中包含函数及其描述,但不包含实现。如果轮廓也太大,则该文件将不会成为提示的一部分。
聊天参与者
聊天参与者就像领域专家,他们有可以帮助你的专业知识。你可以通过在聊天输入字段中键入“@”,然后输入参与者名称来调用聊天参与者。有几个内置的聊天参与者,扩展也可以贡献聊天参与者。
要列出所有已安装的聊天参与者,请在聊天输入字段中键入 @
。
内置参与者 | 描述 |
---|---|
@workspace |
了解你的工作区中的代码。使用它来导航你的代码库,查找相关的类、文件等。 提示示例
|
@vscode |
了解 VS Code 的功能、设置和 API。 提示示例
|
@terminal |
了解集成终端 shell 及其内容。 提示示例
|
@github |
了解并掌握 GitHub 存储库问题、PR 等方面的技能。还可以使用 Bing API 执行 Web 搜索。获取有关使用 GitHub 技能的更多信息。 提示示例
|
扩展贡献的聊天参与者
你可以从 Visual Studio Code Marketplace 或 GitHub Marketplace 安装其他聊天参与者。
通过 VS Code 扩展贡献的聊天参与者是客户端扩展,它们可以完全访问 VS Code 扩展 API 表面。
通过 GitHub App 贡献的聊天参与者不在你的本地计算机上运行,并且必须显式请求访问你的本地编辑器上下文。在你安装贡献聊天参与者的 GitHub App 后,第一次在 VS Code 中 @-提及
参与者时,系统会要求你授权其访问你的本地编辑器上下文。
为了保护你的隐私,你共享编辑器上下文与来自 GitHub App 的聊天参与者的首选项会按工作区保存,除非你选择“允许所有工作区”。
以下是一些贡献聊天参与者的 VS Code 扩展的示例。转到 Marketplace 或使用集成的扩展视图 (⇧⌘X (Windows, Linux Ctrl+Shift+X)) 并按标签 chat-participant
(tag:chat-participant
) 搜索。
斜杠命令
斜杠命令提供特定指令的快捷方式,以避免你必须编写复杂的提示。要在提示中使用斜杠命令,请键入 /
字符,后跟命令。聊天参与者可以贡献自己的斜杠命令。
例如,@workspace /new Express app with pug and typescript
是生成新工作区并在 TypeScript 中搭建使用 Pug 视图引擎的新 Express 应用程序的快捷方式。
一些常见的内置斜杠命令包括:
/clear
:开始新的聊天会话/help
:获取有关使用 GitHub Copilot 的帮助@workspace /explain
(或/explain
):解释所选代码的工作原理@workspace /fix
(或/fix
):为所选代码中的问题提出修复建议@workspace /new
(或/new
):为新工作区或新文件搭建代码
要列出所有可用的斜杠命令,请在聊天输入字段中键入 /
。
更改 AI 模型
不同的大型语言模型 (LLM) 在不同类型的数据上进行训练,并且可能具有不同的功能和优势。使用 Copilot Chat,你可以更改用于生成响应的语言模型。
使用聊天输入字段中的模型选择器来更改当前模型。
可用模型的列表可能会有所不同,并且会随着时间推移而变化。有关可用语言模型的更多信息,请参阅 GitHub Copilot 文档。
内联聊天
使用内联聊天直接从编辑器中提交提示并获取代码建议,而无需离开你的工作上下文。
要调出编辑器内联聊天,请在任何文件中使用 ⌘I (Windows, Linux Ctrl+I) 键盘快捷键。或者,打开一个文件,然后从标题栏中的 Copilot 菜单中选择 编辑器内联聊天。
Copilot 会在编辑器中与你的代码一起就地显示代码建议。你可以接受 (⌘Enter (Windows, Linux Ctrl+Enter)) 或放弃 (Escape)。如果你对建议不满意,你可以为你的提示生成新的代码建议。
如果你在编辑器中选择了一段代码,Copilot 会将你的问题范围限定为该选择项。
你不限于要求代码更改。使用内联聊天提出在处理代码库时出现的更具探索性的问题。例如,使用诸如 解释这段代码
或 如何添加功能 X?
等提示。
将上下文附加到你的内联聊天提示,以包含相关文件、代码符号或其他上下文。了解有关向聊天提示添加上下文的更多信息。
聊天视图
聊天视图是一个专用视图,在处理代码时保持打开状态非常有用,你可以在其中与 Copilot 进行多轮对话。
要打开聊天视图,请使用 ⌃⌘I (Windows, Linux Ctrl+Alt+I) 键盘快捷键,或在标题栏中的 Copilot 菜单中选择 打开聊天。
默认情况下,聊天视图位于辅助侧边栏中。辅助侧边栏始终位于与主侧边栏相对的位置,因此你可以同时打开聊天视图和主侧边栏中的资源管理器、源代码管理或其他视图。
你可以随时将聊天视图拖动到另一个位置,甚至将其作为编辑器打开。了解有关 VS Code 中的自定义布局的更多信息。
应用来自聊天的代码块
聊天响应可能包含一个或多个代码块。根据语言扩展,聊天响应中的代码块可能支持 IntelliSense,这使你可以通过将鼠标悬停在方法和符号上来获取有关方法和符号的信息,或者转到它们的定义。
要将代码块应用于你的代码库,请将鼠标悬停在代码块上,然后选择 在编辑器中应用 按钮。Copilot 尝试将建议的更改应用于你现有的代码。
代码块可用的其他操作包括:
- 将代码块插入到当前光标位置
- 将代码块复制到剪贴板
- 将代码块插入到集成终端
- 将代码块插入到新文件
如果 Copilot Chat 检测到代码块包含 shell 命令,你可以使用 插入到终端 (⌃⌥Enter (Windows, Linux Ctrl+Alt+Enter)) 在集成终端中直接运行它。此选项创建或打开活动终端并插入命令文本,以便你运行。
使用 聊天:下一个代码块 (⌥⌘PageDown (Windows, Linux Ctrl+Alt+PageDown)) 和 聊天:上一个代码块 (⌥⌘PageUp (Windows, Linux Ctrl+Alt+PageUp)) 在代码块之间导航。
你可以使用以下设置控制聊天中代码块的字体:
聊天历史记录
你可以随时使用聊天视图中的 新建聊天 按钮 (⌃L (Windows, Linux Ctrl+L)) 创建聊天会话。
Copilot Chat 维护你的先前聊天会话的历史记录,你可以通过使用聊天视图中的 显示聊天... 按钮或在命令面板中使用 聊天:显示聊天... 命令来访问这些记录。
快速选择会显示按最近时间排序的先前聊天列表。你可以选择一个聊天以在聊天视图中打开它。
在聊天会话中,你可以从该会话的对话历史记录中删除特定的提示和相应的响应。将鼠标悬停在提示上,然后选择 x 控件。删除一个或多个提示以获得更相关的响应可能很有用。
你可以使用命令面板中的 聊天:导出聊天... 命令将聊天会话的所有提示和响应导出到 JSON 文件中。
快速聊天
如果你想向 Copilot 快速提问,并且不想开始完整的聊天视图会话或在编辑器中打开内联聊天,则可以使用快速聊天下拉列表。
按键盘上的 ⇧⌥⌘L (Windows, Linux Ctrl+Shift+Alt+L) 调出快速聊天。或者,在标题栏中的 Copilot 菜单中选择 快速聊天。
如果你想继续对话,请使用下拉列表右上角的 在聊天视图中打开 按钮将快速聊天对话升级为完整的聊天视图会话。
终端内联聊天
与编辑器中的内联聊天类似,你可以在终端中调出 Copilot 内联聊天,以帮助你回答与终端和 shell 命令相关的问题。
终端内联聊天使用 @terminal
聊天参与者,它具有有关集成终端的 shell 及其内容的上下文。例如,你可以提出诸如“如何安装 npm 包”或“列出 src 目录中排名前 5 的最大文件”之类的问题。
要在终端中启动内联聊天,请在终端中按 ⌘I (Windows, Linux Ctrl+I) 键盘快捷键。
一旦建议了命令,使用 运行 (⌘Enter (Windows, Linux Ctrl+Enter)) 在终端中运行该命令,或使用 插入 (⌥Enter (Windows, Linux Alt+Enter)) 将命令插入到终端中。
智能操作
对于几种常见场景,你可以使用智能操作从 Copilot 获取帮助,而无需编写提示。这些智能操作的示例用于诸如生成提交消息、生成文档、修复代码、解释代码或审查代码更改等任务。
这些智能操作在整个 VS Code UI 中都可用。例如,你可以从编辑器上下文菜单或通过快速修复操作访问 Copilot 智能操作。
在编辑器中,你可以通过选择一段代码,右键单击,然后选择 Copilot 来访问智能操作。
最强大的智能操作是 修复 操作,它可以帮助你纠正编码问题。选择编辑器中的闪光图标,然后选择 使用 Copilot 修复。有一个相应的 /fix
斜杠命令。
类似地,有一个 Copilot > 生成文档 智能操作(/doc
斜杠命令)可以为你的代码生成文档。
使用语音交互
借助 VS Code 中的语音控制功能(由 VS Code Speech 扩展提供),你可以使用语音启动聊天对话:
- 使用你的声音来口述你的聊天提示
- 使用“Hey Code”语音命令启动与 Copilot Chat 的语音会话
- 通过使用“按住说话”模式来加速聊天的语音输入
了解有关如何在 VS Code 中使用语音交互的更多信息。
隐私和透明度
我们强调负责任地使用 AI,尤其是在源代码方面。默认情况下启用的 inlineChat.acceptedOrDiscardBeforeSave 设置会在保存 Copilot 生成的代码之前要求你确认。
启用此设置后,文件保存操作将等待你接受或放弃任何挂起的内联聊天会话。这也适用于启用自动保存的情况,在这种情况下,自动保存将被暂时禁用,直到内联聊天结束。
为了为私有存储库启用更多工作区搜索功能,我们需要额外的权限。如果我们检测到我们尚未拥有这些权限,我们将在启动时请求这些权限。一旦获得授权,我们将安全地存储会话以供将来使用。
在 GitHub Copilot 信任中心了解有关安全性、隐私性和透明度的更多信息。
常见问题
如何在 Copilot Edits、内联聊天、聊天视图和快速聊天之间进行选择?
下表提供了每个界面的功能比较。
功能 | Copilot Edits | 聊天视图 | 内联聊天 | 快速聊天 |
---|---|---|---|---|
接收代码建议 | ✅ | ✅ | ✅ | ✅ |
多文件编辑 | ✅ | ✅* | ✅* | |
在编辑器中预览代码编辑 | ✅ | ✅ | ||
代码审查流程 | ✅ | |||
回滚更改 | ✅ | |||
附加上下文 | ✅ | ✅ | ✅ | ✅ |
使用参与者和命令 | ✅ | ✅ | ||
生成 shell 命令 | ✅ | ✅ | ||
通用聊天 | ✅ | ✅ | ✅ |
* 代码块包含在聊天对话中,需要手动应用于正确的文件
更多资源
你可以在 GitHub Copilot 以及如何在 VS Code 中使用它的更多信息,请参阅 GitHub Copilot 文档。
或者查看 YouTube 上的 VS Code Copilot 系列,你可以在其中找到更多入门内容和针对特定编程语言的视频,了解如何将 Copilot 与 Python、C#、Java、PowerShell、C++ 等语言结合使用。
后续步骤
-
开始学习入门级 Copilot Chat 教程。
-
使用 Copilot Edits 在多个文件中进行编辑。