现已发布!阅读关于 11 月新增功能和修复的内容。

管理聊天会话

Visual Studio Code 中的聊天功能提供了与 AI 进行基于聊天的交互。当您探索不同的主题或任务时,创建多个聊天会话,并将每个会话限定在特定的上下文中。VS Code 提供了多种方式来创建和管理聊天会话:在聊天视图中、作为编辑器选项卡或在单独的窗口中。

本文介绍了如何创建和管理聊天会话,以及如何使用聊天会话历史记录来继续以前的对话。

创建新的聊天会话

聊天会话是您与 AI 在单个对话中的交互历史记录,包括该对话中使用的所有提示、响应和上下文。此历史记录为您的后续提示提供了上下文,允许您提出后续问题或完善请求。

根据您的工作流程,选择在聊天视图中、编辑器选项卡中或单独的窗口中创建新的聊天会话。

当您创建新的聊天会话时,对话历史记录和上下文将被清除。当您想要更改主题或避免延续先前请求的上下文时,请开始新的聊天会话。例如,当从调试特定问题切换到询问有关技术概念的一般性问题时,请开始新的会话。

您可以通过使用聊天会话历史记录随时返回到以前的聊天会话。

在聊天视图中打开聊天会话

默认情况下,聊天视图位于 VS Code 的辅助侧边栏中。当您希望将聊天体验打开在侧边,同时主侧边栏仍可用于其他视图(例如资源管理器或源代码管理)时,这很有用。

要开始新的聊天会话并清除对话历史记录

  • 打开聊天视图并选择新建聊天+)或按⌘N(Windows、Linux Ctrl+N

  • 使用命令面板中的聊天:新建聊天命令

在编辑器选项卡中打开聊天

您可以将聊天会话作为编辑器选项卡打开,以便在代码文件旁边拥有聊天体验。当您想要同时打开多个聊天会话,或者当您想要将聊天会话与代码文件并排排列时,这很有用。

要直接在编辑器选项卡中打开新的聊天会话

  • 打开聊天视图并选择新建聊天+)> 新建聊天编辑器

  • 使用命令面板中的聊天:新建聊天编辑器命令

要在编辑器选项卡中打开现有的聊天会话

  • 选择聊天视图右上角的...图标,然后选择在编辑器中打开聊天

  • 使用命令面板中的聊天:在编辑器中打开聊天命令

在单独的窗口中打开聊天

您可以将聊天会话打开在单独的浮动窗口中。这对于多显示器设置很有用,或者当您想要在主窗口中处理代码时保持聊天会话可见时很有用。要将聊天视图保持在其他窗口的顶部,请启用“始终置顶”模式。

您可以从聊天视图中将现有的聊天会话打开在单独的窗口中,也可以直接在新的窗口中创建新的聊天会话。

要直接在新的窗口中打开新的聊天会话

  • 打开聊天视图并选择新建聊天+)> 新建聊天窗口

  • 使用命令面板中的聊天:新建聊天窗口命令

要在单独的窗口中打开现有的聊天会话

  • 选择聊天视图右上角的...图标,然后选择在新窗口中打开聊天

  • 使用命令面板中的聊天:在新窗口中打开聊天命令

聊天会话历史记录

当您创建新的聊天会话时,以前的对话历史记录将被清除。但是,您的所有聊天会话都保存在会话历史记录中,允许您返回到以前的对话并从上次离开的地方继续。当您想要查看过去的交互、引用以前的响应或从较早的会话恢复对话时,这很有用。

默认情况下,当您开始新的聊天会话时,聊天视图会显示您最近的会话,无论它们是在本地运行、在后台运行还是在云中运行。选择显示所有会话以查看完整的会话历史记录,允许您搜索和筛选列表。该列表限定于您当前的工作区。如果您没有打开工作区,则列表会显示您所有工作区中的所有会话。

提示

加宽聊天视图以自动切换到并排模式,或使用聊天视图右上角的切换按钮。

