– 代理会话日,2月19日

2025年5月 (版本 1.101)

发布日期:2025年6月12日

安全更新:以下扩展已发布安全更新:ms-python.python

更新 1.101.1:此更新解决了这些 问题

更新 1.101.2:此更新解决了这些 问题

下载:Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


欢迎阅读 Visual Studio Code 2025年5月发布版。此版本包含许多我们希望您会喜欢的更新,其中的主要亮点包括

  • MCP

    • 通过对提示词 (Prompts)、资源和采样的支持,扩展您的智能体编码流程 (了解更多)。
    • 访问需要身份验证的 MCP 服务器 (了解更多)。
    • 通过开发模式调试 MCP 服务器 (了解更多)。
    • 通过扩展发布 MCP 服务器 (了解更多)。
  • 聊天

    • 通过将相关工具合并到工具集中来分组和管理它们 (了解更多)。
  • 源代码管理

    • 在源码控制图表视图中查看文件 (了解更多)。
    • 在 VS Code 内部为 GitHub Copilot 编码智能体分配并跟踪工作 (了解更多)。

如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新Insiders:想尽快尝试新功能吗?您可以下载每晚Insiders版本并尽快尝试最新更新。

聊天

聊天工具集

VS Code 现在允许您通过提议的 API 或 UI 定义工具集。工具集是不同工具的集合,可以像单个工具一样使用。工具集使得将相关工具分组在一起变得更加容易,并能在智能体模式下快速启用或禁用它们。例如,下面的工具集用于管理 GitHub 通知(使用 GitHub MCP 服务器)。

{
  "gh-news": {
    "tools": ["list_notifications", "dismiss_notification", "get_notification_details"],
    "description": "Manage GH notification",
    "icon": "github-project"
  }
}

要创建工具集,请从命令面板运行 配置工具集 (Configure Tool Sets) > 创建新的工具集文件 命令。然后,您可以选择要包含在工具集中的工具,并提供描述和图标。

要在聊天查询中使用工具集,可以通过 #-提及 它的名称来引用它,例如 #gh-news。您也可以从聊天输入框的工具选择器中选择它。

Screenshot of the Chat view showing a query about unread notifications, using the 'gh-news' tool set highlighted in both the chat interface and a JSON configuration file which defines this tool set.

在我们的文档中了解更多关于 工具集 的信息。

MCP 对提示词的支持

VS Code 的模型上下文协议 (MCP) 支持现在包括了提示词支持。MCP 服务器可以定义提示词,为语言模型生成可重用的代码片段或任务。提示词可以在聊天中通过斜杠 / 命令访问,格式为 /mcp.servername.promptname。您可以输入纯文本或在提示词变量中包含命令输出,当服务器提供补全功能时,我们也支持补全。

以下示例展示了我们如何使用 AI 生成提示词,使用 Gistpad MCP 服务器 保存它,然后使用它生成变更日志条目

MCP 对资源的支持

VS Code 的模型上下文协议支持现在包括资源支持,其中包括对资源模板的支持。它在多个地方可用:

  1. 从 MCP 工具调用返回的资源可供模型使用,并可以保存在聊天中,通过 保存 按钮或将资源拖动到资源管理器视图中实现。
  2. 资源可以通过聊天中的 添加上下文... 按钮作为上下文附加,然后选择 MCP 资源...
  3. 您可以使用 MCP: 浏览资源 命令浏览和查看跨服务器的资源,或者通过 MCP: 列出服务器 命令中的条目查看特定服务器的资源。

这是一个将来自 Gistpad MCP 服务器 的资源附加到聊天的示例

MCP 对采样的支持 (实验性)

VS Code 的模型上下文协议支持现在包括采样,这允许 MCP 服务器向模型发起回调请求。MCP 服务器第一次发起采样请求时,系统会要求您确认,您可以配置 MCP 服务器有权访问的模型,并通过在 MCP: 列出服务器 中选择该服务器来查看请求日志。

采样支持仍处于初步阶段,我们计划在未来的迭代中进行扩展和改进。

