2025 年 5 月 (版本 1.101)
发布日期:2025 年 6 月 12 日
安全更新:以下扩展有安全更新:ms-python.python。
更新 1.101.1:此更新解决了这些问题。
更新 1.101.2:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel Apple 芯片 | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2025 年 5 月版本。此版本包含许多我们希望您会喜欢的更新,其中一些主要亮点包括:
-
MCP
-
聊天
- 通过将相关工具组合到工具集中来分组和管理它们 (显示更多)。
-
源代码管理
如果您想在线阅读这些发布说明,请访问 code.visualstudio.com 上的更新。内部人员:想尽快试用新功能?您可以下载每晚内部人员版本,并在功能可用时立即试用最新更新。
聊天
聊天工具集
VS Code 现在允许您通过提议的 API 或 UI 定义工具集。工具集是不同工具的集合,可以像单个工具一样使用。工具集使得将相关工具分组,并在代理模式下快速启用或禁用它们变得更容易。例如,下面的工具集用于管理 GitHub 通知(使用GitHub MCP 服务器)。
{
"gh-news": {
"tools": ["list_notifications", "dismiss_notification", "get_notification_details"],
"description": "Manage GH notification",
"icon": "github-project"
}
}
要创建工具集,请从命令面板运行配置工具集 > 创建新工具集文件命令。然后,您可以选择要包含在工具集中的工具,并提供描述和图标。
要在聊天查询中使用工具集,请通过 # 提及其名称来引用它,例如 #gh-news
。您也可以从聊天输入框中的工具选择器中选择它。
在我们的文档中了解有关工具集的更多信息。
MCP 对提示的支持
VS Code 的模型上下文协议支持现在包括提示支持。MCP 服务器可以定义提示,为语言模型生成可重用的片段或任务。提示可以通过聊天中的斜杠 /
命令访问,格式为 /mcp.servername.promptname
。您可以输入纯文本或在提示变量中包含命令输出,当服务器提供时,我们也支持补全。
以下示例展示了我们如何使用 AI 生成提示,使用Gistpad MCP 服务器保存它,然后使用它生成变更日志条目
MCP 对资源的支持
VS Code 的模型上下文协议支持现在包括资源支持,其中包括对资源模板的支持。它在多个地方可用:
- 从 MCP 工具调用返回的资源可供模型使用,并且可以通过保存按钮或将资源拖到资源管理器视图中保存到聊天。
- 可以通过聊天中的添加上下文...按钮,然后选择MCP 资源...来将资源作为上下文附加。
- 您可以使用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 服务器有权访问您的帐户
您还可以管理该服务器应使用哪个帐户(通过上一个快速选择中的齿轮按钮)
对于依赖动态客户端注册的其他 MCP 服务器,我们将身份验证状态包含在与其他所有内容相同的位置,例如 Linear
您也可以在那里注销。对于这些,我们不仅支持代码授权流程,还支持设备代码流程(如果您的授权服务器支持)。
我们还引入了命令Authentication: Remove Dynamic Authentication Providers
,允许您清理任何这些动态客户端注册。这将丢弃颁发给 VS Code 的客户端 ID 以及与此身份验证提供程序关联的所有数据。
请记住,您可以使用MCP: 添加服务器...命令来添加 MCP 服务器。这与需要身份验证的服务器的入口点相同。
MCP 开发模式
您可以通过在服务器配置中添加 dev
键来为 MCP 服务器启用开发模式。这是一个具有两个属性的对象:
watch
:用于监视文件更改以重新启动 MCP 服务器的文件 glob 模式。debug
:允许您使用 MCP 服务器设置调试器。目前,我们仅支持调试分别使用node
和python
启动的 Node.js 和 Python 服务器。
.vscode/mcp.json
{
"servers": {
"gistpad": {
"command": "node",
"args": ["build/index.js"],
+ "dev": {
+ "watch": "build/**/*.js",
+ "debug": { "type": "node" }
+ },
聊天用户体验改进
我们正在根据您的反馈不断改进 VS Code 中的聊天用户体验。其中一个反馈是,在聊天中区分用户消息和 AI 响应可能很困难。为了解决这个问题,我们让用户消息的显示更加清晰。
撤消之前的请求现在也更加显眼 - 只需将鼠标悬停在请求上并选择 X
按钮即可撤消该请求和任何后续请求。或者更快地,使用键盘快捷键 ⌘Backspace (Windows, Linux Delete)!
最后,聊天输入框中的附件现在更易于导航。
在我们的文档中了解有关在 VS Code 中使用聊天的更多信息。
更高效地应用编辑
在编辑文件时,VS Code 可以采用两种不同的方法:要么从头到尾重写文件,要么进行多个较小的编辑。两种方法有所不同,例如,前者对于大文件可能较慢,并且中间状态通常无法成功编译。因此,UI 会根据需要调整并有条件地禁用自动保存和波浪线。
我们还统一了保留和撤消命令的键盘绑定。保留和撤消单个更改现在使用⌘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 修复操作可以快速有效地解决这些错误。
自定义聊天模式(预览)
默认情况下,聊天视图支持三种内置聊天模式:提问、编辑和代理。每种聊天模式都带有一组基本指令,描述 LLM 应如何处理请求,以及可用于该请求的工具列表。
您现在可以定义自己的自定义聊天模式,这些模式可以在聊天视图中使用。自定义聊天模式允许您调整聊天的行为并指定在该模式下可用的工具。这对于专用工作流或当您想要向 LLM 提供特定指令时特别有用。例如,您可以为规划新功能创建自定义聊天模式,该模式仅对您的代码库具有只读访问权限。
要定义和使用自定义聊天模式,请按照以下步骤操作:
- 通过命令面板中的聊天:配置聊天模式命令定义自定义模式。
- 在创建的
*.chatprompt.md
文件中为您的自定义聊天模式提供指令和可用工具。 - 在聊天视图中,从聊天模式下拉列表中选择聊天模式。
- 提交您的聊天提示。
以下示例显示了一个自定义的“规划”聊天模式
---
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 窗口
- 在浮动窗口中开始新的聊天会话。
获取工具确认
获取工具使您能够从网页中提取信息。我们已在确认消息中添加了警告消息,以告知您潜在的提示注入。
自定义更多内置工具
现在可以在代理模式或您的自定义模式中启用或禁用所有内置工具。例如,禁用 editFiles
以禁止代理模式直接编辑文件,或禁用 runCommands
以禁止运行终端命令。
在代理模式下,选择配置工具按钮以打开工具选择器,并选择您想要的工具集。
此菜单中的某些条目表示分组多个工具的工具集。例如,我们为模型提供了多种工具来编辑或创建文本文件和笔记本,这些工具也可能因模型系列而异,而 editFiles
将所有这些工具分组。
将元素发送到聊天(实验性)
上一个里程碑,我们添加了一个新的实验性功能,您可以在其中打开简单浏览器并选择网页元素以从嵌入式浏览器添加到聊天。
随着我们继续改进此功能,我们还添加了在实时预览扩展中选择网页元素的支持。下载扩展并从任何 HTML 文件启动实时服务器即可查看此功能。
辅助功能
需要用户操作声音
我们添加了一个辅助功能信号,用于指示聊天何时需要用户操作。这是选择性加入的,因为我们正在微调声音。您可以使用 accessibility.signals.chatUserActionRequired 配置此行为。
新的代码操作声音
我们引入了独特的声音:
代理模式辅助功能改进
我们现在在可访问视图中包含有关确认对话框的丰富信息,涵盖了过去的工具运行、当前的工具运行以及任何待处理的确认。这包括将使用的输入。
当确认对话框出现在响应中时,操作的标题现在包含在相应代码块的 ARIA 标签、响应的 ARIA 标签和实时警报中,以便为屏幕阅读器用户提供更好的上下文。
编辑器体验
随键入随搜
随键入随搜一直是查找控件的默认行为,但现在您可以控制是保留此行为还是禁用它,以便只有在按 Enter 后才执行搜索。
带原生窗口标题栏的自定义菜单
您现在可以使用 window.menuStyle 设置,指定 Windows 和 Linux 上菜单栏和上下文菜单以及 macOS 上上下文菜单的菜单样式。
native
:由操作系统渲染custom
:由 VS Code 渲染inherit
:与 window.titleBarStyle 设置的标题栏样式匹配(允许您使用原生标题栏和自定义菜单栏以及上下文菜单)。
Linux 原生窗口上下文菜单
现在,当您在自定义标题栏中右键单击应用程序图标时,我们支持原生窗口上下文菜单。
进程资源管理器 Web 支持
进程资源管理器已转换为使用我们工作台中用于编辑器窗口的浮动窗口基础结构。因此,这也意味着我们现在在连接到远程(例如在 Codespaces 中)时支持 Web 中的进程资源管理器。
Windows Shell 环境发现
我们现在已经为 Windows 上的 PowerShell 实现了 Shell 环境发现。这意味着 VS Code 继承了 PowerShell 配置文件中配置的任何环境,例如 Node.js 通过各种版本管理器配置的 PATH 更新。
未发布扩展警告
已安装的扩展在不再在 Marketplace 中可用时会显示警告指示器,帮助您识别可能已取消发布或删除的潜在问题扩展。
设置搜索建议(预览)
设置:workbench.settings.showAISearchToggle
在此里程碑中,我们在设置编辑器中添加了一个开关,该开关启动 AI 搜索以查找语义相似的结果,而不是基于字符串匹配的结果。例如,当您搜索“增加文本大小”时,AI 搜索会找到 editor.fontSize
设置。
要查看开关,请启用该设置并重新加载 VS Code。我们还在识别和修复一些不太准确的设置搜索结果,我们欢迎您在自然语言查询未能找到预期设置时提供反馈。
对于下一个里程碑,我们还在考虑删除该开关并将实验设置更改为控制何时将较慢的 AI 搜索结果直接附加到列表末尾的设置。
搜索关键词建议(预览)
设置:search.searchView.keywordSuggestions
上个里程碑,我们在搜索视图中引入了关键词建议,帮助您更快地找到相关结果。现在,我们显著提高了建议的性能,因此您将看到结果比以前快约 5 倍。
我们还将设置从聊天扩展移至 VS Code 核心,并将其从 github.copilot.chat.search.keywordSuggestions
重命名为 search.searchView.keywordSuggestions。
语义搜索行为选项(预览)
设置:search.searchView.semanticSearchBehavior
通过搜索视图中的语义搜索,您可以根据查询的含义获取结果,而不仅仅是匹配文本。如果您不知道要搜索的确切术语,这尤其有用。
默认情况下,语义搜索仅在您明确请求时运行。我们现在添加了一个设置来控制何时触发语义搜索:
manual
(默认):仅在通过 UI 手动触发时运行语义搜索(⌘I (Windows, Linux Ctrl+I))runOnEmpty
:当文本搜索没有结果时自动运行语义搜索auto
:始终与文本搜索并行运行语义搜索,用于每个搜索查询
编辑上下文
我们已在 Stable 版本中默认启用 editor.editContext 设置。这意味着编辑器的输入现在由 EditContext API 提供支持。这修复了许多错误,尤其是与 IME 体验相关的错误,并且未来将为编辑器内更通用、更强大的输入体验铺平道路。
有关 EditContext API 的更多详细信息,请参阅 MDN 文档。
代码编辑
NES 导入建议
设置:github.copilot.nextEditSuggestions.fixes
上个月,我们推出了下一条编辑建议支持,用于自动建议为 TypeScript 和 JavaScript 添加缺失的导入语句。在此版本中,我们改进了这些建议的准确性和可靠性,并扩展了对 Python 文件的支持。
NES 已对所有 VS Code Insiders 用户启用,并将在 6 月期间逐步默认对 Stable 用户启用。您可以随时通过其设置自行启用 NES。
NES 接受流程
现在,通过改进的键盘导航,接受下一步编辑建议更加无缝。一旦您接受了一个建议,只要您没有再次开始输入,就可以通过按一个 Tab 键继续接受后续建议。一旦您开始输入,请按 Tab 键先将光标移动到下一个建议,然后才能接受它。
Notebook
代理单元格执行的跟随模式
设置:github.copilot.chat.notebook.followCellExecution.enabled
使用跟随模式,笔记本视图将自动滚动到代理当前正在执行的单元格。使用 github.copilot.chat.notebook.followCellExecution.enabled 设置可启用或禁用 Jupyter 笔记本中代理单元格执行的跟随模式。
一旦代理使用了运行单元格工具,笔记本工具栏就会更新一个图钉图标,指示跟随模式的状态。您可以在代理响应中途切换行为,而无需更改基本设置值,从而允许您实时跟踪代理的工作,并在您想要查看特定代码部分时将其关闭,同时代理继续迭代。当您希望再次跟随时,只需切换模式,并在下一次执行时加入。
代理模式的笔记本工具
配置笔记本
Jupyter 扩展为配置 Jupyter 笔记本的内核提供了工具。此工具确保已选择内核并准备好在笔记本中使用。这包括在需要时引导您完成创建虚拟环境的过程(推荐方法),或提示您选择现有 Python 环境。
此工具确保 LLM 可以在最小用户交互的情况下对笔记本执行操作,例如运行单元格,从而改善代理模式下的整体用户体验。
长期运行的代理工作流
代理可以访问一个内部笔记本摘要工具,以帮助其保持准确的上下文。当上下文变得太大而无法让代理继续执行复杂操作时,该摘要也会包含在对话历史记录摘要中。
运行确认中的单元格预览
当代理请求确认运行笔记本单元格时,会显示该单元格的代码片段。聊天视图中的单元格链接现在还可以让您直接导航到笔记本中的单元格。
源代码管理
Copilot 编码代理集成
借助 Copilot 编码代理,GitHub Copilot 可以在后台独立完成任务,就像人类开发人员一样。我们已扩展 GitHub 拉取请求扩展,使其更易于在 VS Code 中为代理分配和跟踪任务。
我们已向扩展添加以下功能:
- 分配给 Copilot:从 VS Code 中的问题或 PR 视图将拉取请求或问题分配给 Copilot。
- Copilot 代我 PR 查询:快速查看 Copilot 正在为您处理的所有拉取请求。
- PR 视图:查看 Copilot 编码代理的状态并在浏览器中打开会话详细信息。
源代码管理历史项详细信息
应大众需求,在源代码管理图视图中选择一个项现在会显示该历史项的资源。您可以从 ...
菜单中选择树视图或列表视图表示。
要在多文件差异编辑器中打开历史项的所有资源,请在悬停时使用打开更改操作。从图视图中选择特定资源只会为该资源打开一个差异编辑器。选择打开文件操作以打开该特定版本的文件。
将历史项添加到聊天上下文
您现在可以将源代码管理历史项作为上下文添加到聊天请求。当您想将特定提交或拉取请求的内容作为聊天提示的上下文提供时,这会很有用。
要将历史项添加到聊天,请从聊天视图中使用添加上下文 > 源代码管理,然后选择一个特定的历史项。或者,右键单击源代码管理图中的历史项,然后从上下文菜单中选择Copilot > 将历史项添加到聊天。
任务
实例策略
任务 runOptions
现在具有 instancePolicy
属性,它决定当任务达到其 instanceLimit
时会发生什么。
选项包括 prompt
(默认)、silent
、terminateNewest
、terminateOldest
和 warn
。
终端
基于语言服务器的终端建议
语言服务器补全现在在终端的交互式 Python REPL 会话中可用。这使得您在编辑器中获得的相同语言补全现在可以在终端内使用。我们首先通过 Pylance 支持 Python,并计划将来扩展到更多语言。
要试用它,请确保启用以下设置:
- terminal.integrated.shellIntegration.enabled
- python.terminal.shellIntegration.enabled
- terminal.integrated.suggest.enabled
- python.analysis.supportAllPythonDocuments
远程开发
远程开发扩展允许您使用 开发容器、通过 SSH 的远程机器或 远程隧道,或者 适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。
亮点包括:
- SSH 预连接脚本
- 远程资源管理器改进
您可以在远程开发发布说明中了解有关这些功能的更多信息。
对扩展的贡献
Python
Python 聊天工具
Python 扩展现在包含以下聊天工具:“获取 Python 环境信息”、“获取 Python 环境可执行文件信息”、“安装 Python 包”和“配置 Python 环境”。您可以直接在提示中添加 #getPythonEnvironmentInfo
#installPythonPackage
来引用它们,或者代理模式会在适用时自动调用该工具。这些工具根据文件或工作区上下文无缝检测适当的环境信息,并以准确的环境解析处理包安装。
“配置 Python 环境”工具确保为工作区正确设置 Python 环境。这包括在需要时创建虚拟环境,并将其选择为工作区的活动 Python 环境。
以前在Python 环境扩展(预览)中引入的工具已迁移到 Python 扩展,从而使所有安装了 Python 扩展的用户都可以使用这些工具。
从模板创建项目
Python 环境扩展现在支持为 Python 包和基本脚本创建项目,让您无需脚手架即可更快地开始编码。使用命令Python 环境:从模板创建项目选择您是要创建包还是脚本。
对于包创建,您可以命名包,创建虚拟环境,并接收一个包含测试子文件夹、pyproject.toml
、dev-requirements.txt
以及样板 __main__.py
和 __init__.py
文件的脚手架项目。
对于脚本,它会创建一个您选择名称的新 Python 文件,并包含样板代码。
PyEnv 和 Poetry 支持
我们在Python 环境扩展中添加了对用于环境管理的 pyenv
以及用于包和环境管理的 poetry
的支持。
GitHub 拉取请求
GitHub 拉取请求扩展取得了更多进展,它使您能够处理、创建和管理拉取请求和问题。新功能包括:
- 来自私有仓库的评论中的图片现在在拉取请求文件评论中显示。
- “通知”视图现在默认显示,但已折叠。——时间线和问题/拉取请求正文中的问题和拉取请求链接现在在 VS Code 中打开,而不是转到浏览器。
- “拉取请求”视图中的“分配给我”查询已删除,“本地拉取请求分支”和“所有开放”查询可以使用
githubPullRequests.queries
设置删除。对于带有 Copilot 的仓库,当设置未配置时,将添加“Copilot 代我”查询。 - Copilot 的“开始工作”、“停止工作”和“查看会话”现在显示在时间线中。
查看扩展 0.112.0 版本的更新日志以了解其他亮点。
扩展开发
MCP 扩展 API
扩展现在可以发布 MCP 服务器集合。这使您能够将 MCP 服务器与您的扩展捆绑在一起,或者构建从其他源动态发现 MCP 服务器的扩展。在我们的MCP 扩展开发指南中了解更多信息,或者查看MCP 扩展示例。
打包扩展时进行密钥扫描
VSCE 现在在打包扩展时会扫描密钥。如果在您的源文件中检测到任何潜在的密钥(例如,API 密钥、令牌、凭据或环境变量文件,如 .env
),VSCE 会在打包过程中显示错误。这有助于您避免意外地将敏感信息发布到 Marketplace。请务必在发布扩展之前审查并解决任何错误。
如果您需要绕过特定检查,可以在运行 VSCE 时使用 --allow-package-secrets <secret_type>
或 --allow-package-env-file
标志。这些标志允许您配置在打包过程中应跳过哪些密钥或环境变量文件检查。
Web 环境检测
⚠️ 破坏性更改 ⚠️
设置:extensions.supportNodeGlobalNavigator
Node.js 扩展主机已从 v20 更新到 v22,作为我们 Electron 35 运行时更新的一部分。此更新带来了对桌面和远程扩展主机中 navigator
全局对象的支持。
此更改可能会为依赖于 navigator
对象存在以检测 Web 环境的扩展引入破坏性更改。
为了帮助扩展作者迁移,我们为 globalThis.navigator
创建了一个 polyfill,它初始化为 undefined
,因此您的扩展可以继续正常工作。该 polyfill 位于 extensions.supportNodeGlobalNavigator VS Code 设置后面。默认情况下,此设置已禁用,并且 polyfill 已就位。当您的扩展以这种方式尝试访问 navigator
时,我们会捕获遥测数据并记录错误(在扩展开发模式下)。
将来,此设置可能会默认启用,因此我们敦促扩展作者迁移其代码以兼容新的 navigator
全局对象。请按照以下步骤迁移您的代码:
- 检查扩展主机日志中是否有源自您的扩展的
PendingMigrationError
。 - 确保将
typeof navigator === 'object'
等检查根据需要迁移到typeof process === 'object' && process.versions.node
。 - 启用 extensions.supportNodeGlobalNavigator。
- 验证扩展行为是否保持不变。
提议的 API
身份验证提供程序:MCP 支持的授权服务器
此 API 提案目前仅在 MCP 身份验证中利用,它允许您的 AuthenticationProvider
声明与其关联的授权服务器。
例如,如果您查看 GitHub 身份验证提供程序,它在身份验证提供程序贡献的 authorizationServerGlobs
属性中包含了典型的 GitHub 授权 URL
{
"label": "GitHub",
"id": "github",
"authorizationServerGlobs": ["https://github.com/login/oauth"]
}
此属性用于激活您的扩展 - 如果请求的授权服务器匹配,您的扩展将被激活。
此外,注册身份验证提供程序时,您必须包含最终的授权服务器 URL globs。就像 GitHub 身份验证在这里所做的那样
vscode.authentication.registerAuthenticationProvider(
type,
this._githubServer.friendlyName,
this,
{
supportsMultipleAccounts: true,
supportedAuthorizationServers: [
ghesUri ?? vscode.Uri.parse('https://github.com/login/oauth')
]
}
);
对于更复杂的示例,请查看 Microsoft 身份验证。授权服务器取决于租户是否放在路径中。因此,我们在此处使用了通配符在贡献中
{
"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 时,它会通过已存在的 AuthenticationProviderSessionOptions
传递给 getSessions
和 createSession
函数。
如前所述,此功能目前用于 MCP 支持,我们从 MCP 服务器接收用于身份验证的授权服务器 URL。然后,该 URL 映射到一个身份验证提供程序,如果不存在,则为该身份验证服务器动态创建一个身份验证提供程序。
完整的 API 提案可以在 vscode 仓库中找到,我们很乐意在 GitHub issue 中听取您的反馈!
工程
Electron 35 更新
在此里程碑中,我们将 Electron 35 更新推广到 Stable 版本的用户。此更新附带 Chromium 134.0.6998.205 和 Node.js 22.15.1。我们要感谢所有在 Insiders 版本上自托管并提供早期反馈的人。
在实际扩展中采用 ESM
上一个里程碑,我们宣布支持 JavaScript 模块 (ESM)。这使得扩展可以使用 import
和 export
语句,但目前仅限于针对 NodeJS 扩展主机。
本月,我们对 GitHub Issue Notebooks 进行了实际采用。这并非易事,因为此扩展可以在 NodeJS 扩展主机(支持 ESM 扩展)和 Web Worker 扩展主机(目前不支持 ESM 扩展)中运行。这需要更复杂的打包程序配置,您可能希望从其 esbuild-config 中获取灵感。
值得注意的修复
- 250077 - 基于 Tree-Sitter 的语法高亮依赖于模型服务
感谢
最后但同样重要的是,向 VS Code 的贡献者们致以衷心的感谢。
问题跟踪
对我们问题跟踪的贡献
- @gjsjohnmurray (John Murray)
- @albertosantini (Alberto Santini)
- @RedCMD (RedCMD)
- @IllusionMH (Andrii Dieiev)
拉取请求
对 vscode
的贡献
- @alpalla (Alessio Palladino):向任务 runOptions 添加任务 instancePolicy PR ##117129
- @0xEbrahim (Ebrahim El-Sayed):修复拼写错误和语法 PR #248814
- @a-stewart (Anthony Stewart):对于编辑器字体选择,如果未检测到操作系统则假定为 Linux PR #248133
- @adnval (kevin):添加已安装过滤器 PR #248055
- @bhack:添加新源格式和强制 signed-by PR #239390
- @dylanchu:TerminalTaskSystem:添加对 nushell 的支持 PR #238440
- @eronnen (Ely Ronnen)
- 使调试控制台中的最大行数可配置 PR #245915
- 从 vscode-logfile-highlighter 3.4.1 更新日志 tmLanguage PR #249046
- 反汇编视图:不显示无效内存指令 PR #249779
- 反汇编视图:处理调试适配器返回的负行高 PR #250081
- @gabritto (Gabriela Araujo Britto):[typescript-language-features] 添加最大悬停长度配置 PR #248181
- @hickford (M Hickford):无论是否换行,都正确高亮显示活动行号 PR #240029
- @imfing (Xin):修复:为 DynamicAuthProvider 有条件地在授权 URL 中追加 scope 参数 PR #250084
- @jeanp413 (Jean Pierre)
- 修复切换编辑器过快时时间线 git 请求未取消的问题 PR #244335
- 修复 vscode.env.onDidChangeShell 未在 webworker 扩展主机中触发的问题 PR #249824
- @joyceerhl (Joyce Er)
- 重构:在聊天列表渲染器中重用聊天附件小部件 PR #248163
- 修复:在聊天附件内容部分注册小部件 PR #249054
- 修复:设置历史聊天附件上的内容引用描述 PR #249112
- 修复:将 markdown 字符串用于 MCP 工具确认 PR #249497
- 修复:如果编辑会话身份提供者改变编辑会话负载,则允许“继续” PR #250057
- @JoyceGu (Joyce Gu):Joycegu/add genai packages 05222025 PR #249589
- @mawosoft (Matthias Wolf):修复启用严格模式时 PowerShell Shell 集成。 PR #248625
- @mortalYoung (野迂迂):修复(搜索):修复“全部展开”不起作用 PR #248207
- @nojaf (Florian Verdonck):关闭所有未使用的端口命令 PR #244245
- @nomike (nomike):增强 GithHub 发布逻辑以处理重命名的仓库 PR #245024
- @Parasaran-Python (Parasaran):修复 #248222 | 正则表达式更改以允许相对路径中存在多个前导点 PR #248340
- @pelmers-db (Peter Elmers):修复 Picker onDidChangeValue 处理程序中的取消逻辑(修复 #247945) PR #247946
- @randy3k (Randy Lai):更新 R 语法的上游仓库 PR #248880
- @rbuckton (Ron Buckton):添加强制转换以消除因更新 DOM 类型而导致的破坏 PR #248346
- @RedCMD (RedCMD):支持
@builtin @disabled
PR #235885 - @xzakharov (Oleksandr Zakharov):修复(devcontainer):提升 rust 功能以修复容器构建 PR #250430
- @y0sh1ne (y0sh1ne):修复多选时复制消息 (#_247927) PR #248172
对 vscode-copilot-release
的贡献
- @joyceerhl (Joyce Er):chore:更新错误报告模板 PR #9702
对 vscode-css-languageservice
的贡献
- @Legend-Master (Tony):添加基本的媒体查询自动完成支持 PR #443
- @rgant (J Rob Gant)
对 vscode-custom-data
的贡献
- @Legend-Master (Tony):添加媒体查询支持 PR #118
对 vscode-eslint
的贡献
对 vscode-generator-code
的贡献
- @SamB (Samuel Bronson):不链接到 vscode 文档顶部 PR #518
对 vscode-js-debug
的贡献
- @kdy1 (Donny/강동윤): chore: 修复 turbopack 的默认 url PR #2223
- @mikaelwaltersson (Mikael Waltersson):修复 WasmWorker 实例被处置但页面重新加载时从未重新生成的问题 + 当 WASM 内存是 SharedArrayBuffer 时 writeMemory PR #2211
对 vscode-jupyter
的贡献
- @WillHirsch:降低使用感叹号而非百分号进行包安装的诊断严重性 PR #16601
对 vscode-languageserver-node
的贡献
- @martijnwalraven (Martijn Walraven):修复
workspace/textDocumentContent/refresh
请求 PR #1637
对 vscode-markdown-tm-grammar
的贡献
- @Barros1902 (Tomás Barros ):修复 Markdown 语法中带有下划线的删除线(修复 microsoft#173) PR #174
对 vscode-prompt-tsx
的贡献
- @joyceerhl (Joyce Er):chore: npm audit fix PR #175
对 vscode-pull-request-github
的贡献
- @kabel (Kevin Abel):当没有私人 GitHub 电子邮件时允许验证 PR #6921
对 vscode-python-debugger
的贡献
- @kycutler (Kyle Cutler):修复尝试读取目录时出现的
TypeError
PR #692
对 debug-adapter-protocol
的贡献
- @DrSergei:修复一些拼写错误 PR #543
- @robertoaloi (Roberto Aloi):添加 Erlang EDB 调试器 PR #544
对 language-server-protocol
的贡献
- @asukaminato0721 (Asuka Minato)
- @brynne8 (Brynne Taylor):修复 glob 模式规范中的拼写错误 PR #2132
- @leon-bckl (Leon):添加 c++20 lsp-framework PR #2144
- @nieomylnieja (Mateusz Hawrus): chore: 将 Nobl9 VSCode 扩展添加到 servers.md PR #2136
- @zonuexe (USAMI Kenta):为 Emacs 添加 LSP 客户端 PR #2145
对 lsprotocol
的贡献
- @debonte (Erik De Bonte)
- @myleshyson (Myles Hyson):将 golang 添加到插件表 PR #418