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

2025 年 10 月 (版本 1.106)

发布日期:2025 年 11 月 12 日

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

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

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

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


欢迎来到 Visual Studio Code 2025 年 10 月发布版。

Graphic showing the key highlights of the October 2025 release: Agent HQ, Security and trust, and great editor experience.

本次发布版在三个关键领域带来了重大更新

  • Agent HQ 是您启动、监控和审查代理会话的单一视图,无论是本地还是远程,无论是来自 Copilot 还是 OpenAI Codex。
  • 安全和信任 帮助您保持控制,并自信地将更多任务委托给 AI。
  • 出色的编辑器体验,让您的日常编码更顺畅、更愉快。

观看我们的 VS Code 1.106 发布亮点视频,听我们的工程师介绍这些功能!

编码愉快!


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

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

代理

代理会话视图

设置chat.agentSessionsViewLocation

当您将任务交给各种编码代理时,拥有所有活动会话的清晰概览非常重要。代理会话视图提供了一个集中的位置来管理您的活动聊天会话。这包括 VS Code 中的本地会话以及其他环境中后台代理创建的会话,例如 Copilot 编码代理GitHub Copilot CLIOpenAI 的 Codex。代理会话视图现在默认启用,并且可以通过 chat.agentSessionsViewLocation 设置进行管理。

默认情况下,代理会话视图按来源列出您所有活动的聊天会话。该视图分为 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.

如果您希望拥有一个跨所有提供商的统一会话视图,您可以为 chat.agentSessionsViewLocation 设置启用 single-view 选项。此选项还会将代理会话视图移至辅助侧边栏的聊天视图旁边,从而更轻松地在聊天和管理会话之间切换。

请注意,统一视图中并非所有功能都可用。我们正在积极努力使该视图在不久的将来成为默认视图。

代理会话视图现在也支持搜索(⌥⌘F (Windows, Linux Ctrl+Alt+F)),以帮助您轻松查找列表中的会话。

在 VS Code 文档中了解有关 代理会话视图 的更多信息。

计划 Agent

新的计划代理可帮助开发人员在编写任何代码之前按部就班地分解复杂任务。从“聊天”视图中的代理下拉列表中选择“计划”即可开始。在处理多步实现时,VS Code 会通过澄清性问题提示您,并生成一个详细的实现计划,您首先需要批准该计划,以确保所有要求和上下文都已在开始时捕获。

我们建议在实现之前花时间对计划进行迭代。您可以多次完善要求、调整范围并解决未决问题,以建立坚实的基础。批准计划后,Copilot 会在 VS Code 中本地或通过 云代理 来实现计划,从而为您提供更大的开发过程控制和可见性。这有助于您及早发现差距或遗漏的决策,从而减少返工并提高代码质量。

您还可以创建自己的自定义计划代理,以适应您团队特定的工作流程和工具。使用“配置自定义代理”菜单将内置计划代理作为起点复制,然后自定义计划风格、工具和提示以匹配您的开发过程。了解有关 VS Code 聊天中的计划创建自定义代理 的更多信息。

云代理

在此版本中,我们对编辑器中的云代理会话进行了一些更新。

我们将 Copilot 编码代理集成从 GitHub Pull Request 扩展迁移到了 Copilot Chat 扩展,以便在 VS Code 中提供更原生的云代理体验。此集成将为 VS Code 和 GitHub Mission Control 之间的更平滑的过渡和交互铺平道路,例如直接从浏览器中的代理会话视图打开云代理会话,反之亦然。

CLI 代理

在此版本中,我们还发布了与 Copilot CLI 的初步集成。您可以在聊天编辑器或集成终端中创建新的 CLI 代理会话并恢复现有会话。

Screenshot of the CLI dropdown menu showing options to create a new CLI agent session or resume an existing one.

在 CLI 代理编辑器中,您可以像在终端中一样向 Copilot CLI 发送消息、切换模型并附加上下文。

Screenshot showing a CLI agent editor and an integrated terminal with Copilot CLI sessions.

代理委托

我们持续改进委托给云代理的体验。

当您使用聊天面板中的云按钮委托给代理时,系统将为您提供一组可供委托的可用代理。您也可以通过 CLI 中的 /delegate 命令在 CLI 编辑器或终端实例中委托给 Copilot 编码代理。

Screenshot showing delegating from a CLI agent editor.

CLI 代理编辑跟踪

聊天编辑会话现在会跟踪后台代理(如 Copilot CLI)所做的编辑。当您从代理会话视图创建会话时,可以通过内联编辑气泡和工作集视图查看跟踪的编辑,从而更轻松地了解代理正在对您的工作区进行的更改。

聊天模式重命名为自定义代理

为了更好地与其他环境使用的术语保持一致,VS Code 中的聊天模式已重命名为自定义代理。

Screenshot of the agent picker control.

当您创建自定义代理时,定义文件现在位于工作区的 .github/agents 中。这些文件可以使用 .agents.md 后缀,并且还可以用作 GitHub Copilot 云代理和 CLI 代理。

使用“聊天: 新建自定义代理...”创建新代理,并使用“聊天: 配置自定义代理...”进行管理。

如果您有现有的自定义聊天模式(.github/chatmodes 中的 .chatmode.md 文件),它们将继续工作并自动被视为自定义代理。当您在编辑器中打开聊天代理文件时,第一行会出现一个信息标记,并提供一个快速修复程序将其迁移到自定义代理文件。

自定义代理元数据

