在 VS Code 中使用聊天
您可以在 Visual Studio Code 中使用聊天,通过自然语言提问有关您的代码库的问题或跨项目进行编辑。聊天可以在不同的模式下运行,针对您的用例进行了优化,从提问问题到进行多文件编辑或启动代理式编码工作流。
在需要以下情况时,您可能需要在 VS Code 中使用聊天
- 理解代码 - “解释一下这个认证中间件是如何工作的”
- 调试问题 - “为什么我在这个循环中遇到了空引用?”
- 获取代码建议 - “给我展示一下如何在 Python 中实现二叉搜索树”
- 优化性能 - “帮我提高这个数据库查询的效率”
- 学习最佳实践 - “异步函数中处理错误的推荐方式是什么?”
- 获取 VS Code 提示 - “如何自定义键盘快捷方式?”
如果您还没有 Copilot 订阅,可以通过注册 Copilot 免费计划 免费使用 Copilot,并获得每月有限的代码补全和聊天交互次数。
先决条件
- 安装最新版本的 Visual Studio Code
- 访问 Copilot
聊天模式
根据您的具体需求,您可以选择不同的聊天模式
模式 | 描述 | 场景 |
---|---|---|
提问 | 询问有关您的代码库或技术概念的问题。 在 稳定版 | Insiders 版 中打开。 |
理解一段代码的工作原理,构思软件设计想法,或探索新技术。 |
编辑 | 跨代码库中的多个文件进行编辑。 在 稳定版 | Insiders 版 中打开。 |
直接在您的项目中应用代码编辑,以实现新功能、修复错误或重构代码。 |
代理 | 启动代理式编码工作流。 在 稳定版 | Insiders 版 中打开。 |
以最小的指导自主实现新功能或项目的高级要求,调用工具执行专业任务,并在出现问题时迭代解决。 |
通过使用聊天视图中的模式下拉菜单在不同的聊天模式之间切换。
在 VS Code 中访问聊天
您可以通过几种方式在 VS Code 中访问聊天
-
聊天视图 (⌃⌘I (Windows, Linux Ctrl+Alt+I)): 在专用视图中进行持续的多轮聊天对话。随时切换不同的聊天模式。默认情况下,聊天视图位于 VS Code 中的辅助侧边栏中。
-
内联聊天 (⌘I (Windows, Linux Ctrl+I)): 直接从编辑器 (编辑器内联聊天) 或集成终端 (终端内联聊天) 启动聊天对话,以便就地获取建议。
-
快速聊天 (): 快速提问问题并回到您正在进行的工作。
使用相应的键盘快捷方式或通过 VS Code 标题栏中的 Copilot 菜单快速访问聊天。
提交聊天 Prompt
您可以使用自然语言进行聊天请求。您可以提问有关您的代码库的问题、获取代码建议或构思想法。
打开聊天视图 (⌃⌘I (Windows, Linux Ctrl+Alt+I)) 并在聊天输入字段中输入您的 Prompt。请注意,响应可能包含富文本内容,例如 Markdown 文本、代码块、按钮、文件树等。
以下是一些您可以尝试的示例 Prompt
- 提问关于编码和技术概念的问题 (“什么是链表?”,“排名前 10 的流行 Web 框架”)
- 集思广益,探讨解决编码问题的最佳方法 (“如何为我的项目添加认证?”)
- 解释一段代码 ("@workspace /explain", “这段代码有什么作用?”)
- 建议代码修复 ("@workspace /fix", “这个方法抛出了 FileNotFoundException 异常”)
- 生成单元测试用例或代码文档 ("@workspace /tests", "@workspace /doc")
- 询问 VS Code 设置 (@vscode 如何禁用 minimap?)
更多 Prompt 示例,请参见 GitHub 文档中的 Copilot Chat Cookbook。
在聊天输入字段中键入 /help
,以获取关于 GitHub Copilot 以及如何与 Copilot Chat 交互的帮助。
在编辑器中打开聊天会话
您可以将聊天会话作为单独的编辑器选项卡打开,甚至作为单独的窗口打开。这样一来,您就可以同时打开多个聊天会话。
要在编辑器或单独的窗口中打开聊天会话
-
选择聊天视图右上角的
...
图标。 -
选择在编辑器中打开聊天或在新窗口中打开聊天。
在浮动窗口中打开聊天会话
VS Code 支持浮动窗口,这对于在屏幕上或甚至在不同的显示器上将聊天视图保持在单独的窗口中非常有用。您可以同时在浮动窗口中打开多个聊天会话。
要在浮动窗口中打开聊天会话,请选择聊天视图右上角的 ...
图标,然后选择在新窗口中打开聊天。
默认情况下,聊天会话以紧凑模式打开,该模式隐藏了标题栏和其他 UI 元素。选择浮动窗口标题栏中的紧凑模式图标,以在紧凑模式和正常模式之间切换。
(可选)启用始终置顶模式,以使聊天视图始终保持在其他窗口之上。
了解更多关于 VS Code 中浮动窗口的信息。
更改语言模型
Copilot 提供了不同的内置语言模型供您选择。有些模型针对快速编码任务进行了优化,而另一些则更适合较慢的规划和推理任务。使用聊天输入字段中的模型选择器来更改 Copilot 用于生成响应的模型。
您还可以添加来自其他模型提供商的模型(预览)并在聊天中使用它们。了解更多关于如何使用来自其他提供商的模型的详细信息。
可用模型列表可能因您的 Copilot 订阅而异,并可能随时间变化。有关可用语言模型的更多信息,请参阅 GitHub Copilot 文档。
在聊天中引用工具
您可以通过键入 #
后跟工具名称,直接在您的 Prompt 中引用代理模式工具。您可以在所有聊天模式(提问、编辑和代理模式)中执行此操作。
添加聊天上下文
Copilot 尝试根据您的自然语言聊天 Prompt 来确定您问题的意图和范围。为了获得更相关的响应,请在您的聊天 Prompt 中提供附加上下文。例如,添加文件、测试结果、终端输出或其他可能与您问题相关的上下文类型。
了解更多关于向聊天 Prompt 添加上下文的详细信息。
通过在您的 Prompt 中添加 #codebase
,让 Copilot 自动找到正确的文件。请务必启用 github.copilot.chat.codesearch.enabled (预览)设置以获得最佳结果。
视觉 (预览)
聊天支持视觉功能,这意味着您可以将图像作为上下文附加到您的聊天 Prompt 中,并提问关于该图像的问题。例如,附加一段代码的屏幕截图并要求解释它,或者附加 UI 的草图并要求代理模式实现它。
您可以将图像从 Web 浏览器拖放到聊天视图中以将其作为上下文添加。
聊天历史记录
聊天视图设计为多轮对话。Copilot 使用对话历史记录作为当前 Prompt 的上下文。这意味着您可以提出后续问题或澄清您之前的问题,而无需重复上下文。
您可以随时使用聊天视图中的新建聊天 (+
) 按钮 (⌃L (Windows, Linux Ctrl+L)) 创建新的聊天会话。如果您想切换到不同的主题并避免之前的上下文和历史记录,这会很有用。
您可以通过聊天视图中的显示聊天... 按钮或通过命令面板中的聊天:显示聊天... 命令访问以前的聊天会话。选择一个条目以在聊天视图中打开该聊天会话。
您可以使用命令面板中的聊天:导出聊天... 命令将聊天会话的所有 Prompt 和响应导出到 JSON 文件中。
还原先前的请求
在聊天会话中,您可以从该会话的对话历史记录中删除特定的 Prompt 和相应的响应。将鼠标悬停在 Prompt 上并选择 x 控件。如果您注意到语言模型未提供相关响应或正在朝着不希望的方向发展,则删除请求可能会很有用。
使用语音交互
借助 VS Code 中的语音控制功能(由 VS Code Speech 扩展提供),您可以使用语音启动聊天对话
- 使用您的语音来口述您的聊天 Prompt
- 使用“Hey Code”语音命令启动与 Copilot Chat 的语音会话
- 通过使用“按住说话”模式加速聊天的语音输入
了解更多关于如何在 VS Code 中使用语音交互的信息。
隐私和透明度
为了为私有存储库启用更多工作区搜索功能,我们需要额外的权限。如果我们检测到尚未拥有这些权限,我们将在启动时请求这些权限。授予权限后,我们将安全地存储会话以备将来使用。
了解更多关于安全性、隐私和透明度的信息,请参阅 GitHub Copilot 信任中心。
常见问题
如何选择不同的聊天模式?
不同的聊天模式针对不同的用例进行了优化
-
使用 编辑器内联聊天 直接在活动编辑器中提问或进行编辑。这对于进行代码更改或提问范围限定于活动文件的问题非常有用。
-
使用 提问模式 提问有关您的代码库或技术概念的问题。响应可能包含代码建议,您可以手动将这些建议单独应用到您的代码库中。更改不会自动应用到您的代码库。
-
使用 编辑模式 根据您的聊天 Prompt 直接跨代码库中的多个文件应用编辑。您需要提供与您的 Prompt 相关的上下文和文件。
-
使用 代理模式 启动代理式编码工作流,Copilot 在该工作流中自主确定相关的上下文和文件,确定需要执行哪些任务来完成请求。然后,它独立迭代以实现所需的结果,并在出现问题时进行修复。代理模式可以调用工具执行专业任务,例如运行终端命令、验证测试用例或访问 API。
附加资源
您可以在 GitHub Copilot 文档 中阅读更多关于 GitHub Copilot 以及如何在 VS Code 中使用它的信息。
或者查看 YouTube 上的VS Code Copilot 系列,您可以在其中找到更多介绍性内容以及使用 Copilot 针对 Python、C#、Java、PowerShell、C++ 等编程语言的视频。
后续步骤
-
通过介绍性的 Copilot Chat 教程 入门。
-
使用 Copilot Edits 跨多个文件进行编辑。