Screenshot of an agent session in VS Code showing code changes and chat interaction.

当您从列表中选择一个会话以打开以前的聊天会话时,该会话中的所有提示、响应和上下文都会在聊天视图中恢复。

了解有关代理以及查看和管理代理会话的更多信息。

保存和导出聊天会话

您可以保存聊天会话以保留重要的对话,或稍后将其重用于类似的任务。

将聊天会话导出为 JSON 文件

您可以导出聊天会话以供日后参考或与他人共享。导出聊天会话会创建一个 JSON 文件,其中包含会话中的所有提示和响应。

要导出聊天会话

  1. 在聊天视图中打开您想要导出的聊天会话。

  2. 从命令面板运行聊天:导出聊天...命令(⇧⌘P(Windows、Linux Ctrl+Shift+P)。

  3. 选择保存 JSON 文件的位置。

或者,您可以右键单击消息并选择复制,将单个提示或响应复制到剪贴板。要以 Markdown 格式复制整个聊天会话,请右键单击聊天视图并选择全部复制

将聊天会话保存为可重用提示

您可以将聊天会话保存为可重用提示,以便重用于类似的任务。

要将聊天会话保存为可重用提示

  1. 在聊天视图中打开您想要保存的聊天会话。

  2. 在聊天输入框中键入/savePrompt并按Enter

    该命令会创建一个.prompt.md文件,将您当前的聊天对话概括为可重用提示。提示文件在适当的地方包含占位符。

  3. 根据需要查看和编辑生成的提示文件,然后将其保存到您的工作区。

上下文隔离的子代理

子代理使您能够将任务委派给聊天会话中隔离的、自主的代理。子代理独立于主聊天会话运行,并拥有自己的上下文窗口。这对于优化复杂多步骤任务(例如研究或分析)的上下文管理非常有用。

子代理不会异步或在后台运行,但是,它们自主运行而无需暂停等待用户反馈。当子代理完成其任务时,它只会将最终结果返回给主聊天会话,从而使主上下文窗口专注于主要对话。

子代理使用与主聊天会话相同的代理,并可以访问相同的工具,除了创建其他子代理。它们还使用与主聊天会话相同的 AI 模型。

调用子代理

要在提示中调用子代理

  1. 在工具选择器中启用runSubagent工具

    如果您使用自定义提示文件自定义代理,请确保在tools frontmatter 属性中指定runSubagent

  2. 在聊天提示中,请求使用子代理来执行任务。

    以下示例说明了如何调用子代理

    • 使用子代理研究 Web 应用程序的最佳身份验证方法。总结研究结果。
    • 运行 #runSubagent 使用只读工具全面研究用户的任务。当您有足够的上下文来起草计划的信心达到 80% 时,停止研究。返回此上下文。

将自定义代理与子代理一起使用(实验性)

默认情况下,子代理继承主聊天会话中的代理。您可以配置子代理以使用不同的内置或自定义代理。例如,如果您想将研究任务作为开发任务的一部分运行,您可以在使用研究代理的子代理中启动研究任务。

要使用特定代理运行子代理

  1. 使用chat.customAgentInSubagent.enabled设置启用对子代理中自定义代理的支持

  2. 确保自定义代理的infer属性未设置为false,因为这会阻止代理在子代理中使用。

  3. 向 AI 提示哪些代理可用于作为子代理。您的自定义代理应该被列出。

    Which subagents can you use?
    
  4. 提示 AI 为子代理使用自定义或内置代理。例如

    • 运行研究代理作为子代理来研究此项目的最佳身份验证方法。
    • 在子代理中使用计划代理为 myfeature 创建实施计划。然后将计划保存在 plans/myfeature.plan.md 中
注意

要防止自定义代理用作子代理,请在*.agent.md文件中将元数据属性infer设置为false

代理会话

注意

代理会话视图目前处于预览阶段。

代理使您能够以异步方式在后台执行 AI 编码任务。这使您可以在代理处理您的请求时继续在 VS Code 中工作。这些代理与 VS Code 中的聊天会话不同,因为代理在后台工作,而聊天会话是交互式的,需要您的实时输入。代理还可以在不同的环境中运行,例如在您的机器上本地运行或在云中远程运行。

提示

OpenAI Codex 代理使您能够使用您的 Copilot Pro+ 订阅进行身份验证和访问 Codex,而无需额外的设置。在 GitHub 文档中获取有关 GitHub Copilot 计费和高级请求的更多信息。

代理会话视图

代理会话视图提供了一个集中位置来管理您的活动聊天会话,包括 VS Code 中的本地会话和由其他环境中的后台代理创建的会话,例如 Copilot 编码代理、GitHub Copilot CLI 或 OpenAI Codex。使用chat.agentSessionsViewLocation设置启用代理会话视图。

代理会话视图目前支持以下编码代理集成:GitHub Copilot 编码代理、GitHub Copilot CLI 和 OpenAI Codex。我们正在努力在未来进一步扩展对更多编码代理的支持。

代理会话视图列出了按来源组织的所有活动聊天会话。该视图分为 VS Code 中的本地聊天会话和编码代理会话。

Screenshot of the Agent Sessions view in the Primary Side Bar, showing a view for local chat sessions, and coding agents like Copilot coding agent, Copilot CLI and Codex.

您可以直接从代理会话视图中通过选择相应部分中的+控件来启动特定代理的新聊天会话。

选择一个聊天会话将其作为聊天编辑器选项卡打开并监控其进度。右键单击会话以获取在新窗口中或在聊天视图中打开它的选项。

代理可能会提供超出标准聊天会话的额外功能,例如取消正在进行的任务、签出或关闭相关的拉取请求,或将其文件更改直接应用于您的工作区。右键单击代理会话视图中的代理会话以查看可用选项。

注意

扩展开发人员可以通过拟议的 API chatSessionsProvider 了解如何与代理会话视图集成。该 API 目前处于拟议状态,可能会发生变化。

将任务委派给代理

要将任务委派给代理,您可以直接从代理会话视图启动会话。如果您已经启动了本地聊天会话,您也可以从该会话将任务委派给 Copilot 编码代理。委派给代理使您可以将复杂或耗时的任务卸载给代理,同时继续工作。

要将任务从本地聊天会话委派给 Copilot 编码代理

  1. 打开聊天视图或聊天编辑器选项卡。

  2. 在聊天输入框中键入提示或打开现有的聊天会话。

  3. 选择委派给代理以将提示发送给编码代理。如果启用了多个代理,请从列表中选择代理。

    Screenshot of the Chat view with the Delegate to Agent button highlighted.

    编码代理会话已创建,并提供了来自本地聊天会话的上下文。

  4. 在代理会话视图中监控编码代理会话的进度。

在编辑器中,您还可以通过选择 TODO 注释上方的相关代码镜头来委派任务。然后,您可以在代理会话视图中跟踪委派任务的进度。

Screenshot of a code editor with a Delegate to Agent code lense above a TODO comment.

管理聊天会话的技巧

考虑以下技巧,帮助您有效地使用聊天会话

  • 为不同主题开始新会话:开始新的聊天会话以避免延续不相关对话的上下文。这有助于您获得更相关的响应。

  • 使用编辑器选项卡进行并排比较:将多个聊天会话作为编辑器选项卡打开,以并排比较不同的方法或解决方案。

  • 为多显示器设置使用单独的窗口:在辅助显示器上的单独窗口中打开聊天,以便在主窗口中处理代码时保持可见。

  • 使用远程代理进行后台任务:使用远程编码代理在后台执行 AI 任务,同时您继续在 VS Code 中工作。

  • 交互式代理会话:使用本地代理会话进行需要实时输入和反馈的交互式任务。

© . This site is unofficial and not affiliated with Microsoft.