现已发布!阅读关于 12 月份的新功能和修复。

2025 年 7 月(版本 1.103)

发布日期:2025 年 8 月 7 日

更新 1.103.1:此更新增加了 GPT-5 提示改进,支持 GPT-5 mini,并修复了这些 问题

更新 1.103.2:此更新修复了这些 问题

下载:Windows:x64 Arm64 | Mac:通用 Intel Silicon | Linux:deb rpm tarball Arm snap


欢迎来到 Visual Studio Code 2025 年 7 月版。此版本包含许多更新,希望您会喜欢,其中一些主要亮点包括:


如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新页面。

Insiders:想尽快尝试新功能?
您可以下载每晚的 Insiders 构建版本,并尽快尝试最新更新。
下载 Insiders

聊天

GPT 5 可用性

从今天开始,GPT-5 将面向所有付费 GitHub Copilot 套餐推出。GPT-5 是 OpenAI 目前最强大的模型,在推理、编码和聊天方面带来了新的进步。请在 GitHub Changelog 中了解更多关于 GPT-5 模型可用性的信息。

打开“聊天”视图,然后从模型选择器中选择 GPT-5,开始在 VS Code 中将其用于聊天对话。详细了解 在 VS Code 中使用语言模型

更新 1.103.1:此更新增加了重要的提示改进,以进一步提高模型的质量和性能。

GPT 5 mini 可用性

更新 1.103.1

从这个版本开始,GPT-5 mini 将面向所有 GitHub Copilot 套餐推出。GPT-5 mini 是 OpenAI 更快速、更具成本效益的 GPT-5 变体。请在 GitHub Changelog 中了解更多关于 GPT-5 mini 模型可用性的信息。

聊天检查点

设置chat.checkpoints.enabled

我们引入了检查点,使您能够恢复聊天对话的不同状态。您可以轻松撤销编辑,回到聊天对话中的特定点。如果您在聊天会话中更改了多个文件,这一点尤其有用。

当您选择一个检查点时,VS Code 会将工作区更改和聊天历史记录恢复到该点。恢复检查点后,您也可以重做该操作!

检查点默认启用,可以通过 chat.checkpoints.enabled 进行控制。

工具选择器改进

我们在此次迭代中完全重构了工具选择器,并采用了一个名为“快速树”的新组件来显示所有工具。

Screenshot showing the new tool picker using a quick tree, enabling collapsing and expanding nodes.

重要功能

  • 展开或折叠
  • 配置选项移至标题栏
  • 粘滞滚动
  • 图标渲染

让我们知道你的想法!

工具分组(实验性)

设置github.copilot.chat.virtualTools.threshold

当前,您可以在单次聊天请求中使用最多 128 个工具。以前,您可以通过安装具有大量工具的 MCP 服务器来快速达到此限制,这要求您取消选择一些工具才能继续。

在此版本的 VS Code 中,我们启用了一种实验性的工具调用模式,用于处理工具数量超过最大限制的情况。工具会被自动分组,模型将获得激活和调用工具组的能力。

此行为(包括阈值)可以通过设置 github.copilot.chat.virtualTools.threshold 进行配置。

终端自动批准改进

设置chat.tools.terminal.autoApprove

上个月引入了早期的终端自动批准设置。在此版本中,该功能得到了许多改进。请在我们的文档中详细了解 终端自动批准

  • 我们将 allowListdenyList 设置合并到了 chat.tools.terminal.autoApprove 设置中。如果您使用了旧设置,您应该会看到一个警告,要求您迁移到新设置。

  • 正则表达式匹配器现在支持标志。这允许不区分大小写,例如在 PowerShell 中,其中大小写通常无关紧要。

    "chat.tools.terminal.autoApprove": {
      // Deny any `Remove-Item` command, regardless of case
      "/^Remove-Item\\b/i": false
    }
    
  • 关于子命令匹配如何工作的有一些困惑,现在在设置的描述中已详细解释,但我们也支持匹配完整的命令行。

    "chat.tools.terminal.autoApprove": {
      // Deny any _command line_ containing a reference to what is likely a PowerShell script
      "/\\.ps1\\b/i": { "approve": false, "matchCommandLine": true }
    }
    
  • 自动批准的理由现在已记录到“终端输出”通道。我们计划 很快在 UI 中公开此信息