自定义代理 .agent.md 文件现在接受额外的 target frontmatter 属性来描述代理如何在不同环境中运行。

  • target: vscode:针对本地聊天优化代理,并启用 namedescriptionargument-hintmodeltoolshandoffs 属性。可以使用 VS Code 中安装的任何工具。
  • target: github-copilot:为 Copilot 云代理或 GitHub CLI 准备代理,支持 namedescriptiontoolsmcp-serverstarget。工具可以是 editsearchshellcustom-agent 以及来自 MCP 服务器的工具。

所有代理都可以在所有环境中运行。每个环境都会忽略未知的属性和工具。

  • name:允许您在不重命名文件的情况下覆盖代理标签。
  • argument-hint:在聊天输入中显示提示,以便团队成员知道如何提示代理。
  • handoffs:连接到其他代理的引导式转换,让您可以链接多步工作流。

代理文件编辑器提供验证、代码补全、悬停和代码操作。

GIF of validation while editing custom agent files.

在我们的文档中了解有关 自定义代理和代理交接 的更多信息。

代码编辑

差异编辑器中的已删除代码现在可选

以前,当您删除代码并在差异编辑器中查看更改时,无法复制这些已删除的行。在此版本中,在使用内联差异视图时,您现在可以从差异编辑器中的已删除行选择和复制文本。

内联建议是开源的

此版本继续我们使 VS Code 成为开源 AI 编辑器的旅程。继我们开源 GitHub Copilot Chat 的第一个里程碑之后,我们现在已将内联建议合并到 vscode-copilot-chat 存储库中,从而实现了开源。

作为此里程碑的一部分,我们将 GitHub Copilot 扩展和 GitHub Copilot Chat 扩展合并为一个扩展体验。Chat 扩展现在支持所有内联建议,提供您习惯的相同智能代码建议,同时保留所有聊天和代理功能。此更改应该是透明的,您在输入时将继续获得相同的代码建议。如果您遇到任何问题,可以使用 chat.extensionUnification.enabled 设置暂时恢复。

GitHub Copilot 扩展将于 2026 年初弃用。请参阅我们的 博客文章,了解此里程碑的更多信息并探索开源代码。

从标尺禁用内联建议

您现在可以直接从标尺图标中暂停内联建议。当您将鼠标悬停在标尺图标上时,会出现一个带有“暂停”选项的控件。选择它并选择一个持续时间来暂停建议。

Screenshot showing the Snooze button in the gutter context menu for inline suggestions.

转到行改进

在此迭代中,我们对“转到行”命令(⌃G (Windows, Linux Ctrl+G))进行了多项增强,改进了文件内的导航。

转到行”命令现在支持通过使用 :: 语法导航到文件中的特定字符位置。当工具在特定字符偏移量处报告错误时(例如,“错误发生在位置 599”),这非常有用。

要导航到字符偏移量,请在“转到行”输入框中键入 ::,后跟字符编号。例如

  • ::599 - 导航到文件中的第 599 个字符
  • ::-100 - 从文件末尾向前导航 100 个字符

使用输入框中的切换按钮在 1 基(默认)和 0 基偏移量计算之间切换。

此外,“转到行”命令还能更优雅地处理超出范围的值,并可以更轻松地导航到文件和行的开头或结尾。

  • 行号:键入大于文件行数的行号将导航到最后一行。
  • 列号:使用负数列号可以从行尾导航。例如,:12:-1 将您带到第 12 行的最后一个字符。键入大于行长度的列号将带您到行尾。

编辑器体验

刷新图标

在此版本中,codicon 图标集已进行了改头换面。新图标经过了曲线、新修饰符设计和更精确的比喻的细化,使其看起来现代、友好且更易读。

Screenshot of updated product icons showing a more modern appearance and increased legibility.

Linux 策略支持

我们引入了支持使用 JSON 文件在 Linux 系统上管理 VS Code 策略。这使得管理员可以在 Linux 计算机上的所有用户之间强制执行特定的设置和配置。

有关更多详细信息,请参阅 Linux 上的 JSON 策略

多文件差异编辑器中的导航更改

就像您可以导航到单个文件的差异编辑器中的下一个或上一个更改一样,现在您可以在多文件差异编辑器中跨文件进行导航。使用快捷键或向上和向下箭头键来查看跨文件的更改。

复制诊断悬停文本

诊断悬停(错误、警告、信息和提示)中现在会出现一个复制按钮,使复制错误消息更加容易。当您将鼠标悬停在诊断标记上时,将鼠标移到悬停消息上,将在右上角显示一个复制按钮。

Screenshot of hovering over a diagnostic hover revealing a copy button in the top-right corner.

区分重音的命令过滤

命令面板现在在搜索命令时会忽略字符重音,从而更容易找到所需内容,无论您的键盘布局或语言偏好如何。例如,在搜索包含法语词 Générer(意为 Generate)的命令时,键入不带重音的 generer 即可在结果中显示匹配的命令。

这在使用不同键盘布局或在查找命令时输入错误时非常有用。过滤基于 Unicode 标准化形式 D,并支持所有 Unicode 语言。

高级 VS Code 设置

VS Code 现在支持高级设置的概念。这些设置用于配置专门的场景,并面向需要对其环境进行精细控制的高级用户。默认情况下,高级设置在设置编辑器中隐藏,以保持界面简洁,同时在需要时提供这些强大的选项。

要查看和配置高级设置,请在设置编辑器的过滤器下拉菜单中选择“高级”,或在搜索框中键入 @tag:advanced

