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

管理聊天会话

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

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

创建新的聊天会话

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

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

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

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

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

默认情况下,聊天视图位于 VS Code 的辅助侧边栏中。当您希望在侧边保留聊天体验,同时仍然可以使用主侧边栏进行其他视图(如资源管理器或源代码管理)时,这非常有用。

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

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

  • 使用命令面板中的 Chat: New Chat 命令

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

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

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

  • 打开聊天视图,然后选择 新建聊天 (+) > 新建聊天编辑器

  • 使用命令面板中的 Chat: New Chat Editor 命令

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

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

  • 使用命令面板中的 Chat: Open Chat in Editor 命令

在单独的窗口中打开聊天

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

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

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

  • 打开聊天视图,然后选择 新建聊天 (+) > 新建聊天窗口

  • 使用命令面板中的 Chat: New Chat Window 命令

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

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

  • 使用命令面板中的 Chat: Open Chat in New Window 命令

聊天会话历史记录

创建新聊天会话时,将清除之前的对话历史记录。但是,所有聊天会话都会保存在会话历史记录中,让您可以返回到之前的对话并继续上次的进度。当您想查看过去的交互、引用之前的响应或恢复早期会话的对话时,这非常有用。

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

提示

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

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

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

详细了解代理和查看和管理代理会话

保存和导出聊天会话

您可以保存聊天会话以保留重要的对话,或稍后重复使用它们来完成相似的任务。

将聊天会话导出为 JSON 文件

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

导出聊天会话

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

  2. 从命令面板(⇧⌘P (Windows、Linux Ctrl+Shift+P))运行 Chat: Export Chat... 命令。

  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 使用自定义或内置代理作为子代理。例如

    • 使用研究代理作为子代理,研究此项目的最佳身份验证方法。
    • 在子代理中使用计划代理为我的功能创建一个实现计划。然后将计划保存在 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.