终端和任务的输入请求检测

当您在代理模式下运行任务或终端命令时,代理现在会检测进程何时请求用户输入。系统会提示您在聊天中进行响应,默认选项或第一个选项将作为主要操作显示,其他选项将在下拉列表中提供。这适用于需要多次确认的脚本和命令,适用于所有支持的 shell 以及前台和后台终端。如果您在存在提示时在终端中键入,提示将自动隐藏。当提供选项和描述时(例如 [Y] 是 [N] 否),这些将显示在确认提示中。

在下面的示例中,一个包含多个用户输入提示的脚本通过代理运行。出现确认提示,我接受了操作,允许终端脚本完成运行,代理提供了所发生事件的摘要。

Example of input being detected and responded to

改进的任务问题匹配器错误检测

对于使用问题匹配器的任务,代理现在根据问题匹配器的结果收集和显示错误,而不是依赖语言模型来评估输出。问题显示在聊天进度消息中的下拉列表中,允许您直接导航到问题位置。这确保了仅在与当前任务执行相关时报告错误。

代理模式下的复合任务支持

代理模式现在支持运行复合任务。当您运行复合任务时,代理会显示每个依赖任务的进度和输出,包括任何用户输入的提示。这使得更复杂的工作流和多步任务执行的可见性更高。

在下面的示例中,运行了 VS Code - Build 任务。评估每个依赖任务的输出,并在响应和进度消息下拉列表中向用户显示问题。

Example of agent running the VS Code - Build task

可访问性:焦点聊天确认操作

我们添加了一个命令 Focus Chat Confirmation (kb(workbench.action.chat.focusConfirmation)),它将聚焦确认对话框(如果存在),或者向屏幕阅读器用户宣布不需要确认。

使用任务列表跟踪进度(实验性)

设置chat.todoListTool.enabled

代理模式的优点在于,您可以为其提供一个高级任务,让它来实现。当它规划工作并将其分解为更小的任务时,跟踪所有这些单独任务的进度可能会让人不知所措。

在此里程碑中,我们在聊天中引入了任务/待办事项列表功能,以更好地帮助您查看哪些任务已完成,哪些仍待处理。您可以在“聊天”视图的顶部看到任务列表,以便始终了解正在进行的进度。随着代理程序完成其工作,它会更新任务列表。

通过给代理程序一个高级任务并要求它在待办事项列表中跟踪其工作来开始!

此功能仍处于实验阶段,您可以使用 chat.todoListTool.enabled 设置启用它。

改进的模型管理体验

在此迭代中,我们重构了负责语言模型访问的聊天提供商 API。用户现在可以选择哪些模型出现在其模型选择器中,从而创造更个性化、更专注的体验。

Screenshot of the model picker showing various models from providers such as Copilot and OpenRouter

我们计划在未来几个月内最终确定此新 API,并感谢您的任何反馈。此 API 的最终确定将为扩展生态系统开放,以便实现其自己的模型提供商并进一步扩展 BYOK(自带密钥)服务。

Azure DevOps 存储库远程索引支持

#codebase 工具现在支持已链接到 Azure DevOps 存储库的工作区的远程索引。这使得 #codebase 几乎可以即时搜索相关代码片段,而无需任何初始化。这甚至适用于包含数万个可索引文件的较大存储库。以前,此功能仅适用于 GitHub 链接的存储库。

在处理链接到 Azure DevOps 的 Git 工作区时,将自动使用远程索引。确保您也已使用您用于访问 Azure DevOps 存储库的 Microsoft 帐户登录 VS Code。

我们正在逐步推出对服务端的此功能支持,因此并非所有组织都能立即使用。根据推出的成功情况,我们希望尽可能多地为组织启用 Azure DevOps 的远程索引。

提高终端和任务工具的可靠性和性能

我们将用于在终端中运行任务和命令的工具从 Copilot 扩展迁移到了核心的 microsoft/vscode 存储库。这使得工具能够访问更底层、更丰富的 API,从而使我们能够修复许多终端挂起的问题。此次更新还有一个好处是,由于不再受限于扩展 API 的功能,特别是需要 Chat 视图中自定义 UI 的任何更改,因此可以更轻松地实现未来的功能。