Screenshot showing the Settings editor with the Advanced filter applied, displaying advanced settings with the Advanced tag badge

当您按确切名称搜索特定设置或使用 @id: 过滤器时,高级设置将显示在结果中,而无需应用“高级”过滤器。这可确保您始终能找到所需的设置。

高级设置可以与其他过滤器(如 @modified@feature:)结合使用,以帮助您准确找到所需内容。例如,@tag:advanced @feature:terminal 只显示与终端相关的高级设置。

注意:扩展作者可以通过将 advanced 标签添加到设置配置来将其设置标记为高级。

聊天

基于嵌入的工具选择

在此版本中,我们显著改进了过滤和分组工具的方式,以支持拥有大量(超过 100 个)已启用工具的聊天用户。您应该会更少地看到“正在优化工具选择...”加载状态,并且持续时间更短。我们还通过降低代理混淆的概率来改进工具选择,以确保选择正确的工具。

工具批准和信任

外部数据的会后批准

提取外部数据的代理工具现在支持会后批准。这有助于防止潜在的提示注入攻击,允许您在数据用于聊天会话之前进行审查。

#fetch 工具以及声明了 openWorldHint 的模型上下文协议 (MCP) 工具支持会后批准。

信任服务器或扩展的所有工具

您现在可以通过“允许”按钮下拉菜单在源级别信任 MCP 服务器和扩展工具。这意味着您可以一次性批准来自特定 MCP 服务器或扩展的所有工具,而无需单独批准每个工具。

我们还更新了“聊天: 管理工具批准”命令体验,让您可以管理工具的预批准和会后批准。

Screenshot of the Manage Tool Approval command experience, enabling tools to skip approval and skipping content review.

工具自动批准状态已移动

自动批准状态已从聊天视图内的行内移动到工具调用状态/勾号图标。

Screenshot of hovering a tool's tick icon will reveal why it was auto approved

终端工具

自动批准解析器改进

以前,终端工具中的子命令检测使用了一种简单的方法,即仅根据 |&& 等特定字符串进行分割。这在多种方面存在问题,其中最严重的是当管道字符用在字符串内部时,例如 echo "a|b|c",它会检测到子命令 echobc"。另一个重要问题是,由于我们无法可靠地提取子命令,我们为了安全起见,完全禁止了括号对、花括号对和反引号,以防止意外执行。

在此版本中,我们将 解析器 集成到此功能中,并使用 PowerShell 语法bash 语法 来处理其他所有内容*。因此,即使是极其复杂的用例也应该被正确提取。

Screenshot of detecting "$()" inside echo calls.

*请注意,这意味着当 shell 语法与 bash 不同时(例如 zsh 中的 ;),它可能无法捕获子命令

文件写入/重定向检测(实验性)

借助新的解析器,我们可以相对可靠地提取通过重定向写入的文件。新增了实验性设置 chat.tools.terminal.blockDetectedFileWrites,该设置可以有条件地阻止自动批准。

Screenshot showing that writing outside the workspace by default will block auto approval.

禁用默认自动批准规则(实验性)

新的实验性设置 chat.tools.terminal.ignoreDefaultAutoApproveRules 允许禁用默认规则(允许和拒绝规则)。如果您想要更多控制而不必查找默认值,这很有用。

特定于 shell 的提示和命令重写

终端工具现在为 PowerShell、bash、zsh 和 fish 提供了特定于 shell 的描述。这应该能使代理建议的命令更可靠,并且更不容易失败,尤其是在 PowerShell 中。

此外,对于 PowerShell,我们还将 && 重写为 ;,因为 && 链式运算符在 Windows PowerShell (v5) 中不受支持。请注意,这暂时也适用于 PowerShell 7,直到 vscode#274548 被处理。

将终端命令附加到聊天

您现在可以从命令装饰的上下文菜单中将终端命令作为上下文附加到聊天中。附件共享命令、捕获的输出和退出代码,以便代理能够准确了解发生了什么。这适用于 shell 集成跟踪的任何命令,使得无需复制粘贴文本即可轻松升级故障排除。

在聊天中查看终端输出(实验性)

新的 chat.tools.terminal.outputLocation 设置控制输出的显示位置。默认的 none 值可防止终端充斥面板。

每次调用聊天终端都会在进度元素上显示两个操作。

  • 显示终端可显示并聚焦隐藏的会话,并且通过丰富的 shell 集成,可直接滚动到相关命令。对于基本或无 shell 集成,该操作仍会聚焦正确的终端标签页。
  • 显示输出会在聊天视图中内联打开终端的最终输出。当命令以非零代码退出时,输出视图会自动展开。

npm i 失败时,输出会自动展开。通过“显示终端”内联操作可以显示终端。

发现隐藏的聊天终端(实验性)

setting(chat.tools.terminal.outputLocation):none 时,当至少存在一个隐藏的聊天终端时,终端标签页视图中会显示一个新的“X 个隐藏终端”按钮。它会打开一个快速选择器,列出每个聊天终端及其聊天会话,以便您可以立即聚焦正确的进程。从终端溢出菜单下的“查看隐藏的聊天终端”中也可以找到相同的选择器,并且一旦所有聊天终端再次可见,它就会消失。

代理运行 ls -la,命令成功,因此输出被折叠。从选项卡视图中执行“隐藏终端”操作,并选择、显示和滚动终端以突出显示命令。

将对话另存为提示

