本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

2025年12月(版本1.108)

发布日期:2026年1月8日

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

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

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


欢迎来到2025年12月发布的Visual Studio Code。

发布图像的占位符

传统上,十二月是我们团队专注于清理GitHub问题和拉取请求的时间。今年,我们成功减少了近6000个未解决问题,并处理了超过1000个。

除了我们的日常维护工作,我们还在VS Code的多个领域进行了几次改进和功能更新。

祝你编码愉快!


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

内部人士:想尽快尝试新功能吗?
您可以下载夜间内部人士版本,尽快体验最新更新。
下载内部人士版本

Agent

特工技能(实验性)

设置

chat.useAgentSkills
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

VS Code 现在支持代理技能,允许您向编码代理传授新能力并提供特定领域的知识。代理技能是一些包含指令、脚本和资源的文件夹,当 GitHub Copilot 相关时,可以加载以执行特殊任务。

技能存储在目录中,使用SKILL.md定义技能行为的文件。VS Code 会自动检测技能从.github/技能在你的工作区中创建一个文件夹(或.claude/技能/为了兼容性)。当与您的请求相关时,它们会按需加载到聊天上下文中。

启用支持代理技能,通过启用

chat.useAgentSkills
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。

了解更多关于创建和使用技能的信息,请参阅代理技能文档

改进了代理会话视图

在这一迭代中,我们通过一些增强功能进一步改进了代理会话视图:

  • 键盘访问支持用于存档、读取状态、打开会话等操作
  • 根据状态和年龄对会话进行分组以并排显示
  • 提供有关更改文件和相关 PR 的会话信息
  • 支持从新的群组部分同时存档多个会话
  • 一般无障碍改进

显示更改文件和与会话相关的拉取请求的代理会话视图的屏幕截图。

注意

chat.查看会话.方向
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
不再提供自动选项。使用并排作为替代。

聊天

聊天选择器基于代理会话

聊天会话的快速选择现在基于与代理会话视图相同的相同信息。您可以通过那里访问任何以前的聊天会话,并执行诸如归档、重命名或删除等操作。

聊天快速选择的截图,显示代理会话列表。

注意:代理会话也可以通过输入 Agent在快速打开控制中 (⌘P (Windows, Linux Ctrl+P)).

聊天标题改进

聊天视图标题控制现在无论如何配置活动栏都会显示。以前,它仅在默认活动栏配置中显示。

要快速跳转到其他会话,请选择聊天标题以打开会话快速选择,并选择另一个会话。

聊天标题控制的截图。

重启时打开空聊天

设置

chat.restoreLastPanelSession
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

从现在起,重启 VS Code 时不会自动恢复以前的聊天会话。相反,将显示一个空的聊天视图,您可以在其中从 Agent Sessions 控制中访问以前的会话。

修改此行为

chat.restoreLastPanelSession
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。

终端工具自动批准默认规则

设置

chat.tools.terminal.enableAutoApprove
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
组织,
chat.tools.terminal.autoApproveWorkspaceNpmScripts
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

