跳转到内容

管理聊天会话

在 Visual Studio Code 中使用聊天功能进行基于对话的 AI 交互。聊天会话由你与 AI 之间的提示词(Prompt)和响应序列组成,以及来自代码或文件的相关上下文。本文介绍如何创建和管理聊天会话、使用会话列表以及组织你的会话。

聊天会话是与 AI 的单次对话,包含所有提示词(Prompt)、响应和上下文。每个会话相互独立,因此一个会话的上下文不会延续到另一个会话。

关于聊天会话的重要说明:

  • 上下文窗口:随着聊天进行,会话会积累上下文。创建新会话会清除历史记录并开始全新的上下文窗口。可以在聊天输入框中监控上下文窗口用量
  • 检查点:随时可以回滚到之前的状态或编辑之前的提示词(Prompt)来改变方向。了解更多检查点
  • 智能体(Agent)类型:会话可以在本地、后台或云端运行。了解更多智能体(Agent)类型
  • 多个会话:可以并行运行多个会话,每个专注于不同任务。使用会话列表监控进行中的会话并在它们之间切换。

提示 当你想切换话题时,开始新的聊天会话,这有助于 AI 提供更相关的响应。

当你开始新的聊天会话时,你开始了与 AI 的新对话。每个会话都有自己的上下文窗口,可以使用不同的智能体(Agent)类型和权限级别运行。可以并行运行多个会话,每个专注于不同任务或话题。使用会话列表监控和切换活跃会话。

开始新的聊天会话:

  1. 使用聊天视图中的新建聊天 (+) 按钮,或使用键盘快捷键 ⌘N(Windows、Linux:Ctrl+N)。

    聊天视图中新建聊天按钮截图。

  2. 使用智能体(Agent)目标下拉菜单选择在哪里运行智能体(Agent)。例如,选择 Local 在编辑器中交互式运行智能体(Agent),可完全访问工作区、工具和模型。

  3. 从**智能体(Agent)**下拉菜单选择智能体(Agent),以选择会话的角色或角色身份。例如,选择 Plan 让智能体(Agent)在编写任何代码之前创建结构化的实施计划。可以在会话中随时切换智能体(Agent)。

  4. 可选地,从权限下拉菜单选择权限级别,控制智能体(Agent)在工具批准方面的自主程度。

  5. 在聊天输入框中输入提示词(Prompt)并按 Enter 提交。

了解更多:智能体(Agent)目标、智能体(Agent)和权限级别

可以根据工作偏好在不同视图中打开聊天会话。

  • 侧边栏(默认):选择新建聊天 (+) > 新建聊天,或运行 Chat: New Chat 命令。最适合在查看代码的同时保持聊天可见。

    在聊天视图中打开新聊天会话的截图。

  • 编辑器标签:选择新建聊天 (+) > 新建聊天编辑器,或运行 Chat: New Chat Editor 命令。最适合需要更多聊天空间或并排比较会话。

    在编辑器标签中打开新聊天会话的截图。

  • 独立窗口:选择新建聊天 (+) > 新建聊天窗口,或运行 Chat: New Chat Window 命令。最适合多显示器设置。

    在独立窗口中打开新聊天会话的截图。

  • 最大化:选择聊天视图标题栏中的最大化按钮,或运行 View: Toggle Maximized Panel 命令。聊天会接管整个编辑器区域,获得最大空间。再次选择按钮可恢复之前的布局。

  • Agents 应用:一个专用的伴随应用,以智能体(Agent)为主要体验。最适合以智能体(Agent)为主的工作流程,可以专注于描述任务和管理智能体(Agent)。运行 Chat: Open Agents Application 命令,或从命令行使用 code --agents。了解更多 Agents 应用

可以随时在视图之间移动聊天会话。选择聊天视图、编辑器标签或聊天窗口中的 ... 菜单,然后选择**将聊天移至…**选项之一。或者使用命令面板中的相应 Chat: Move Chat 命令。

无论会话在哪里运行,聊天视图都提供统一视图来管理所有会话。它显示会话的状态、类型和文件变更信息。

使用查找和筛选选项查找特定会话。还可以固定重要会话使其保持在列表顶部,方便快速访问。将鼠标悬停在会话上并选择固定图标可固定或取消固定。

会话列表的范围限定于当前工作区。如果没有打开工作区,列表会显示所有工作区的会话。会话按时间段分组,例如今天上周

VS Code 中智能体(Agent)会话(Agent Session)的截图,显示代码变更和聊天交互。

右键单击列表中的会话可查看更多操作,例如打开会话详情的不同选项、归档会话,或针对特定智能体(Agent)类型的操作(如检出拉取请求(Pull Request),适用于云端智能体(Cloud Agent)会话(Agent Session))。