您现在可以使用 /savePrompt 命令将聊天对话另存为可重用提示。当您在活动的聊天会话中调用 /savePrompt 时,VS Code 会生成一个提示文件,其中包含基于您的对话的通用提示。编辑器会显示一个蓝色按钮,让您可以将此提示保存到有效位置,无论是用户级别还是工作区级别。

Screenshot of the Save prompt button in the editor.

此功能取代了之前的 /save 命令,并为捕获和共享有用的对话模式提供了更流畅的工作流程。生成的提示可以轻松地在将来的聊天会话中重用,或与您的团队共享。了解有关 自定义提示文件 的更多信息。

编辑欢迎提示

您现在可以右键单击“聊天”欢迎视图中的建议提示,以访问其他操作。当您右键单击提示(或按 Shift+F10)时,会出现一个上下文菜单,其中包含“编辑提示文件”选项,可直接在编辑器中打开相应的提示文件。

对于具有关联文件的提示(包括用户定义的提示和通过 chat.promptFilesRecommendations 设置配置的项目特定提示)的编辑提示文件工作正常。

Screenshot of a context menu for a suggested prompt.

了解有关 自定义提示文件 的更多信息。

自动打开已编辑文件

设置chat.openEditedFilesAutomatically

我们更改了代理的默认行为,不再自动在编辑器中打开已编辑的文件。如果您偏好之前的行为,可以启用 accessibility.openChatEditedFiles 设置。

推理(实验性)

设置chat.agent.thinkingStylechat.agent.thinking.collapsedTools

上个版本,我们添加了 chat.agent.thinkingStyle 设置,该设置启用了在聊天中显示思考令牌。现在更多模型支持此功能!从这个版本开始,GPT-5-Codex、GPT-5、GPT-5 mini 和 Gemini 2.5 Pro 都支持此功能。

chat.agent.thinkingStyle 已调整为三种更常见的样式,默认值为 fixedScrolling,以显示最新的思维链。

附加设置 chat.agent.thinking.collapsedTools 将工具调用添加到可折叠的思考 UI 中。

Screenshot showing reasoning tokens displayed in chat with interleaved tool calls and reasoning output. This is the UI with  and  for the respective thinking settings.

内联聊天 v2(预览版)

设置inlineChat.enableV2

我们已加大了现代化内联聊天的力度。它专为

  • 单一提示,
  • 单一文件,
  • 以及仅用于代码更改而构建。

这使得整体体验更加轻量化,并允许更简化的 UI。对于它无法处理的任务,您将自动升级到聊天视图。

聊天视图 UX 改进

我们调整了聊天视图的一些部分,使其使用起来更令人愉快。

  • 创建新聊天的操作现在是一个下拉菜单,其中包含在编辑器中或在新窗口中创建聊天会话的选项。
  • 工具和 MCP 服务器操作已移至模型选择器旁边。
  • 配置下拉菜单已得到清理。

Screenshot of the action to create a new chat dropdown menu.

现在还可以通过右键单击聊天视图中的数学表达式来复制数学源。

MCP

您的组织的 MCP 服务器访问权限

设置chat.mcp.gallery.serviceUrlchat.mcp.access

VS Code 现在支持通过 GitHub 组织策略配置的 MCP 注册表。这使得组织可以设置自定义 MCP 注册表并控制可以安装和启动哪些 MCP 服务器。

当在组织的策略中配置了 MCP 注册表端点时,VS Code 将:

  • 提供来自已配置注册表的 MCP 服务器的浏览和安装。
  • 当启用访问限制时,将 MCP 服务器的启动限制为仅限注册表中可用的服务器。

当您的组织配置了这些策略时,chat.mcp.gallery.serviceUrl 设置指定 MCP 注册表端点 URL,而 chat.mcp.access 设置控制访问是否仅限于该注册表中的服务器。在设置编辑器中,这些设置将标记为“(由组织管理)”。

Screenshot showing MCP settings managed by organization policy, including the Gallery Service URL and Access control settings

要了解有关为您的组织或企业配置 MCP 服务器访问的更多信息,请参阅 配置 MCP 服务器访问

将 MCP 服务器安装到工作区配置

安装 MCP 服务器时,您现在可以选择是全局安装还是安装到工作区配置。右键单击扩展视图中的 MCP 服务器,然后从上下文菜单中选择“安装(工作区)”,或直接在 MCP 服务器编辑器中使用“安装(工作区)”操作。这会将 MCP 服务器添加到当前工作区的 .vscode/mcp.json 文件中,从而更轻松地与团队共享 MCP 服务器。

Screenshot showing the context menu for an MCP server with the Install (Workspace) option highlighted

身份验证:客户端 ID 元数据文档身份验证流程

远程 MCP 的身份验证支持现已支持 客户端 ID 元数据文档 (CIMD) 身份验证流程,这是 MCP 中 OAuth 的未来标准。此流程通过 动态客户端注册 (DCR) 提供了更安全、更具可扩展性的身份验证解决方案,因为现在授权服务器无需担心为每个客户端发出客户端 ID。

连接到使用支持 CIMD 的授权服务器的 MCP 服务器时,VS Code 将自动使用该流程而非 DCR。

有关 CIMD 的更多信息,请参阅 oauth.net 上的资源

身份验证:WWW-Authenticate 范围升级

远程 MCP 的身份验证支持现在通过 WWW-Authenticate 标头支持远程 MCP 服务器的动态范围升级。这在 OAuth 2.0 规范 中有所说明。这允许 MCP 服务器在需要时请求其他权限,而不是要求所有范围都预先提供。例如,连接到服务器可能需要一组最小的范围,但特定的工具调用仅在必要时可以请求更广泛的权限。这遵循最小权限原则,提供了更好的安全性。