终端和任务的输出轮询

代理现在通过使用输出轮询,在任务和后台终端完成之前不会继续进行。如果进程花费的时间超过 20 秒,系统会提示您继续等待或继续进行。代理将监控进程长达两分钟,总结当前状态或报告进程是否仍在运行。这提高了在聊天中运行长时间运行或易出错命令时的可靠性。

任务感知改进

以前,代理只能监视活动任务。现在,它可以跟踪和分析活动任务和已完成任务的输出,包括那些已失败或已完成的任务。此增强功能能够实现更好的故障排除和对任务执行历史的更全面洞察。

代理程序感知用户创建的终端

代理程序现在可以感知工作区中的所有用户创建的终端。这使得它能够跟踪最近的命令并访问终端输出,从而为协助终端和故障排除提供更好的上下文。

终端内联聊天改进

终端内联聊天现在可以更好地检测您的活动 shell,即使在子 shell 中工作时(例如,从 PowerShell 或 zsh 启动 Python 或 Node)。这种动态 shell 检测通过提供更相关的当前 shell 类型命令建议,提高了内联聊天响应的准确性。

Screenshot of terminal inline chat showing node specific suggestions.

改进的测试运行器工具

测试运行器工具已进行了重构。现在,它在聊天中以内联方式显示进度,并且工具中的许多错误已得到修复。

编辑之前的请求

设置chat.editRequests

上一次迭代,我们让用户能够编辑之前的请求,并推出了几个不同的访问点。在此次迭代中,我们已将内联编辑设为默认行为。单击请求气泡即可开始编辑该请求。您可以修改附件,更改模式和模型,并使用修改后的文本重新发送请求。

您可以通过 chat.editRequests 设置来控制聊天编辑行为,如果您更喜欢通过每个请求上方的工具栏悬停来编辑。

打开聊天并最大化

设置workbench.secondarySideBar.defaultVisibility

我们添加了两个额外的选项来配置次要侧边栏的默认可见性,以便将其打开为最大化。

  • maximizedInWorkspace:打开新工作区时将聊天视图打开为最大化。
  • maximized:始终将聊天视图打开为最大化,包括在空窗口中。

Screenshot that shows the Chat view maximized.

待处理的聊天确认

为防止意外关闭有代理会话正在积极更改文件或响应您请求的工作区,当我们尝试退出 VS Code 或关闭其窗口而聊天响应正在进行时,现在会显示一个对话框。

Screenshot of confirmation to exit with running chat.

用户操作的 OS 通知

设置chat.notifyWindowOnConfirmation

我们现在利用 OS 原生通知系统,在需要用户确认时显示一个 toast 通知。使用 chat.notifyWindowOnConfirmation 启用此行为。

Screenshot of toast for confirmation of a chat agent.

我们计划在将来改进此体验,以便显示更多信息并允许您直接从 toast 通知进行批准。目前,选择 toast 会聚焦于确认源自的窗口。

聊天中的数学支持(预览)

设置chat.math.enabled

聊天现在初步支持在响应中渲染数学公式。

Screenshot of the Chat view, showing inline and block equations in a chat response.

此功能由 KaTeX 提供支持,支持内联和块数学公式。内联数学公式可以通过用单美元符号($...$)包裹标记来编写,而块数学公式则使用双美元符号($$...$$)。

可以使用 chat.math.enabled 启用数学渲染。目前,它默认关闭,但我们计划在进一步测试后,在未来的版本中启用它。

Context7 集成用于项目脚手架(实验性)

设置github.copilot.chat.newWorkspace.useContext7

当您在聊天中使用 #new 脚手架一个新项目时,如果您已安装 Context7 MCP 服务器,现在可以确保它使用 **Context7** 的最新文档和 API。

MCP

服务器自动启动和信任

设置chat.mcp.autostart

以前,当您添加或更新 MCP 服务器配置时,VS Code 会在“聊天”视图中显示一个蓝色的“刷新”图标,让您可以手动刷新工具列表。在此里程碑中,您现在可以配置 MCP 服务器的自动启动行为,因此不再需要手动重新启动 MCP 服务器。

使用 chat.mcp.autostart 设置来控制此行为。您还可以更改该图标工具提示中的此设置,并查看将启动哪些服务器。