以下命令在终端自动批准启用时默认自动批准(

chat.tools.terminal.enableAutoApprove
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
组织

  • git 列出文件
  • git --no-pager <安全子命令>
  • git -C
  • 输入:rg(不包括--预--主机名-二进制)
  • sed(排除了一些参数和使用模式)
  • 输出字符串

此外,npm脚本通过npmpnpm纱线现在默认自动批准当它们被包含在内package.json我们这样做是因为使用代理已经需要工作区信任,并且我们保护代理不编辑敏感文件,例如package.json. 这可以通过 被禁用

chat.tools.terminal.autoApproveWorkspaceNpmScripts
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
输入:.

为了提高自动批准的透明度,当规则被默认或自定义规则明确拒绝时,现在会显示一条信息:

自动批准被规则拒绝后将显示拒绝信息

为未来的终端工具命令添加会话和工作区规则

允许的命令或命令行条目现在在允许下拉菜单中具有选项,以允许它们在当前会话或工作区中执行相应的操作。

终端工具中允许下拉菜单的截图,显示了允许命令用于当前会话或工作区的选项。

终端工具防止添加到 shell 历史记录

设置

chat.tools.terminal.preventShellHistory
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

启用 shell 集成并正常工作时,通过 terminal 工具运行的命令将不再记录在 bash、zsh、pwsh 和 fish 的 shell 历史记录中。这种方法因 shell 而异,例如对于 bash。HISTCONTROL=ignorespace设置并为正在运行的命令添加了一个前导空格。

如果你希望将终端工具命令保留在 shell 历史记录中,请使用以下配置:

chat.tools.terminal.preventShellHistory
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。

无障碍

在无障碍视图中流式传输聊天响应

无障碍视图现在会动态流式传输生成的聊天响应。以前,你需要关闭并重新打开无障碍视图才能看到更新的内容。现在,你可以在无障碍视图中停留,并实时监控输出,这使得实时跟踪 AI 响应变得更加容易。

MCP服务器输出从可访问视图中排除

为了减少噪音,MCP(模型上下文协议)服务器输出现在默认情况下已从可访问视图中排除。标准聊天输出仍然完全可访问,因为它以文本区域呈现,这与屏幕阅读器配合得很好。

Windows标题中的语言ID变量

一个新的${当前编辑器语言ID}变量现在可用于

Windows标题
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。此变量显示当前活动编辑器的语言标识符,这对于像Talon这样的辅助工具很有用,这些工具需要确定当前的编程语言以启用适当的语音命令。

"Windows标题": "${活动编辑器语言ID} - ${活动编辑器简称}"

编辑体验

通过拖放导入配置文件

您现在可以通过拖放导入设置配置文件.代码-个人资料将文件导入 VS Code。这使得与队友分享配置文件或快速设置新环境更加容易。

当你拖放文件时,配置编辑器会打开并允许你预览和导入配置。这提供了类似于拖放文件的体验。代码工作区打开工作区的文件。

复制面包屑路径

设置

面包屑.符号路径分隔符
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

现在,您可以使用 复制面包屑路径 命令将面包屑路径复制到剪贴板。这在您需要与团队分享符号的确切位置或用于文档记录时非常有用。

复制面包屑路径命令的截图。

面包屑.符号路径分隔符
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置允许您自定义用于连接面包屑片段的分隔符字符。

转到工作区中的符号支持查询中的特殊字符

在工作区中转到符号 (⌘T (Windows, Linux Ctrl+T)) 功能不再在搜索查询包含#角色。

此修复使语言扩展(如 rust-analyzer)能够使用#作为符号搜索中的修饰符。例如,在 rust-analyzer 中,附加#到查询如主要#仅在当前工作区中搜索函数。

代码编辑

新的片段转换

有两种新的片段转换可用:蛇形表示法烤肉串. 这是您可以如何使用它们:

用于 snake_case 转换:

${TM_FILENAME/(.*)/${1:/蛇形命名法}/}

这将文件名转换为蛇形格式。例如,从我的文件名.txt它使my_file_name.txt. kebab-case 转换将是我的文件名.txt输入:.

源代码管理

Git 责任信息设置

设置

git.blame.ignoreWhitespace
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
git.blame.editorDecoration.disableHover
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

新的

git.blame.ignoreWhitespace
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置允许您在确定哪次提交最后修改了一行时,配置 Git blame 以忽略空格更改。这在处理重新格式化过的代码时特别有用,因为它帮助您识别出实际进行功能更改的提交,而不是仅仅进行空格调整的提交。

此外,

git.blame.editorDecoration.disableHover
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置允许你禁用在你悬停在Git责备编辑器装饰上时出现的悬停工具提示。如果你更喜欢一个更干净的编辑体验,并且只想查看内联责备注释而不需要额外的悬停信息,这将非常有用。

使用编辑器编写提交信息

不久前我们增加了使用完整编辑器的能力来撰写提交信息,但在编辑器标题工具栏中,发现提交或取消的操作比较困难。我们改进了编辑器右下角的编辑器覆盖控制,并将这些操作移至那里,以便更方便地使用。

源代码管理仓库视图中的工作树(实验性)

设置

scm.repositories.explorer
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
scm.repositories.selectionMode
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

在这个里程碑中,我们已经在源代码控制仓库视图中添加了一个工作树节点。在这个节点下,您可以看到仓库工作树的列表,并且有一个内联操作可以打开一个新的Windows以查看工作树。上下文菜单中也包含一个在当前Windows中打开工作树的操作,以及一个删除工作树的操作。

截图显示源代码控制仓库视图中的Worktrees节点,列出了一系列工作树

您可以通过设置启用实验性仓库浏览器

scm.repositories.selectionMode
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
scm.repositories.explorer
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。试一试,并告诉我们您希望在仓库浏览器中看到的其他仓库工件。

了解更多关于在VS Code中使用源代码控制的信息。

终端

终端IntelliSense默认用户体验重做

在过去的两次发布中,我们向所有 VS Code 稳定版用户推出了终端 IntelliSense。虽然大部分反馈是积极的,但也有一部分用户(主要是终端高级用户)不喜欢这个功能破坏了他们的肌肉记忆。经过大量讨论,我们决定切换一些默认设置,改进可发现性,并允许更轻松地在代码中配置该功能。

该功能本身仍然默认启用,但不再在输入时自动显示(快速建议和触发字符的建议),现在需要通过Ctrl+Space明确触发。

我们还改进了底部的“状态栏”。以前,它在左侧显示插入,右侧显示“了解更多/配置”,并附有相应的快捷键。我们收到反馈,不清楚这些可以进行交互,所以我们现在在右侧显示图标,不再显示快捷键。左侧的动作现在允许旋转“选择模式”的选项,这决定了TabEnter在弹出时的反应方式。右侧有一个新的眼睛图标,可以启用快速建议,并再次在触发字符时建议。

截图显示建议状态栏,其中包含配置选择模式和是否在输入时显示建议的按钮。

最后,为了使这一强大功能在不显得过于突兀的情况下仍然相对容易发现,当打开终端时,会显示一个提示,解释如何显示建议。提示的生命周期被简化了,只需点击“不再显示”即可永久消除,就像编辑器中的类似功能一样。

截图显示了现在打开终端时出现的帮助提示,解释了如何触发“显示建议”。

除了这次用户体验重做,这些改进还应用于终端IntelliSense:

  • 我们现在在macOS/Linux上显示具有可执行位的文件
  • 改进的完成npm吉特
  • 改进了文件和文件夹建议的验证
  • 限制建议详情的高度以防止布局溢出
  • 确保建议在终端视图移动或重新定位时继续正常工作

性能和稳定性改进

终端在此次发布中看到了几个重要的性能和稳定性改进:

  • node-pty#831:在 macOS 和 Linux 上,一次粘贴超过 50 个字符或让 Copilot 运行一个大型命令不再会被限制,并且应该几乎即时应用,类似于其他终端处理 KBs/MBs 的数据。这还修复了在 macOS 上执行相同操作时可能会发生的崩溃。
  • vscode#285031vscode#285032xterm.js#5548:修复了几个可能导致编辑器卡顿的布局问题。
  • vscode#239541:修复了在终端中配置字体(如 CommitMono)时可能会发生的崩溃。

更全面的自定义字形

终端的 GPU 加速渲染器(默认开启)已经支持一段时间的盒绘、块元素和一些 powerline 符号的自定义字形。这意味着你无需配置字体就可以看到这些字符,并且它们也会随着行高、字母间距一起缩放,并且应该完美对齐。

在此次发布中,我们通过包含其他终端支持的大部分自定义字形,将支持的字符数量扩展到近 800 个。这包括在终端中通常有用的范围,特别是这些范围:

  • 框图 (输入:U+2500输入:-输入:U+257F)
  • 块级元素 (输入:U+2580输入:-输入:U+259F)
  • 盲文图案输入:U+2800输入:-输入:U+28FF)
  • 电力线符号 (输入:U+E0A0输入:-输入:U+E0D4, 私人使用区)
  • 进度指示器 (输入:U+EE00输入:-输入:U+EE0B, 私人使用区)
  • Git 分支符号 (U+F5D0输入:-输入:U+F60D, 私人使用区)
  • 遗留计算的符号 (输入:U+1FB00输入:-输入:U+1FBFF)