这在 MCP 规范的最新草案 中有所说明,该草案预计将很快定稿。

辅助功能

语音超时默认禁用

配置 accessibility.voice.speechTimeout 的默认值已更改为 0。这意味着,语音会话不再会在延迟一段时间后自动结束(例如,如果您暂停,聊天请求不会自动触发)。我们认为这是一个更好的默认体验,但您始终可以改回之前的默认值(2500)。

聊天输入改进

聊天输入现在以更清晰的顺序播报活动代理和模型,以便屏幕阅读器用户首先听到最相关的上下文。聊天可访问性帮助还指出,您可以通过按 Delete 键删除附加的上下文项,从而使附件管理完全可以通过键盘访问。

Notebook

笔记本现在支持跨单元格搜索。使用快捷键(⌘G (Windows, Linux F3)⇧⌘G (Windows, Linux Shift+F3))在笔记本单元格之间导航到下一个和上一个匹配项,就像在编辑器中一样。

源代码管理

Git 提交消息中的折叠支持

设置: git.verboseCommit, git.useEditorAsCommitInput

在编辑器中编写 git commit 消息时,您现在可以折叠 commit 消息的部分内容,以保持整洁。要使用此功能,请启用 git.verboseCommitgit.useEditorAsCommitInput 设置。

Screenshot showing folding nodes in the gutter and a partially collapsed commit message in the editor.

显示传入/传出更改的图表

设置: scm.graph.showIncomingChanges, scm.graph.showOutgoingChanges

在此版本中,我们增加了在源代码管理图视图中轻松查看传入和传出更改的功能。对于存在传入或传出更改的活动分支,图表将显示“传入更改”和“传出更改”节点。选择每个节点将显示传入或传出文件的列表。

Screenshot showing incoming and outgoing changes nodes in the Source Control Graph view.

您可以使用 scm.graph.showIncomingChangesscm.graph.showOutgoingChanges 设置来隐藏图视图中的此信息。

比较引用的图表

我们在源代码管理图上下文菜单中添加了一个新命令“与...比较”,该命令允许您将图中的历史项与任意分支或标签进行比较。此功能可让您查看历史项中存在但分支或标签中不存在的更改。

在上下文菜单中,有快捷命令“与远程比较”和“与合并基线比较”,分别用于将历史项与远程分支和合并基线进行比较。

存储库选择模式

设置: scm.repositories.selectionMode

源代码管理存储库视图显示工作区中已打开的存储库列表,并用于控制源代码管理更改视图中显示的存储库。

我们正在寻求扩展存储库视图的功能,并为此做准备,我们引入了一项设置 scm.repositories.selectionMode,用于将存储库视图中的选择模式控制为单个存储库或多个存储库。

除了存储库视图中的新功能外,这还使我们能够移除图视图标题中的存储库选择器,并在所有源代码管理视图中拥有一个全局存储库选择器。您可以使用该设置或从存储库视图的“...”菜单中切换选择模式。

Screenshot showing the Repositories view with single selection mode enabled and the context menu to toggle selection mode.

新存储库菜单

用户可以使用 scm/repository 菜单 ID 将命令贡献到新源代码管理存储库视图中的内联源代码管理提供程序行。贡献到“内联”组的命令将显示在内联,而所有其他命令将显示在 ... 菜单中。

存储库资源管理器(实验性)

设置: scm.repositories.explorer, scm.repositories.selectionMode

我们正在着手增强存储库视图并显示每个存储库的附加信息。要尝试此实验性功能,请设置 scm.repositories.selectionModescm.repositories.explorer

在第一个迭代中,我们专注于分支和标签。您可以创建新分支、标签,查看分支和标签列表,并对每个分支/标签执行各种操作(例如:检出等)。在下一个版本中,我们将添加更多信息(例如:stashes、remotes 等)。尝试一下此实验性功能,让我们知道您的想法。

Screenshot showing the Repositories explorer with branches and tags for a single selected repository.

测试

在测试覆盖率中导航未覆盖的行

在查看测试覆盖率时,您现在可以使用新的导航命令轻松地在未覆盖的行之间导航。在查看覆盖率信息时,编辑器工具栏中有两个命令可用。

  • 转到下一个未覆盖行 - 跳转到未被测试覆盖的下一行。
  • 转到上一个未覆盖行 - 跳转到未被测试覆盖的上一个行。

这些命令可帮助您快速识别覆盖率差距,并专注于需要额外测试覆盖的区域,从而更轻松地提高代码库的整体测试质量。

终端

终端 IntelliSense

终端 IntelliSense 作为一项实验性/预览功能已存在于产品中 约 1.5 年!在此版本中,我们将移除预览标签,并将其作为默认功能分阶段推出给所有稳定版用户。

启用后,在终端中键入时会弹出 IntelliSense,类似于编辑器对 PowerShell、bash、zsh 和 fish 的支持。

Screenshot of typing "write" in PowerShell will bring up completions starting with the word write.

补全项有各种来源,例如路径由核心处理。

某些命令具有高级规范,例如 git,它可以拉取分支名称。

如果我们从中学到了任何东西,那就是“一刀切”不适合所有人,所以有很多选项可以调整行为以获得您想要的结果。

如果您尚未看到此功能,请确保已启用 shell 集成,并通过 terminal.integrated.suggest.enabled 在设置中明确启用 IntelliSense。