Screenshot showing the hover of the refresh MCP server icon, enabling you to configure the auto-start behavior.

首次启动已更新或更改的 MCP 服务器后,我们现在会显示一个对话框,要求您信任该服务器。授予对这些服务器的信任对于自动启动至关重要,以防止在不知情的情况下运行不良命令。

请在我们的文档中了解更多关于 在 VS Code 中使用 MCP 服务器 的信息。

远程 MCP 服务器的客户端凭据流

对于希望支持身份验证的远程 MCP 服务器,理想的流程是使用支持动态客户端注册(DCR)的身份验证提供程序。这使得客户端(VS Code)能够自行向身份验证提供程序注册,从而实现无缝的身份验证流程。

但是,并非所有身份验证提供程序都支持 DCR,因此我们引入了客户端凭据流,该流允许您提供自己的客户端 ID(以及可选的客户端密钥),以便在进行身份验证提供程序的身份验证流程时使用。以下是它的样子:

  • 步骤 1:VS Code 检测到 DCR 无法使用,并询问您是否要执行客户端凭据流。

    Screenshot of a modal dialog saying that DCR is not supported but you can provide client credentials manually.

    重要提示:此时,您需要访问身份验证提供程序的网站并手动创建一个应用程序注册。在那里,您将输入模态对话框中提到的重定向 URI。

  • 步骤 2:从身份验证提供程序的门户,您将获得客户端 ID,可能还有客户端密钥。将客户端 ID 输入出现的输入框中,然后按 Enter

    Screenshot of an input box to provide the client ID for the MCP server.

  • 步骤 3:然后,如果您有客户端密钥,请输入它,然后按 Enter(如果没有,请留空)。

    Screenshot of an input box to provide the optional client secret for the MCP server.

    此时,您将通过典型的身份验证流程来验证您正在使用的 MCP 服务器。

从帐户菜单中删除动态身份验证提供程序

自从添加了远程 MCP 身份验证以来,命令面板中一直有一个名为 Authentication: Remove Dynamic Authentication Providers 的命令,该命令允许您删除客户端凭据(客户端 ID 和(如果可用)客户端密钥)以及与该提供程序相关的所有帐户信息。

我们现在已将此命令公开在“帐户”菜单中。您可以在 MCP 服务器帐户中找到它。

Screenshot of the Account menu showing the manage dynamic auth option in an account's submenu.

或者,如果您还没有任何 MCP 服务器帐户,则在菜单根目录中。

Screenshot of the Account menu showing the manage dynamic auth option in the root of account menu.

VS Code 现在完全支持最新的 MCP 规范版本 2025-06-18,并支持工具结果中的 resource_link 和结构化输出。

辅助功能

可访问的聊天提示

当代理程序提示用户输入时(例如,是否继续等待进程),聊天提示现在对屏幕阅读器是可访问的。当提示出现时,您会收到警报,可以使用键盘导航到它,并在可访问视图中查看消息。

控制聊天编辑的文件打开

一个新设置 accessibility.openChatEditedFiles,让您可以选择在代理程序编辑文件时是否自动打开它们。启用此设置可更好地控制哪些文件出现在您的编辑器中。

查看所有编辑和先前编辑命令

View All EditsView Previous Edits 命令现在在整个编辑器中可用,可以轻松查看代理程序所做的更改。当 accessibility.openChatEditedFiles 被禁用时,这些命令尤其有用,它允许您在不打开每个文件的情况下跟踪编辑。

侧边栏可见性通知

当主侧边栏或次侧边栏显示或隐藏时,ARIA 通知会通知您此更改。这通过确保屏幕阅读器用户了解侧边栏可见性更新来提高可访问性。

使用 Playwright 进行可访问性测试

我们已添加了使用 Playwright 对编辑器进行的自动化可访问性测试。这些测试可帮助我们持续验证 Visual Studio Code 是否符合可访问性标准和最佳实践,确保所有用户的体验都更好。

编辑器体验

设置搜索建议

设置编辑器搜索框中的 AI 搜索结果切换(以闪光灯图标表示)现在对所有用户可用。当 AI 搜索结果加载并可用时,该切换将启用。按下切换按钮可在 AI 和非 AI 搜索结果之间切换。