MCP 对身份验证的支持

VS Code 现在支持需要身份验证的 MCP 服务器,允许您与代表您该服务帐户运行的 MCP 服务器进行交互。

此功能实现了客户端的 MCP 授权规范,并支持以下两种:

  • 2025-3-26 规范,其中 MCP 服务器充当授权服务器。
  • 草案规范,其中 MCP 服务器充当资源服务器(预计近期将定稿)。

如果 MCP 服务器实现了草案规范并利用 GitHub 或 Entra 作为授权服务器,您可以管理哪些 MCP 服务器有权访问您的帐户

Screenshot of the "Manage Trusted MCP Servers" option in the account menu.

Screenshot of the "Manage Trusted MCP Servers" Quick Pick.

您还可以管理该服务器应使用哪个帐户(通过上一个快速选择框中的齿轮按钮)

Screenshot of the "Account Preference" Quick Pick.

对于依赖动态客户端注册的其他 MCP 服务器,我们将身份验证状态与其他所有内容放在一起,例如 Linear

Screenshot of Linear appearing in the account menu.

在那里您也可以退出登录。对于这些服务器,如果您的授权服务器支持,我们不仅支持代码授权流程,还支持设备代码流程。

我们还引入了命令 身份验证: 移除动态身份验证提供程序 (Authentication: Remove Dynamic Authentication Providers),允许您清理这些动态客户端注册。这将删除签发给 VS Code 的客户端 ID 以及与此身份验证提供程序关联的所有数据。

请记住,您可以使用 MCP: 添加服务器... 命令来添加 MCP 服务器。对于带身份验证的服务器,入口点是相同的。

MCP 开发模式

您可以通过在服务器配置中添加 dev 键来为 MCP 服务器启用 开发模式。这是一个具有两个属性的对象

  • watch:一个文件 glob 模式,用于监视文件更改以重新启动 MCP 服务器。
  • debug: 允许您为 MCP 服务器设置调试器。目前,我们仅支持调试分别使用 nodepython 启动的 Node.js 和 Python 服务器。

.vscode/mcp.json