除了整体的改进之外,本版本还为该功能带来了以下内容:

  • copilotazd CLI 现在具有补全功能。
  • 扩展 API 即将最终确定。
  • Git commit 补全显示 commit 消息。

Screenshot of git commit completions showing branch names and their associated commit messages in the terminal suggest details view.

合并 shell 集成超时设置

我们现在有一个统一的可配置设置 terminal.integrated.shellIntegration.timeout,它控制 VS Code 在执行终端命令(包括通过 executeCommand API 和 Copilot 终端工具触发的命令)之前等待 shell 集成准备就绪的时间。

chat.tools.terminal.shellIntegrationTimeout 已弃用,取而代之的是此合并设置。

认证

管理扩展账户偏好设置的可发现性

管理扩展账户偏好设置”命令现在更易于发现。除了在命令面板和扩展上下文菜单中可用外,它现在还与“管理语言模型访问权限”一起出现在“账户”菜单中。这使得查找和配置扩展可以访问的账户更加容易。

Screenshot of Manage Extension Account Preferences in the Account menu.

Microsoft 身份验证的最后一个“classic”版本 - 如果遇到问题,请使用“msal-no-broker”。

我们将移除 microsoft-authentication.implementation 的“classic”选项。这意味着 VS Code 1.106 版本是最后一个具有“classic”选项的版本。

microsoft-authentication.implementation 设置一直存在,以便用户在遇到问题时可以选择退出 Microsoft 账户的原生代理身份验证。此设置的值为:

  • msal - 在可用时使用 MSAL 进行代理身份验证(默认)。
  • msal-no-broker - 使用 MSAL 而不进行代理身份验证(最近引入)。
  • classic - 使用经典的 Microsoft 身份验证流程,不使用 MSAL。

我们将移除“classic”选项,因为它的使用率非常低,并且“msal”选项的大多数问题都源于代理,而这可以通过“msal-no-broker”来解决。

Microsoft 身份验证的设备代码流

Microsoft 身份验证现在支持非代理场景下的设备代码流,这对于远程开发环境尤其有用。当其他身份验证方法失败时,VS Code 会自动回退到设备代码流,该流会显示一个您可以在另一台设备上输入的代码来完成身份验证。

管理账户命令

使用“账户: 管理账户”命令直接从命令面板管理您的身份验证账户。当“账户”菜单隐藏或不易访问时,此命令提供对账户管理功能的访问。

Screenshot of the Manage Accounts menu.

运行“管理账户”命令时,您会看到一个快速选择菜单,列出您所有活动的账户。您可以选择一个账户来查看可用操作,包括:

  • 管理受信任的扩展 - 控制哪些扩展可以访问选定的账户。
  • 管理受信任的 MCP 服务器 - 管理支持此功能的账户的 MCP 服务器访问权限。
  • 退出登录 - 退出账户。

语言

Python

Python 环境扩展:支持 python.poetryPath 设置

Python 环境扩展现在遵循现有的 python.poetryPath 用户设置。这允许您指定要使用的 Poetry 可执行文件。在管理 Poetry 环境时,将搜索并选择提供的路径。

Python 环境扩展:改进的 venv 创建:dev-requirements.txt 检测

在创建新的虚拟环境时,该扩展现在会检测 requirements.txt 和 dev-requirements.txt 文件,并自动安装依赖项。

将 Copilot 悬停摘要添加为文档字符串

您现在可以使用 Copilot 悬停摘要中的新“添加为文档字符串”命令,将 AI 生成的文档直接作为文档字符串添加到您的代码中。当您为函数或类生成摘要时,导航到符号定义并将其悬停,即可访问“添加为文档字符串”命令,该命令会将摘要插入到光标下方,格式化为标准的文档字符串。

这简化了代码文档记录过程,使您无需重新输入即可快速提高代码的可读性和可维护性。

本地化的 Copilot 悬停摘要

Pylance 中的 GitHub Copilot 悬停摘要现在会尊重您在 VS Code 中的显示语言。当您调用 AI 生成的摘要时,您将获得以您为编辑器设置的语言显示的字符串,从而更容易理解生成的文档。

Screenshot of a Copilot Hover Summary generated in Portuguese.

通配符导入的代码操作转换

Python 中通常不鼓励使用通配符导入(from module import *),因为它们会弄乱您的命名空间,并使名称来源不明确,降低代码的清晰度和可维护性。Pylance 现在通过新的代码操作帮助您清理仍依赖 from module import * 的模块。它将通配符替换为显式符号,保留别名并将导入保留为单个语句。要尝试一下,您可以单击通配符导入所在的行,然后按 Ctrl+.(macOS 上为 Cmd+.)来选择“转换为显式导入”代码操作。

Screenshot of the Convert wildcard imports Code Action.

dotenv

内置了对 dotenv 文件(.env)的基本支持,这些文件通常用于为应用程序定义环境变量。

对扩展的贡献

GitHub 拉取请求

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

  • AI 生成的 PR 描述(通过 githubPullRequests.pullRequestDescription)将尊重存储库的 PR 模板(如果存在)。
  • Pull Requests 视图中的草稿现在将以斜体显示,而不是带有 [DRAFT] 前缀。
  • 可以从 URL 打开 Pull Requests,例如:vscode-insiders://github.vscode-pull-request-github/checkout-pull-request?uri=https://github.com/microsoft/vscode-css-languageservice/pull/460

请参阅扩展的 0.122.0 版本更新日志,了解该版本中的所有内容。