以下是所有字形的视觉展示:

完整集的约800个自定义字形的截图,现在无需字体即可渲染。

改进了波浪下划线的渲染效果

VS Code 一直以来都能解析并显示带颜色和样式的下划线,但波浪线的渲染总是有些不尽人意。现在波浪线的显示应该非常接近编辑器中的样子。

终端下划线的截图,现在更加生动,像编辑器中那样有锯齿状的外观。

您可以通过在bash中运行以下命令来亲自尝试一下: echo -e '\x1b[4:3m卷发\x1b[0m \x1b[4:3m\x1b[58;5;1m红色\x1b[0m'

尺寸调整时的视觉叠加

受到 ghostty中一个功能的启发,我们在终端调整大小时增加了一个简短的覆盖层,显示当前终端的尺寸(列 x 行)。这在您希望将终端调整到特定大小进行测试或其他目的时非常有用。

终端在调整大小时出现在中间的覆盖层截图,显示当前的列和行。

新的VT功能

终端现在支持以下 VT 功能/序列:

  • 同步输出:应用程序可以使用它来在终端中暂停渲染和批处理更新,这在重写缓冲区时特别有用,可以防止撕裂。

    • DECRQM (CSI? 2026 $ p)
    • BSU (CSI ? 2026 小时)
    • ESU (CSI? 2026年)
  • XT版本 (CSI > 0 q): 允许应用程序查询终端的详细信息,目前 VS Code 返回的响应是 "xterm.js" 及其版本