{
  "servers": {
    "gistpad": {
      "command": "node",
      "args": ["build/index.js"],
+     "dev": {
+       "watch": "build/**/*.js",
+       "debug": { "type": "node" }
+     },

聊天 UX 改进

我们正在根据您的反馈不断改进 VS Code 中的聊天用户体验。其中一个反馈是,在聊天中很难区分用户消息和 AI 回复。为了解决这个问题,我们让用户消息的外观更加鲜明。

撤销之前的请求现在也更加显眼——只需将鼠标悬停在请求上并选择 X 按钮即可撤销该请求及其后的所有请求。或者更快一点,使用 ⌘Backspace (Windows, Linux 为 Delete) 键盘快捷键!

最后,聊天输入框中的附件现在更易于导航。

在我们的文档中了解更多关于 在 VS Code 中使用聊天 的信息。

更高效地应用编辑

在编辑文件时,VS Code 可以采取两种不同的方法:要么自上而下重写文件,要么进行多次较小的编辑。这两种方法有所不同,例如前者对于大文件可能较慢,且中间状态通常无法成功编译。因此,UI 会根据需要有条件地禁用自动保存和波浪线提示。

我们还统一了 保留 (Keep)撤销 (Undo) 命令的快捷键。保留和撤销单个更改现在可以使用 ⌘Y (Windows, Linux 为 Ctrl+Y)⌘N (Windows, Linux 为 Ctrl+N)。秉承同样的精神,我们也统一了保留和撤销文件中所有更改的快捷键,现在它们分别是 ⇧⌘Y (Windows, Linux 为 Ctrl+Shift+Y)⇧⌘N (Windows, Linux 为 Ctrl+Shift+N)。这不仅是为了统一,还消除了之前与常用编辑命令(如 删除左侧所有内容)的冲突。

隐式上下文

我们优化并简化了在聊天中将当前文件添加为上下文的方式。许多人发现我们之前采用的“眼睛图标切换”有点笨拙。现在,您的当前文件会作为一个建议的上下文项提供。只需选择该项即可在聊天上下文中添加或删除它。在提示词输入框中,按 Shift+Tab, Enter 即可通过键盘快速操作。

此外,在智能体模式下,我们会包含关于您当前编辑器的提示。这不包含文件内容,仅包含文件名和光标位置。如果智能体认为与您的查询相关,它可以利用其拥有的工具自行读取文件内容。

在我们的文档中了解更多关于 在聊天中添加上下文 的信息。

修复任务配置错误

配置任务和问题匹配程序可能很棘手。当任务配置中出现错误时,使用提供的 使用 Github Copilot 修复 操作来快速高效地解决这些错误。

自定义聊天模式 (预览)

默认情况下,聊天视图支持三种内置聊天模式:咨询 (Ask)、编辑 (Edit) 和智能体 (Agent)。每种聊天模式都附带一套基础指令,描述 LLM 应如何处理请求,以及可用于处理请求的工具列表。

您现在可以定义自己的自定义聊天模式,并在聊天视图中使用。自定义聊天模式允许您根据需要调整聊天行为,并指定该模式下可用的工具。这对于专业化工作流或当您想向 LLM 提供特定指令时特别有用。例如,您可以为规划新功能创建一个自定义聊天模式,该模式仅对您的代码库具有只读访问权限。

要定义和使用自定义聊天模式,请按以下步骤操作

  1. 使用命令面板中的 聊天: 配置聊天模式 (Chat: Configure Chat Modes) 命令定义自定义模式。
  2. 在创建的 *.chatprompt.md 文件中提供自定义聊天模式的指令和可用工具。
  3. 在聊天视图中,从聊天模式下拉列表中选择该模式。
  4. 提交您的聊天提示词。

Screenshot of the custom chat mode selected in the Chat view.

以下示例展示了一个自定义的“规划 (Planning)”聊天模式

---
description: Generate an implementation plan for new features or refactoring existing code.
tools: ['codebase', 'fetch', 'findTestFiles', 'githubRepo', 'search', 'usages']
---
# Planning mode instructions
You are in planning mode. Your task is to generate an implementation plan for a new feature or for refactoring existing code.
Don't make any code edits, just generate a plan.

The plan consists of a Markdown document that describes the implementation plan, including the following sections:

* Overview: A brief description of the feature or refactoring task.
* Requirements: A list of requirements for the feature or refactoring task.
* Implementation Steps: A detailed list of steps to implement the feature or refactoring task.
* Testing: A list of tests that need to be implemented to verify the feature or refactoring task.

注意:此功能尚在开发中,但请尽管试用!请关注 VS Code Insiders 的最新进展,并告诉我们哪些功能不起作用或缺失。

任务诊断感知

当聊天智能体运行任务时,它现在能够感知问题匹配程序识别出的任何错误或警告。这种诊断上下文允许聊天智能体在出现问题时做出更智能的反应。

终端当前工作目录 (cwd) 上下文

当智能体模式打开终端且 Shell 集成处于活动状态时,聊天智能体会感知当前工作目录 (cwd)。这使得命令支持更加准确且具备上下文意识。

悬浮窗口改进

当您将聊天会话移动到悬浮窗口时,标题栏中现在有两个新操作可用

  • 将聊天停放回其来源的 VS Code 窗口
  • 在悬浮窗口中开始新的聊天会话。

Screenshot of the Chat view in a floating window, highlighting the Dock and New Chat buttons in the title bar.

Fetch 工具确认

Fetch 工具使您能够从网页抓取信息。我们在确认信息中添加了警告消息,以告知您潜在的提示词注入风险。

Screenshot of the fetch tool with a warning about prompt injection.

自定义更多内置工具

现在可以在智能体模式或您的自定义模式中启用或禁用所有内置工具。例如,禁用 editFiles 以禁止智能体模式直接编辑文件,或禁用 runCommands 以禁止运行终端命令。

在智能体模式下,选择 配置工具 按钮打开工具选择器,并选择所需的工具集。

Screenshot of the tool picker, showing the "editFiles" tool set item cleared.

此菜单中的一些条目代表了对多个工具进行分组的工具集。例如,我们为模型提供了多种用于编辑或创建文本文件和笔记本的工具,这些工具可能因模型系列而异,而 editFiles 将所有这些工具组合在一起。

将元素发送到聊天 (实验性)

上个里程碑,我们添加了一个 新的实验性功能,您可以打开简单浏览器并从中选择 Web 元素添加到聊天中。

Screenshot showing the Live Preview extension, highlighting the overlay controls to select web elements from the web page.

随着我们不断改进此功能,我们也在 Live Preview 扩展 中增加了对选择 Web 元素的支持。下载该扩展并从任何 HTML 文件启动实时服务器即可体验。

辅助功能

需要用户操作提示音

我们添加了一个辅助功能信号,用以指示聊天何时需要用户操作。由于我们正在微调声音,目前此功能为手动开启。您可以使用以下设置配置此行为:

accessibility.signals.chatUserActionRequired
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
.

新代码操作提示音

我们为以下情况引入了独特的提示音:

  • 当触发代码操作时:
    accessibility.signals.codeActionTriggered
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
  • 当应用代码操作时:
    accessibility.signals.codeActionApplied
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开

智能体模式辅助功能改进

我们现在在辅助视图中包含了关于确认对话框的丰富信息,涵盖了过去的工具运行、当前的工具运行以及任何待处理的确认,包括将要使用的输入内容。

当回复中出现确认对话框时,操作的标题现在会包含在对应代码块的 ARIA 标签、回复的 ARIA 标签以及实时警报中,以便为屏幕阅读器用户提供更好的上下文。

编辑器体验

键入时查找

设置

editor.find.findOnType
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

键入时查找一直是查找控件的默认行为,但现在您可以控制是保持这种方式,还是禁用它以使其仅在按下回车键后执行搜索。

带原生窗口标题栏的自定义菜单

设置

window.menuStyle
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

您现在可以通过使用 属性,指定 Windows 和 Linux 上的菜单栏和右键菜单、以及 macOS 上的右键菜单所使用的菜单样式。

window.menuStyle
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置来设置他们偏好的模式

  • native:由操作系统渲染
  • custom:由 VS Code 渲染
  • inherit:与
    window.titleBarStyle
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    设置的标题栏样式匹配(允许您使用原生标题栏配合自定义菜单栏和右键菜单)。

Linux 原生窗口右键菜单

我们现在支持在自定义标题栏中的应用程序图标上点击右键时显示原生窗口右键菜单。

Screenshot of the native window context menu over the custom title bar.

进程管理器 Web 版支持

进程管理器已转换为使用我们在工作区中为编辑器窗口提供的悬浮窗口架构。因此,这也意味着我们现在支持在连接到远程环境(例如在 Codespaces 中)时在 Web 端使用进程管理器。

Screenshot of the VS Code process explorer in a floating window.

Windows Shell 环境探测

我们现在为 Windows 上的 PowerShell 实现了 Shell 环境探测。这意味着 VS Code 将继承 PowerShell 配置文件中配置的任何环境,例如 Node.js 通过各种版本管理器配置的 PATH 更新。

未发布的扩展警告

已安装的扩展如果不再在应用商店中提供,现在会显示警告指示器,帮助您识别可能存在问题的、已被取消发布或删除的扩展。

Screenshot of an extension with a warning indicator and a message indicating it's no longer available in the Marketplace.

设置搜索建议 (预览)

设置

workbench.settings.showAISearchToggle
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

本里程碑中,我们在设置编辑器中添加了一个开关,用于启动 AI 搜索,以查找语义相似的结果,而不仅是基于字符串匹配的结果。例如,当您搜索“增加文字大小”时,AI 搜索会找到 editor.fontSize 设置。

要查看该开关,请启用相应设置并重新加载 VS Code。我们还在识别和修复一些不太准确的设置搜索结果,欢迎就自然语言查询未找到预期设置的情况提供反馈。

对于下一个里程碑,我们还在考虑移除该开关,并将实验性设置更改为控制何时直接将较慢的 AI 搜索结果附加到列表末尾。

搜索关键词建议 (预览)

设置

search.searchView.keywordSuggestions
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

上个里程碑,我们在搜索视图中引入了 关键词建议,以帮助您更快找到相关结果。我们现在显著提升了建议的性能,您看到结果的速度将比以前快约 5 倍。

我们还将此设置从聊天扩展转移到了 VS Code 核心中,并将其从 github.copilot.chat.search.keywordSuggestions 重命名为

search.searchView.keywordSuggestions
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
.

语义搜索行为选项 (预览)

设置

search.searchView.semanticSearchBehavior
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

通过搜索视图中的语义搜索,您可以根据查询的含义而不是仅仅匹配文本来获取结果。如果您不知道要搜索的确切术语,这会特别有用。

默认情况下,语义搜索仅在您明确请求时运行。我们现在添加了一个设置来控制您希望何时触发语义搜索:

  • manual (默认):仅在从 UI 手动触发时运行语义搜索 (⌘I (Windows, Linux 为 Ctrl+I))
  • runOnEmpty:当文本搜索没有返回结果时自动运行语义搜索
  • auto:对于每个搜索查询,始终与文本搜索并行运行语义搜索

编辑上下文 (Edit Context)

设置

editor.editContext
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

我们已在稳定版中默认启用了 设置。

editor.editContext
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
这意味着编辑器的输入现在由 EditContext API 驱动。这修复了许多错误,特别是与 IME(输入法)体验相关的错误,并将为今后在编辑器内实现更通用、更强大的输入体验铺平道路。

有关 EditContext API 的更多详情,请参阅 MDN 文档

代码编辑

NES 导入建议

设置

github.copilot.nextEditSuggestions.fixes
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

上个月,我们引入了对“下一编辑建议 (NES)”的支持,以自动建议为 TypeScript 和 JavaScript 添加缺失的导入语句。在此版本中,我们提高了这些建议的准确性和可靠性,并将支持范围扩展到了 Python 文件。

Screenshot showing NES suggesting an import statement.

NES 已对所有 VS Code Insiders 用户启用,并将于 6 月逐步对稳定版用户默认启用。您也可以随时通过其设置自行启用 NES。

NES 接受流程

现在,通过改进的键盘导航,接受“下一编辑建议”变得更加顺畅。一旦您接受了一个建议,只要没有再次开始打字,就可以通过按一次 Tab 键继续接受后续建议。一旦您开始打字,按 Tab 键会先将光标移动到下一个建议处,然后您才能接受它。

Notebook

智能体单元格执行的跟随模式

设置

github.copilot.chat.notebook.followCellExecution.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

使用跟随模式后,笔记本视图将自动滚动到智能体当前正在执行的单元格。使用

github.copilot.chat.notebook.followCellExecution.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置来启用或禁用 Jupyter Notebook 中智能体单元格执行的跟随模式。

智能体使用运行单元格工具后,笔记本工具栏会更新为一个图钉图标,指示跟随模式的状态。您可以在智能体响应期间随时切换此行为,而无需更改基础设置值。这允许您实时跟随智能体的工作,并在您想在智能体继续迭代时查看特定代码部分时将其关闭。当您希望再次跟随并加入下一次执行时,只需切换该模式即可。

智能体模式的笔记本工具

配置笔记本

Jupyter 扩展 贡献了用于配置 Jupyter Notebook 内核的工具。此工具可确保选定内核并准备好在笔记本中使用。这包括在需要时引导您创建虚拟环境(推荐方法),或提示您选择现有的 Python 环境。

此工具确保 LLM 可以对笔记本执行操作(如运行单元格),且只需极少的人机交互,从而提升智能体模式下的整体用户体验。

长运行智能体工作流

智能体可以访问内部的笔记本摘要工具,以帮助其保持准确的上下文。当上下文过大无法维持智能体进行复杂操作时,该摘要也会包含在会话历史摘要中。

运行确认中的单元格预览

当智能体请求运行笔记本单元格的确认时,会显示该单元格的一段代码片段。聊天视图中的单元格链接现在也允许您直接导航到笔记本中的单元格。

源代码管理

Copilot 编码智能体集成

有了 Copilot 编码智能体,GitHub Copilot 可以像人类开发人员一样在后台独立完成任务。我们扩展了 GitHub Pull Requests 扩展,以便在 VS Code 内部更轻松地为智能体分配和跟踪任务。

我们在扩展中添加了以下功能:

  • 分配给 Copilot:从 VS Code 的议题或 PR 视图中将拉取请求或议题分配给 Copilot
  • 代表我的 Copilot (Copilot on My Behalf) PR 查询:快速查看 Copilot 正在为您处理的所有拉取请求。
  • PR 视图:查看 Copilot 编码智能体的状态,并在浏览器中打开会话详情。

Screenshot showing the GitHub Pull Requests view, highlighting the assign to Copilot action, and the PR query for work assigned to Copilot.

源码控制历史项详情

应广大用户要求,在源码控制图表视图中选择一个项目现在会显示该历史项目的资源。您可以从 ... 菜单中选择树状视图或列表视图表示形式。

要在多文件差异编辑器中打开历史项目的所有资源,请使用悬停时的 打开更改 (Open Changes) 操作。从图表视图中选择特定资源仅会为该资源打开差异编辑器。选择 打开文件 (Open File) 操作可打开该特定版本的文件。

将历史项目添加到聊天上下文

您现在可以将源码控制历史项目作为上下文添加到聊天请求中。当您想提供特定提交或拉取请求的内容作为聊天提示词的上下文时,这非常有用。

Screenshot of the Chat view input box that has a history item added as context.

要将历史项目添加到聊天,请从聊天视图使用 添加上下文 > 源码控制,然后选择特定的历史项目。或者,在源码控制图表中右键单击历史项目,然后从右键菜单选择 Copilot > 将历史项目添加到聊天

任务

实例策略

任务的 runOptions 现在具有 instancePolicy 属性,它决定了当任务达到其 instanceLimit 时会发生什么。

选项包括 prompt (默认)、silentterminateNewestterminateOldestwarn

Screenshot showing an  being configured in a  file and displays the options with prompt as the default value.

终端

基于语言服务器的终端建议

现在在交互式 Python REPL 会话的终端中可以使用语言服务器补全。这为您在编辑器中获得的相同语言补全带到了终端内部。我们首先支持通过 Pylance 实现的 Python,并计划在未来扩展到更多语言。

要试用此功能,请确保启用了以下设置:

  • terminal.integrated.shellIntegration.enabled
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
  • python.terminal.shellIntegration.enabled
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
  • terminal.integrated.suggest.enabled
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
  • python.analysis.supportAllPythonDocuments
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开

远程开发

远程开发扩展允许您通过 SSH 或远程隧道使用开发容器、远程机器或适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。

亮点包括:

  • SSH 预连接脚本
  • 远程资源管理器改进

您可以在 远程开发发行说明 中了解关于这些功能的更多信息。

对扩展的贡献

Python

Python 聊天工具

Python 扩展 现在包含以下聊天工具:“获取 Python 环境信息”、“获取 Python 环境的可执行文件信息”、“安装 Python 包”和“配置 Python 环境”。您可以直接在提示词中通过添加 #getPythonEnvironmentInfo #installPythonPackage 来引用它们,或者智能体模式会根据需要自动调用该工具。这些工具能根据文件或工作区上下文无缝检测合适的环境信息,并通过准确的环境解析处理包安装。

“配置 Python 环境”工具确保为工作区正确设置 Python 环境。这包括在需要时创建虚拟环境,并将其选为工作区的活动 Python 环境。

之前在 Python Environments 扩展(预览版)中引入的工具已迁移到 Python 扩展中,从而使安装了 Python 扩展的所有用户都能使用这些工具。

从模板创建项目

Python Environments 扩展 现在支持为 Python 包和基本脚本创建项目,允许您跳过脚手架搭建并更快开始编码。使用 Python Envs: 从模板创建项目 命令来选择是要创建包还是脚本。

对于包创建,您可以为包命名、创建虚拟环境,并获得一个包含测试子文件夹、pyproject.tomldev-requirements.txt 以及样板 __main__.py__init__.py 文件的脚手架项目。

对于脚本,它会创建一个具有您选择的名称的新 Python 文件,并包含样板代码。

PyEnv 和 Poetry 支持

我们在 Python Environments 扩展中增加了对用于环境管理的 pyenv 以及同时用于包和环境管理的 poetry 的支持。

GitHub 拉取请求

GitHub Pull Requests 扩展取得了更多进展,该扩展使您能够处理、创建和管理拉取请求和问题。新功能包括:

  • 私有仓库评论中的图像现在会显示在拉取请求文件评论中。
  • “通知”视图现在默认显示,且处于折叠状态。-- 时间线、议题或 PR 正文中的议题和 PR 链接现在会在 VS Code 中打开,而不再转到浏览器。
  • “拉取请求”视图中“分配给我”的查询已被移除,“本地拉取请求分支”和“所有已打开”查询可以使用设置 githubPullRequests.queries 移除。对于使用 Copilot 的仓库,当未配置该设置时,会添加一个“代表我的 Copilot”查询。
  • Copilot “开始工作”、“停止工作”和“查看会话”现在会显示在时间线中。

查看该扩展的 0.112.0 版本变更日志 以了解其他亮点。

扩展开发

MCP 扩展 API

扩展现在可以发布 MCP 服务器集合。这使您能够将 MCP 服务器与扩展捆绑在一起,或者构建可从其他来源动态发现 MCP 服务器的扩展。在我们的 MCP 扩展开发指南 中了解更多信息,或者查看 MCP 扩展示例

打包扩展时的密钥扫描

VSCE 现在在打包扩展时会扫描密钥。如果在您的源文件中检测到任何潜在密钥(例如 API 密钥、令牌、凭据或 .env 等环境变量文件),VSCE 会在打包过程中显示错误。这有助于您避免意外地将敏感信息发布到应用商店。在发布扩展之前,请务必检查并解决所有错误。

如果您需要绕过特定检查,可以在运行 VSCE 时使用 --allow-package-secrets <secret_type>--allow-package-env-file 标志。这些标志允许您配置在打包过程中应跳过哪些密钥或环境文件检查。

Web 环境检测

⚠️ 重大变更 ⚠️

设置

extensions.supportNodeGlobalNavigator
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

作为 Electron 35 运行时更新 的一部分,Node.js 扩展宿主现在从 v20 更新到了 v22。此更新带来了桌面和远程扩展宿主中对 navigator 全局对象 的支持。

此更改可能会对依赖 navigator 对象是否存在来检测 Web 环境的扩展引入重大变更。

为了帮助扩展作者迁移,我们为 globalThis.navigator 创建了一个初始化为 undefined 的 polyfill,以便您的扩展继续正常工作。该 polyfill 位于

extensions.supportNodeGlobalNavigator
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
VS Code 设置之后。默认情况下,此设置是禁用的且 polyfill 已就位。当您的扩展尝试以此方式访问 navigator 时,我们会捕获遥测数据并记录错误(在扩展开发模式下)。

将来,此设置可能会默认启用,因此我们敦促扩展作者迁移代码以兼容新的 navigator 全局对象。请按照以下步骤迁移您的代码:

  • 检查扩展宿主日志中是否存在源自您扩展的 PendingMigrationError 错误堆栈。
  • 根据需要,确保将 typeof navigator === 'object' 之类的检查迁移到 typeof process === 'object' && process.versions.node
  • 启用
    extensions.supportNodeGlobalNavigator
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
  • 验证扩展行为是否保持不变。

提议的 API

身份验证提供程序:MCP 支持的授权服务器

此 API 提案目前仅用于 MCP 身份验证,它允许您的 AuthenticationProvider 声明与其关联的授权服务器。

例如,如果您查看 GitHub 身份验证提供程序,它在 身份验证提供程序贡献authorizationServerGlobs 属性中包含了典型的 GitHub 授权 URL

{
  "label": "GitHub",
  "id": "github",
  "authorizationServerGlobs": ["https://github.com/login/oauth"]
}

此属性用于激活您的扩展——如果请求的授权服务器匹配,您的扩展将被激活。

此外,在注册身份验证提供程序时,您必须包含最终确定的授权服务器 URL 通配符。就像 GitHub 身份验证在这里所做的

vscode.authentication.registerAuthenticationProvider(
  type,
  this._githubServer.friendlyName,
  this,
  {
    supportsMultipleAccounts: true,
    supportedAuthorizationServers: [
      ghesUri ?? vscode.Uri.parse('https://github.com/login/oauth')
    ]
  }
);

对于更复杂的例子,请看 Microsoft 身份验证。授权服务器取决于路径中放置的租户 (tenant)。因此,我们在 贡献中

{
  "label": "Microsoft",
  "id": "microsoft",
  "authorizationServerGlobs": [
    "https://login.microsoftonline.com/*/v2.0"
  ]
},

以及 注册中 使用了通配符。

authentication.registerAuthenticationProvider('microsoft', 'Microsoft', authProvider, {
  supportsMultipleAccounts: true,
  supportedAuthorizationServers: [Uri.parse('https://login.microsoftonline.com/*/v2.0')]
});

然后,当调用者在请求身份验证时传入授权服务器 URL 时,该 URL 会通过已经存在的 AuthenticationProviderSessionOptions 传递给 getSessionscreateSession 函数。

如前所述,此功能目前用于 MCP 支持,我们从 MCP 服务器接收要进行身份验证的授权服务器 URL。然后该 URL 会映射到一个身份验证提供程序,如果不存在,则会为该授权服务器动态创建一个身份验证提供程序。

完整的 API 提案可以在 vscode 仓库中 找到,我们非常希望能听到您在 GitHub issue 中的反馈!

工程

Electron 35 更新

在此里程碑中,我们将向稳定版用户推广 Electron 35 更新。此次更新包含 Chromium 134.0.6998.205 和 Node.js 22.15.1。我们要感谢所有在 Insiders 版本中自行测试并提供早期反馈的人员。

在实际扩展中采用 ESM

上个里程碑,我们宣布了对 JavaScript 模块 (ESM) 的支持。这使得扩展能够使用 importexport 语句,但目前仅限针对 NodeJS 扩展宿主时。

本月,我们在 GitHub Issue Notebooks 中进行了实际应用。这并不简单,因为此扩展既可以在 NodeJS 扩展宿主(支持 ESM 扩展)中运行,也可以在 Web Worker 扩展宿主(目前不支持 ESM 扩展)中运行。这需要更复杂的打包器配置,您可以从其 esbuild-config 中获取灵感。

值得注意的修复

  • 250077 - 基于 Tree-Sitter 的语法高亮取决于模型服务

感谢

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

问题跟踪

对我们问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-copilot-release 的贡献

vscode-css-languageservice 的贡献

vscode-custom-data 的贡献

vscode-eslint 的贡献

vscode-generator-code 的贡献

vscode-js-debug 的贡献

vscode-jupyter 的贡献

  • @WillHirsch: 针对包安装使用感叹号而非百分号的情况,降低诊断严重性级别 PR #16601

vscode-languageserver-node 的贡献

vscode-markdown-tm-grammar 的贡献

vscode-prompt-tsx 的贡献

vscode-pull-request-github 的贡献

vscode-python-debugger 的贡献

debug-adapter-protocol 的贡献

language-server-protocol 的贡献

lsprotocol 的贡献

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