预览功能

语言模型编辑器

新的“语言模型”编辑器提供了一个集中位置,用于查看和管理 GitHub Copilot Chat 的所有可用语言模型。您可以从聊天模型选择器打开它,或通过命令“Chat: Manage Language Models”打开。

注意:此功能仅在 VS Code Insiders 中可用。

Screenshot showing the Language Models editor with a list of models organized by provider.

编辑器显示:

  • 按提供程序组织的、所有可用的模型。
  • 模型功能(工具、视觉、代理)。
  • 上下文大小和乘数信息。
  • 模型可见性状态。

您可以使用以下方式搜索和过滤模型:

  • 文本搜索(带高亮显示)。
  • 提供程序过滤器:@provider:"OpenAI"
  • 功能过滤器:@capability:tools@capability:vision@capability:agent
  • 可见性过滤器:@visible:true/false

将鼠标悬停在模型名称或上下文大小时,会看到详细信息,包括模型 ID、版本、状态和令牌细分。

管理模型可见性

通过切换每个模型旁边的眼睛图标的可见性,来控制哪些模型显示在聊天模型选择器中。当模型可见时,它会在您使用 GitHub Copilot Chat 时显示在模型选择器下拉列表中,使其可供选择。隐藏的模型仍保留在“语言模型”编辑器中,但不会显示在模型选择器中,这有助于您将模型选择集中在最常用的模型上。

Screenshot showing the eye icon to toggle model visibility with a tooltip displaying "Show in the chat model picker"

这在您拥有许多模型可用并希望通过在选择器中仅显示首选模型来简化工作流程时尤其有用。

添加已安装提供程序的模型

使用“添加模型...”按钮来配置和添加您已安装的语言模型提供程序的模型。当您选择此按钮时,您将看到一个已安装模型提供程序的下拉列表,例如 Copilot、Anthropic、Azure、Google、Groq、Ollama、OpenAI 等。从列表中选择一个提供程序以进行配置,并在 GitHub Copilot Chat 中开始使用其模型。

Screenshot showing the Add Models dropdown with a list of installed language model providers including Copilot, Anthropic, Azure, Google, and more

这使得无需离开“语言模型”编辑器即可轻松激活您已安装的其他模型提供程序。通过选择提供程序行上的齿轮图标来访问提供程序管理。

扩展开发

身份验证会话中的 ID 令牌

AuthenticationSession 接口现在包含一个可选的 idToken 属性。这允许身份验证提供程序返回 ID 令牌和访问令牌,这对于需要用户身份信息的场景尤其有用。Microsoft 身份验证提供程序返回此字段,而 GitHub 等其他提供程序可能不返回。

ID 令牌包含有关已认证用户声明的信息,并由身份提供程序签名,使其可用于验证用户身份。有关 ID 令牌和访问令牌之间区别的更多信息,请参阅 https://oauth.ac.cn/id-tokens-vs-access-tokens/

export interface AuthenticationSession {
  /**
   * The ID token.
   */
  readonly idToken?: string;
}

Git 扩展 getRepositoryWorkspace API

内置 Git 扩展提供了一个新的 API,用于获取已知与 git 存储库远程关联的文件夹。这通过缓存用户打开具有 git 远程的文件夹时存储库-远程到文件夹的映射来实现。

在辅助侧边栏中查看容器

扩展作者现在可以使用新的 secondarySidebar 贡献点在辅助侧边栏中注册视图容器。这允许扩展将自定义视图与辅助侧边栏中的聊天等内置视图放在一起,并提供与 VS Code 双侧边栏布局更好的集成。

{
  "contributes": {
    "viewsContainers": {
      "secondarySidebar": [
        {
          "id": "myExtensionViews",
          "title": "My Extension",
          "icon": "$(extensions)"
        }
      ]
    },
    "views": {
      "myExtensionViews": [
        {
          "id": "myCustomView",
          "name": "Custom View",
          "when": "true"
        }
      ]
    }
  }
}

提议的 API

快速选择和快速输入改进

快速选择和快速输入 API 包含多项新功能,为扩展开发人员提供了创建交互式用户界面的更多灵活性。

提议的 API:切换按钮支持

扩展可以通过 QuickInput 上的 toggles 属性向快速选择和快速输入界面添加切换按钮。这使得诸如输入框区域的密码可见性切换等场景成为可能,允许用户与控件进行交互而无需离开快速选择界面。

我们非常感谢您对此 API 提案的评论和反馈(请参考 GitHub issue)。

export enum QuickInputButtonLocation {
  ...

  /**
   * The button is rendered at the far end inside the input box.
   */
  Input = 3
}

export interface QuickInputButton {
  ...

  /**
   * When present, indicates that the button is a toggle button that can be checked or unchecked.
   *
   * **Note:** This property is currently only applicable to buttons with {@link QuickInputButtonLocation.Input} location.
   * It must be set for such buttons, and the state will be updated when the button is toggled.
   * It cannot be set for buttons with other location values.
   */
  readonly toggle?: { checked: boolean };
}

提议的 API:快速选择的提示支持

快速选择支持 prompt 属性,类似于输入框中可用的属性。提示在输入框下方显示持久文本,在用户键入时保持可见,提供有用的指导或说明,而不会在用户开始输入文本时消失。

我们非常感谢您对此 API 提案的评论和反馈(请参考 GitHub issue)。

export interface QuickPick<T extends QuickPickItem> extends QuickInput {
  /**
   * Optional text that provides instructions or context to the user.
   *
   * The prompt is displayed below the input box and above the list of items.
   */
  prompt: string | undefined;
}