AI 设置搜索结果基于语义相似性而非字符串匹配。例如,当您搜索“增大字体大小”时,editor.fontSize 会作为 AI 设置搜索结果出现。

Screenshot of AI results in the Settings editor for "increase text size" showing editor.fontSize setting.

编辑器选项卡上下文菜单

我们清理了编辑器选项卡上下文菜单,将与拆分和移动相关的选项分组到一个子菜单中。

Screenshot that shows the 'Split and Move' editor tab context menu.

AI 统计信息(预览)

设置editor.aiStats.enabled

我们添加了一个实验性功能来显示基本的 AI 统计信息。使用 editor.aiStats.enabled 来启用此功能,该功能默认禁用。

此功能会针对每个项目显示 AI 插入字符的百分比与手动输入的百分比。它还会跟踪当前一天接受了多少行内和下一个编辑建议。

Screenshot showing the AI statistic hover information in the Status Bar.

Notebook

笔记本内联聊天与代理工具

设置inlineChat.notebookAgent

笔记本内联聊天控件现在可以使用完整的笔记本代理工具集,以实现运行单元格和向内核安装包等其他功能。

要启用笔记本中的代理工具,请启用新的实验性设置 inlineChat.notebookAgent。这目前还需要启用内联聊天 v2 的设置 inlineChat.enableV2

安装使用 uv 创建的虚拟环境中的依赖项

现在,当我们针对使用 uv 创建的虚拟环境运行 Jupyter Notebook 时,我们支持安装所需的依赖项。

源代码管理

Git Worktree 支持

设置git.detectWorktrees

为了响应一个长期存在的 功能请求,在此里程碑中,我们增加了 Git Worktree 支持。Worktrees 允许您一次检出多个分支,从而方便地测试更改或并行工作而无需切换上下文。

打开包含 git 存储库的文件夹或工作区时,我们现在会自动检测 worktrees 并将其显示在“源代码管理存储库”视图中。您现在可以通过命令面板或“源代码管理存储库”视图中可用的命令,在新窗口或当前窗口中查看、创建、删除和打开 worktrees。您可以通过切换 git.detectWorktrees 设置来禁用此功能。

Screenshot of create worktree command in Source Control view.

Screenshot of open and delete worktree commands in the Source Control view.

存储库视图

源代码管理存储库视图显示在当前文件夹/工作区中发现的所有源代码管理提供程序。在此里程碑中,我们更新了该视图的渲染,以在视觉上区分存储库、子模块和 worktrees。我们还显示了存储库、子模块和 worktrees 之间的父子关系。

Screenshot of the Source Control Repositories view showing two repositories and a worktree associated with one of the repos.

终端

终端建议中的文档支持

由语言服务器(LSP)支持的终端建议现在包括内联文档,类似于您在编辑器中看到的内容。从 Python REPL 开始,您将在键入命令时获得有用的描述和用法详细信息。

目前,您需要这些设置才能在终端中启用 LSP 建议:

语音听写

现在,终端支持自然语言输入,包括由 Gemini 和 Claude 扩展程序启用的终端,我们已重新引入了终端语音听写。您可以使用 Terminal: Start Dictation in TerminalTerminal: Stop Dictation in Terminal 命令来开始或停止听写。

改进的 shell 集成诊断

Shell 集成是集成终端中许多功能的基础,例如 粘滞滚动快速修复代理模式理解终端内部发生情况的能力。

此版本在您将鼠标悬停在终端并选择 Show Details 时提供了一些改进的诊断。您现在应该会看到检测到的 shell 类型和当前工作目录。

Screenshot of the detailed terminal tab hover showing the shell type like pwsh and the current working directory.

如果这些丰富的功能中的某一项未按预期工作,这是首要的排查点。

语言

Python

对 Python 3.13 及更高版本的 shell 集成支持

我们现在支持在使用 Python 3.13 或更高版本时的 shell 集成。启用后,PyREPL 将自动禁用以确保兼容性。如果您希望继续使用 PyREPL,可以禁用 shell 集成。

Screenshot showing the Python shell integration setting in the Settings editor.

Python 环境扩展改进