调试

按文件组织断点

设置

调试断点视图呈现
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

现在可以将断点显示为树形结构,并按文件分组。通过设置启用此功能

调试断点视图呈现
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
输入:.

截图显示了按文件组织的断点的调试视图。

测试

导航到未覆盖的区域

我们已经在测试覆盖工具栏中添加了导航按钮,使您可以轻松跳转到未覆盖代码的区域。您可以通过命令面板中的测试:显示覆盖工具栏命令切换测试覆盖工具栏。

截图显示了测试覆盖工具栏,带有导航按钮以跳转到未覆盖的区域。

对扩展的贡献

GitHub 拉取请求

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

  • 在拉取请求描述的网页视图中更改拉取请求的基分支。
  • 将打开的拉取请求从拉取请求描述网页视图中转换为草稿。
  • 为现有的PR生成拉取请求描述,而不仅仅是新的PR。

查看0.126.0版本更新日志,了解此次发布中的所有内容。

扩展编写

新的快速选择属性用于提示和资源URI

The Quick Pick API 包含两个用于创建交互式选择界面的新属性。

使用提示物业在快速选择在输入框下方显示持久性的指导文本。用户输入时,文本保持可见,这有助于提供指导或上下文信息。

常量 快速选择 = vscode.Windows.创建快速选择();
快速选择.提示 = '选择一个文件打开';
快速选择.项目 = 项目;
快速选择.显示();

使用资源uri物业在快速选择项目从资源URI自动推导项目属性。当提供时,VS Code 推导:

  • Tab从文件名(设置为空字符串时)
  • 描述从文件路径(当设置为未定义或空字符串)
  • 图标从当前文件图标主题中(当图标路径设置为主题图标.文件主题图标.文件夹)

这在构建文件或文件夹选择界面时很有用。

const items: vscode.QuickPickItem[] = [
  {
    label: '',
    resourceUri: vscode.Uri.file('/path/to/app.ts'),
    iconPath: vscode.ThemeIcon.File
  },
  {
    label: '',
    resourceUri: vscode.Uri.file('/path/to/src'),
    iconPath: vscode.ThemeIcon.Folder
  }
];

工程

清洁工作

作为我们每年12月的日常维护的一部分,我们大部分时间都在清理我们所有维护的仓库中的GitHub问题和拉取请求。今年,我们成功地减少了5,951个未解决问题,并处理了另外1,203个问题

图表显示所有 VS Code 管理的仓库的总体问题。

图表显示在维护期间关闭的未解决问题的总数。

图表显示在整理期间处理的未知问题总数(不包括已关闭的问题)。

通过使用改进的 triage 工具和去重流程,我们能够关闭大量过时和已解决的问题。这使我们的项目更加可管理,使我们能够向前推进并开发对用户最有影响的功能。仅在我们的核心 VS Code 代码库中,我们就关闭了 2,872 个问题,并对另外 1,697 个问题进行了 triage!

微软/vscode的 Issues 图表。

在2025年6月,我们还宣布Copilot已经开源!这意味着所有相关问题也将提交到microsoft/vscode仓库,并且我们还有microsoft/vscode-copilot-release中的积压问题需要处理。这个月,我们对仓库中的每个问题进行了 triage,并关闭了1,659个问题,只剩下175个未处理的问题需要迁移。

微软/vscode-copilot-release的 issue 图表。

以下是显示我们核心 vscode 仓库多年来如何增长的图表,以及我们神奇的社区随着时间的推移贡献了多少个问题。我们感谢多年来向我们的仓库贡献问题并继续与我们互动的每个人。您的反馈使 VS Code 成为了今天的产品!🚀

图表显示了从2018年到现在的microsoft/vscode的历史问题数据。

在 TypeScript 中编写扩展(实验性)

现在可以使用 TypeScript 直接编写 VS Code 扩展,而不需要经过构建步骤。这可以... 但仍然有些冒险!许多方面仍未经测试,例如如何编写和运行测试、如何发布扩展以及其他工作流程考虑事项。

了解更多关于这种实验方法的信息,请参阅 这个 GitHub 评论

重要修复

  • vscode#283356 - 修复了在滚动跳过一些聊天输出时导致跳转的回归问题

谢谢

贡献于Visual Studio Code输入:

贡献于vscode- copilot-聊天输入:

贡献于vscode-js-性能分析器可视化工具输入:

问题跟踪

对我们的问题跟踪的贡献:


我们非常感谢人们在新功能准备好后尽快尝试,所以经常查看这里并了解最新动态。

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