export interface QuickPickOptions {
  /**
   * Optional text that provides instructions or context to the user.
   *
   * The prompt is displayed below the input box and above the list of items.
   */
  prompt?: string;
}

提议的 API:文件图标用于快速选择项

快速选择项可以通过 QuickPickItem 上的 resourceUri 属性显示文件类型特定的图标。当您提供资源 URI 时,VS Code 会根据资源类型自动派生适当的标签、描述和图标,与您当前主题的文件图标集匹配。这在构建文件或文件夹选择界面时特别有用,因为用户可以通过熟悉的图标快速识别项。

我们非常感谢您对此 API 提案的评论和反馈(请参考 GitHub issue)。

export interface QuickPickItem {
  /**
   * A {@link Uri} representing the resource associated with this item.
   *
   * When set, this property is used to automatically derive several item properties if they are not explicitly provided:
   * - **Label**: Derived from the resource's file name when {@link QuickPickItem.label label} is not provided or is empty.
   * - **Description**: Derived from the resource's path when {@link QuickPickItem.description description} is not provided or is empty.
   * - **Icon**: Derived from the current file icon theme when {@link QuickPickItem.iconPath iconPath} is set to
   *   {@link ThemeIcon.File} or {@link ThemeIcon.Folder}.
   */
  resourceUri?: Uri;
}

MarkdownString 中的 GitHub 风格警报(#209652

通过设置新的 supportAlertSyntax 属性,我们增加了对渲染 GitHub 风格警报语法的支持。

const markdown = new vscode.MarkdownString();
markdown.supportAlertSyntax = true;
markdown.value = `
> [!NOTE]
> Useful information that users should know, even when skimming content.

> [!TIP]
> Helpful advice for doing things better or more easily.

> [!IMPORTANT]
> Key information users need to know to achieve their goal.

> [!WARNING]
> Urgent info that needs immediate user attention to avoid problems.

> [!CAUTION]
> Advises about risks or negative outcomes of certain actions.
`;

这使得扩展能够在 UI 的各个位置渲染警报,例如评论。

Screenshot showing GitHub-style alerts displayed in a comment thread showing each alert type with their respective icons and styling.

TreeItem 标签中的 MarkdownString 支持(#115365

扩展作者现在可以在树视图项标签中使用 MarkdownString,支持 Markdown 语法的子集,包括 codicons 和文本格式。这允许扩展创建更具视觉吸引力的树视图。

// Codicons
const itemWithIcon = new vscode.TreeItem({
  label: new vscode.MarkdownString('$(star) Starred item', true)
});

// Text formatting (must surround the entire string)
const italicItem = new vscode.TreeItem({
  label: new vscode.MarkdownString('_Italic item_')
});

// Formatting and codicons can be combined
const combined = new vscode.TreeItem({
  label: new vscode.MarkdownString('_~~**$(check) Done $(star)**~~_', true)
});

上面的项目显示为:显示三个项目的树视图截图:一个带图标的星标项目,一个斜体项目,以及一个带复选标记和星标图标以及粗体、斜体和删除线格式的组合项目。

工程

自动化 UX PR 测试的探索

我们引入了一种新的自动化工作流程,可帮助审阅者在不手动签出和运行代码的情况下理解 pull request 中的 UI 更改。通过向包含 UI 更改的 pull request 添加 ~copilot-video-please 标签,会自动启动一个流程,该流程:

  • 从 PR 分支构建 VS Code。
  • 使用 GitHub Copilot CLI 与更改进行交互并在此过程中录制视频,利用 playwright-mcp
  • 生成 Playwright 跟踪以进行详细检查。
  • 将结果作为评论发布到 PR。

尽管尚处于早期阶段,但此工作流程可以减少代码审查所需的手动工作量,尤其对于小型 UI 更改。视频和跟踪有助于审阅者快速验证更改是否按预期工作。目前,视频仅供团队成员访问。

有关此自动化的更多详细信息,请参阅 https://github.com/microsoft/vscode/issues/272529

macOS 11.0 支持已结束

VS Code 1.106 是支持 macOS 11.0(macOS Big Sur)的最后一个版本。有关更多信息,请参阅我们的 FAQ

值得注意的修复

  • vscode#258236 - 添加用于安装扩展时使用的扩展请求超时的设置
  • vscode#272945 - 任务不触发 onDidStartTerminalShellExecution
  • vscode#273372 - /** 在 .gitignore 文件中会自动关闭为 */
  • vscode#243584 - pwsh/conpty 上忽略第一个输入
  • vscode#271952 - Copilot 'configure instructions' quickpick 不显示工作区级别的 agent 指令文件 (copilot-instructions.md, AGENTS.md)
  • vscode#274631 - Network: 在 Windows 上加载中间证书颁发机构

感谢

问题跟踪

对我们问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-copilot-chat 的贡献

vscode-html-languageservice 的贡献

vscode-json-languageservice 的贡献

vscode-languageserver-node 的贡献

vscode-pull-request-github 的贡献

vscode-test-cli 的贡献

debug-adapter-protocol 的贡献

language-server-protocol 的贡献

monaco-editor 的贡献

node-pty 的贡献

python-environment-tools 的贡献

我们非常感谢大家在新功能准备就绪后立即进行试用,请经常回来查看并了解新功能。

如果您想阅读以前 VS Code 版本的发行说明,请访问 code.visualstudio.com 上的更新页面。

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