Python Environments Extension 在针对稳定用户进行受控推出过程中继续获得错误修复和改进。要在使用 Python Environments 扩展时进行推出,请确保已安装该扩展,并在 VS Code settings.json 文件中添加以下内容:"python.useEnvironmentsExtension": true

TypeScript 5.9

VS Code 现在包含 TypeScript 5.9.2。此主要更新带来了一些新的语言改进,包括 对 import defer 的支持,以及工具改进,例如 对许多 DOM API 的改进文档

请查看 TypeScript 5.9 发布博客 了解此更新的更多详细信息。

JavaScript 和 TypeScript 的可展开悬停

当您将鼠标悬停在 JavaScript 或 TypeScript 中的符号上时,VS Code 会尝试显示有关该符号最有用的 IntelliSense 类型信息。类型可能非常复杂,因此我们面临的一个挑战是找到一个平衡点,既显示足够详细的信息以有用,又不显示过多的信息以免造成混乱。很难找到一个放之四海而皆准的方法,而且您想要的类型详细信息级别可能取决于您正在处理的内容。

因此,在此迭代中,我们添加了新的 UI,让您可以更精确地控制类型在悬停时显示的方式。当您将鼠标悬停在符号上时,现在可以单击悬停控件左侧的小 + 图标,将接口和复杂类型展开到其组成部分。例如,您可以使用此功能直接在悬停中查看接口的属性。

悬停可以多次展开,这将递归地展开前一次展开的类型。如果您展开得太多,只需选择 - 图标即可返回到上一级别。还要记住,并非所有类型都可以展开,我们仍然需要对我们可以支持的展开量进行一些限制。如果您发现可展开悬停的显示方式不符合您的期望,请 告诉我们

对扩展的贡献

GitHub 拉取请求

GitHub Pull Requests 扩展方面取得了更多进展,该扩展允许您处理、创建和管理拉取请求和问题。

请查看该扩展的 0.116.0 版本变更日志,了解该版本中的所有内容。

拉取请求头部清理

我们简化了拉取请求描述头部的按钮栏。复制操作现在位于 PR 链接的右键上下文菜单中。

Screenshot of the simplified PR header when opening the PR details.

在聊天中显示编码代理 PR

设置githubPullRequests.codingAgent.uiIntegration