要从聊天视图中隐藏会话列表,在空白聊天处右键单击并取消选择显示会话chat.viewSessions.enabled)。

聊天视图有两种模式:紧凑和并排。可以使用聊天视图右上角的切换控件在紧凑和并排模式之间手动切换。

  • 紧凑:会话列表嵌入聊天视图。从列表选择会话时,聊天视图切换到该会话。使用返回按钮返回会话列表。

  • 并排:会话列表与聊天视图并排显示。从列表选择会话,在聊天视图中查看其详情。当聊天视图变宽时,会自动切换到并排模式。

为保持会话列表整洁,可以归档已完成或不活跃的会话。归档会话不会删除它,而是将其从活跃会话列表中移出。随时可以取消归档会话,将其恢复到活跃会话列表。

要归档会话,将鼠标悬停在会话列表中的会话上,选择归档。归档后,它会从列表消失。同样,也可以用相同方式取消归档会话。

要查看已归档的会话,使用会话列表中的筛选选项并选择已归档筛选器。

要永久删除会话,右键单击会话列表中的会话并选择删除。删除会话会永久删除它,无法撤销。对于 Copilot CLI 会话,删除会话还会删除为该会话创建的任何关联 worktree。

注意 删除会话不可逆。如果只是想隐藏会话,请考虑归档它。

不必等待响应完成再发送下一条消息。当请求正在进行时,发送按钮会变为一个下拉菜单,提供三种处理新消息的选项。

  • 添加到队列:消息等待并在当前响应完成后自动发送。当前响应不受干扰地完成。
  • 引导发送:向当前请求发送信号,让其在完成当前工具执行后让步。当前响应停止,你的新消息立即处理。用于在智能体(Agent)方向错误时重定向。
  • 停止并发送:完全取消当前请求,立即发送你的新消息。

发送按钮的默认操作可配置。使用 chat.requestQueuing.defaultAction 将其设置为 steer(默认)或 queue

复制聊天会话会创建一个新的独立会话,继承原始会话的对话历史。复制的会话与原始会话完全分离,因此一个会话中的变更不会影响另一个。新会话标题前缀为”复制自:”。

当你想探索替代方案、提出附加问题或在不失去原始上下文的情况下将长对话转向不同方向时,复制会话非常有用。

有两种复制聊天会话的方式:

  • 复制整个会话:在聊天输入框中输入 /fork 并按 Enter。新会话打开,包含从当前会话复制的完整对话历史。

  • 从检查点复制:将鼠标悬停在对话中的聊天请求上,选择复制对话按钮。新会话打开,仅包含到该检查点(含)的请求。

    聊天视图检查点工具栏中"复制对话"按钮的截图。

当你在另一个窗口或应用程序中工作时,VS Code 可以发送操作系统通知,告知你重要的聊天事件,这样就不必不断查看。

使用 chat.notifyWindowOnResponseReceived 配置何时在收到聊天响应时接收操作系统通知。通知包含响应预览,选择它会将焦点带到聊天会话。

使用 chat.notifyWindowOnConfirmation 配置当智能体(Agent)需要你的输入或确认才能继续时,何时接收操作系统通知。

这两个设置都有三个可选值:

  • off:永不显示通知
  • windowNotFocused(默认):仅在 VS Code 窗口未获得焦点时显示通知
  • always:即使 VS Code 窗口在焦点中也显示通知

使用以下键盘快捷键在聊天会话中浏览提示词(Prompt):

  • ⌥⌘↑(Windows、Linux:Ctrl+Alt+Up):转到聊天会话中的上一个提示词(Prompt)。
  • ⌥⌘↓(Windows、Linux:Ctrl+Alt+Down):转到聊天会话中的下一个提示词(Prompt)。
  • ⌥⌘PageUp(Windows、Linux:Ctrl+Alt+PageUp):转到聊天会话中的上一个代码块。
  • ⌥⌘PageDown(Windows、Linux:Ctrl+Alt+PageDown):转到聊天会话中的下一个代码块。

可以保存聊天会话以保留重要对话或在以后的相似任务中重用。

可以导出聊天会话以便日后参考或与他人分享。导出聊天会话会创建一个包含会话中所有提示词(Prompt)和响应的 JSON 文件。

导出聊天会话:

  1. 在聊天视图中打开要导出的聊天会话。
  2. 通过命令面板(⇧⌘P / Windows、Linux:Ctrl+Shift+P)运行 Chat: Export Chat… 命令。
  3. 选择保存 JSON 文件的位置。