当您启动编码代理会话(通过 #copilotCodingAgent 或使用 Delegate to coding agent 操作)时,拉取请求将呈现为聊天视图中的卡片。

Screenshot of a coding agent PR card in the Chat view.

启用 githubPullRequests.codingAgent.uiIntegration 设置,以在聊天视图中为已启用代理的存储库启用新的 Delegate to coding agent 按钮。

聊天会话(实验性)

编码代理聊天

上一次迭代的 Copilot 编码代理集成 的基础上,您现在可以从专用的聊天编辑器管理编码代理会话。这使您能够跟踪编码代理的进度,提供后续说明,并在专用聊天编辑器中查看代理的响应。

  • 使用 #copilotCodingAgent 工具或通过 UI 控件从 VS Code 启动编码代理会话。

  • 在附加的聊天编辑器中跟踪编码代理的进度。

    Screenshot showing Coding Agent progress.

  • 直接从聊天中提供后续说明。

    Screenshot showing providing a followup in chat to coding agent.

聊天会话视图

设置chat.agentSessionsViewLocation

启用 chat.agentSessionsViewLocation 设置来尝试此实验性功能。

  • 当设置为 view 时,您将在 VS Code 侧边栏中看到一个新的 Chat Sessions 视图。此视图使您可以管理和交互本地聊天会话以及编码代理会话。

    Screenshot showing the Coding Agent Sessions view.

  • 当设置为 showChatsMenu 时,编码代理聊天会话将与本地聊天历史记录一起显示。

    Screenshot showing the Coding Agent Sessions Quick Pick.

此集成需要最新的 GitHub Pull Request 扩展和已打开的、支持 Copilot 编码代理的存储库。有关更多信息,请参阅有关如何在 VS Code 中使用编码代理的新文档。

主题:Sharp Solarized(在 vscode.dev 上预览)

扩展开发

终端激活事件

扩展现可使用两个新的激活事件

  • onTerminal:在打开任何终端时触发。
  • onTerminalShellIntegration:在为终端激活丰富的 shell 集成时触发。

您可以指定 shellType 来定位特定的 shell。例如,onTerminalShellIntegration:bash 在 Bash 终端启用 shell 集成时激活。

提议的 API

在聊天响应中渲染自定义 Webview

Chat Output Renderer API 允许扩展将聊天响应的范围从文本和图像扩展开来。通过它,您的扩展可以使用 Webview 在聊天输出中渲染任意 HTML 内容。用例包括自定义可视化、内联预览,甚至交互式控件。

Chat Output Renderer 扩展示例展示了如何使用此 API 来渲染聊天响应中的Mermaid 图表。以下是此扩展示例的实际应用:

Screenshot showing a mermaid diagram in a chat response.

巧妙之处不在于 VS Code 可以渲染 Mermaid 图表,而在于这种渲染可以完全由扩展贡献。这样,您就可以在聊天中迭代自定义输出。

Screenshot asking chat to generate a modified version of the first diagram.

以下是该 API 的工作原理的快速概述

  1. 注册一个可以作为其响应的一部分返回自定义数据的语言模型工具。我们使用 MIME 类型来标识此数据。
  2. 为此 MIME 类型注册一个聊天输出渲染器。
  3. 当语言模型调用工具时,调用聊天输出渲染器以将其渲染到响应中的 Webview。

请查看扩展示例以获取此 API 在实际应用中的完整端到端示例。

此 API 具有非常强大的潜力,能够带来一些令人惊叹的新聊天体验,因此请尝试一下,并让我们知道您的想法!

聊天会话提供程序 API

新的 Chat Session Provider API 提案使扩展能够将自己的聊天后端集成到 VS Code 的原生聊天 UI 中。使用它,您的扩展可以打开新的聊天会话,填充该会话的历史记录,并响应新的用户提示。

此 API 仍处于早期阶段,很可能会发生变化。但是,我们已经在利用它来支持新的GitHub 编码代理会话流程,该流程从 GitHub 加载聊天,并允许您与完全由 GitHub 控制的代理进行聊天。

任务执行终端

扩展作者现在可以通过新的 taskExecution.terminal 属性访问与正在运行的任务关联的终端。这使得更容易识别与特定任务关联的终端并以编程方式与之交互。

SecretStorage keys() API

如果您一直想获取扩展在 SecretStorage 中存储的键列表,现在可以通过新的提议的 keys() API 来实现。

export async function activate(context: ExtensionContext) {
  await context.secrets.store('mySecret', 'superSecretValue');
  await context.secrets.store('mySecret2', 'superSecretValue2');
  const keys = await context.secrets.keys();
  console.log('All secret keys:', keys); // returns ['mySecret', 'mySecret2']
}

注意:此更改取决于提供 Secret Storage 的任何替代实现(特别是 https://vscode.dev,它已采用新 API,以及 https://github.dev,它将很快采用新 API)的更改。在不支持的环境中,此 API 将引发异常。

工程

packages.microsoft.com 密钥更新

packages.microsoft.com 已更新其签名密钥,因此,较新发行版上的 Linux 用户在安装 VS Code 时应停止看到与密钥相关的警告或错误。基于 Debian 的发行版会自动接收新密钥,而其他发行版上的用户可能需要手动删除旧密钥才能导入新密钥

Electron 37 更新

在此里程碑中,我们将 Electron 37 更新推广给稳定版用户。此更新随附 Chromium 138.0.7204.100 和 Node.js 22.17.0。我们想感谢所有在 Insiders 构建版本上进行自我托管并提供早期反馈的人。

值得注意的修复

感谢

最后但同样重要的是,向 VS Code 的贡献者们致以衷心的感谢

问题跟踪

对我们问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-codicons 的贡献

vscode-copilot-chat 的贡献

vscode-eslint 的贡献

vscode-js-debug 的贡献

  • @pilaoda (pilaoda)
    • 修复 watch 面板自定义字符串表示。 #2252 PR #2253
    • 修复 toString 在 Local Variables 面板中不起作用,直到作用域中所有变量都已定义 #2254 PR #2255

vscode-json-languageservice 的贡献

vscode-vsce 的贡献

debug-adapter-protocol 的贡献

language-server-protocol 的贡献

python-environment-tools 的贡献

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