2025 年 12 月(版本 1.108)

发布日期:2026 年 1 月 8 日

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

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

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


欢迎阅读 Visual Studio Code 2025 年 12 月版本更新。

Placeholder for release image

传统上,12 月是我们团队专注于清理 GitHub 问题和拉取请求的月份。今年,我们成功减少了近 6,000 个开放问题,并额外处理了超过一千个问题的分流工作。

除了日常的清理工作外,我们还在 VS Code 的各个领域进行了多项改进和功能更新。

编码愉快!


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

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

代理

智能代理技能(实验性功能)

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

VS Code 现已支持智能代理技能 (Agent Skills),允许您为编码代理赋予新能力并提供特定领域的知识。智能代理技能是包含指令、脚本和资源的文件夹,当 GitHub Copilot 需要执行特定任务时,可以加载这些技能。

技能存储在包含 SKILL.md 文件的目录中,该文件定义了技能的行为。VS Code 会自动从工作区中的 .github/skills 文件夹(或为了向后兼容的 .claude/skills/)中检测技能。当您的请求相关时,它们会被按需加载到聊天上下文中。

通过启用 chat.useAgentSkills 在 VS Code 中打开 在 VS Code Insiders 中打开 设置来启用智能代理技能支持。

智能代理技能文档 中了解更多关于创建和使用技能的信息。

智能代理会话视图的改进

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

  • 对归档、读取状态、打开会话等操作提供键盘访问支持。
  • 并排显示时,根据状态和时间对会话进行分组。
  • 提供会话已更改文件和关联 PR 的相关信息。
  • 支持从新的分组部分一次归档多个会话。
  • 通用的可访问性改进。

Screenshot of the Agent Sessions view showing changed files and associated pull requests for sessions.

注意 chat.viewSessions.orientation 在 VS Code 中打开 在 VS Code Insiders 中打开 不再提供 auto 选项。请使用 sideBySide 作为替代。

聊天

聊天选择器基于智能代理会话

聊天会话的快速选择器(Quick Pick)现在基于驱动智能代理会话视图的相同信息。您可以从那里访问任何之前的聊天会话,并执行归档、重命名或删除等操作。

Screenshot of the chat Quick Pick showing a list of agent sessions.

注意:还可以通过在快速打开 (Quick Open) 控件中输入 agent 来访问智能代理会话(⌘P(Windows, Linux Ctrl+P)。

聊天标题改进

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

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

Screenshot of the chat title control.

重启时打开空聊天界面

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

即日起,重启 VS Code 时不再自动恢复之前的聊天会话。取而代之的是显示一个空的聊天视图,您可以从中通过智能代理会话控件访问之前的会话。

可以通过 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 ls-files
  • git --no-pager <safe_subcommand>
  • git -C <dir> <safe_subcommand>
  • rg(排除 --pre--hostname-bin
  • sed(排除某些参数和用法模式)
  • Out-String

此外,通过 npmpnpmyarn 运行的 npm 脚本,当它们包含在 package.json 中时,现在默认也会自动批准。我们这样做是因为使用代理已经需要工作区信任 (Workspace Trust),并且我们禁止代理编辑敏感文件(如 package.json)。可以通过 chat.tools.terminal.autoApproveWorkspaceNpmScripts 在 VS Code 中打开 在 VS Code Insiders 中打开 来禁用此功能。

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

Auto approval denied by rule will show after a denial

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

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

Screenshot of the Allow dropdown in the Terminal tool showing options to allow commands for the current session or workspace.

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

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

当启用并正常使用 shell 集成时,由终端工具运行的命令不再包含在 bash、zsh、pwsh 和 fish 的 shell 历史记录中。此功能对每个 shell 使用的方法不同,例如对于 bash,设置了 HISTCONTROL=ignorespace 并在运行的命令开头添加了一个空格。

如果您希望将终端工具命令保留在 shell 历史记录中,请通过 chat.tools.terminal.preventShellHistory 在 VS Code 中打开 在 VS Code Insiders 中打开 设置进行配置。

辅助功能

辅助功能视图中的流式聊天响应

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

MCP 服务器输出从辅助功能视图中排除

为了减少干扰,MCP (Model Context Protocol) 服务器输出现在默认从辅助功能视图中排除。标准聊天输出仍然完全可访问,因为它呈现为与屏幕阅读器兼容良好的文本区域。

窗口标题中的语言 ID 变量

新的 ${activeEditorLanguageId} 变量现可用于 window.title 在 VS Code 中打开 在 VS Code Insiders 中打开 设置。此变量显示当前活动编辑器的语言标识符,这对于需要确定当前编程语言以启用适当语音命令的辅助工具(如 Talon)非常有用。

"window.title": "${activeEditorLanguageId} - ${activeEditorShort}"

编辑器体验

通过拖放导入配置文件

现在,您可以将 .code-profile 文件拖放到 VS Code 中来导入设置配置文件。这使得与团队成员共享配置文件或快速设置新环境变得更加容易。

当您拖放该文件时,配置文件编辑器会打开并允许您预览和导入配置文件。这提供了类似于拖放 .code-workspace 文件以打开工作区的体验。

复制面包屑路径

设置 breadcrumbs.symbolPathSeparator 在 VS Code 中打开 在 VS Code Insiders 中打开

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

Screenshot of the Copy Breadcrumbs Path command.

breadcrumbs.symbolPathSeparator 在 VS Code 中打开 在 VS Code Insiders 中打开 设置使您能够自定义用于连接面包屑片段的分隔符字符。

工作区符号跳转功能支持查询中的特殊字符

转到工作区符号 (Go to Symbol in Workspace)⌘T(Windows, Linux Ctrl+T)功能现在当搜索查询包含 # 字符时,不会再错误地过滤掉所有结果。

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

代码编辑

新的代码片段转换

现在有两个新的代码片段转换可用:snakecasekebabcase。使用方法如下:

对于 snake_case 转换:

${TM_FILENAME/(.*)/${1:/snakecase}/}

这会将文件名转换为 snake-case 格式。例如,将 MyFileName.txt 转换为 my_file_name.txt。kebab-case 转换则会得到 my-file-name.txt

源代码管理

Git blame 信息设置

设置 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 blame 编辑器装饰上时出现的工具提示。如果您更喜欢整洁的编辑体验,并且只想查看行内 blame 注释而不想要额外的悬停信息,这将很有用。

使用编辑器编写提交信息

前段时间,我们增加了使用完整编辑器来 编写提交信息 的功能,但提交或取消的操作在编辑器标题工具栏中很难发现。我们改进了编辑器右下角的编辑器覆盖控件,并将这些操作移至此处,使其更易于使用。

源代码控制仓库视图中的工作树 (Worktrees)(实验性功能)

设置 scm.repositories.explorer 在 VS Code 中打开 在 VS Code Insiders 中打开 , scm.repositories.selectionMode 在 VS Code 中打开 在 VS Code Insiders 中打开

在此里程碑中,我们在“源代码控制仓库”视图中添加了一个工作树 (Worktrees) 节点。在此节点下,您可以看到仓库工作树列表,并提供内联操作以在新窗口中打开工作树。上下文菜单还包含在当前窗口中打开工作树的操作,以及删除工作树的操作。

Screenshot showing the Worktrees node in the Source Control Repositories view with a list of worktrees

您可以通过设置 scm.repositories.selectionMode 在 VS Code 中打开 在 VS Code Insiders 中打开 scm.repositories.explorer 在 VS Code 中打开 在 VS Code Insiders 中打开 设置来启用实验性仓库资源管理器。试一试并告诉我们您还希望在仓库资源管理器中看到哪些其他仓库工件。

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

终端

终端 IntelliSense 默认 UX 重构

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

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

我们还改进了底部的“状态栏”。以前,它在左侧显示插入,在右侧显示“了解更多/配置”及其关联的快捷键。我们收到的反馈显示,用户不清楚这些是可以交互的,因此我们现在在右侧显示图标,不再显示快捷键。左侧的操作现在允许循环切换“选择模式”选项,这决定了在显示时 TabEnter 如何反应。右侧有一个新的眼睛图标,可以再次启用快速建议和触发字符建议。

Screenshot of the suggest status bar showing buttons to configure selection mode and whether to show suggestions on type.

最后,为了在不招人烦的情况下使这个强大的功能具有一定的可发现性,打开终端时会显示一个提示,解释如何显示建议。提示的生命周期已简化,就像编辑器中的类似功能一样,只需点击“不再显示”即可永久移除它。

Screenshot of the hint that shows when opening a terminal now explains how to trigger "show suggestions".

除了这次 UX 重构之外,终端 IntelliSense 还进行了以下改进:

  • 我们现在在 macOS/Linux 上显示带有可执行位的文件。
  • 改进了对 npmgit 的补全。
  • 改进了对文件和文件夹建议的验证。
  • 限制了建议详情的高度,以防止布局溢出。
  • 确保当终端视图被移动或重新定位时,建议仍然能正常工作。

性能和稳定性改进

终端在本版本中进行了几项重要的性能和稳定性改进:

  • node-pty#831:在 macOS 和 Linux 上,一次粘贴超过 50 个字符或让 Copilot 运行一个大命令不再受到限制,应该几乎瞬间应用,缩放比例类似于其他终端的 KB/MB 数据。这也修复了在 macOS 上进行同样操作时可能发生的崩溃。
  • vscode#285031, vscode#285032, xterm.js#5548:修复了几个可能导致编辑器变卡顿的布局抖动问题。
  • vscode#239541:修复了当终端中配置了诸如 CommitMono 之类的字体时可能发生的崩溃。

更全面的自定义字形

终端的 GPU 加速渲染器(默认启用)很长一段时间以来一直支持用于框绘图、块元素和部分 Powerline 符号的自定义字形。这意味着您可以无需配置字体即可查看这些字符,并且它们还会随行高、字间距缩放,并且应该能够完美对齐。

在本版本中,我们将支持的字符数量扩展到了近 800 个,包括了任何其他终端支持的大多数自定义字形。这包括在终端中通常有用的范围,特别是以下范围:

  • 框绘图 (U+2500-U+257F)
  • 块元素 (U+2580-U+259F)
  • 盲文图案 (U+2800-U+28FF)
  • Powerline 符号 (U+E0A0-U+E0D4,私用区)
  • 进度指示器 (U+EE00-U+EE0B,私用区)
  • Git 分支符号 (U+F5D0-U+F60D,私用区)
  • 传统计算符号 (U+1FB00-U+1FBFF)

这是完整字形集的视觉效果。

Screenshot of the complete set of about 800 custom glyphs now rendered without needing a font.

改进了波浪下划线的渲染

VS Code 早就能够解析和显示 彩色和样式的下划线,但波浪下划线的渲染总是不尽如人意。现在,波浪下划线的渲染应该看起来非常接近编辑器中的样子。

Screenshot of the terminal curly underline which is a lot more vivid now and has a zigzag look like in the editor.

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

调整大小时的尺寸视觉覆盖

ghostty 功能的启发,我们添加了一个短暂的覆盖层,当您调整终端大小时显示当前终端尺寸(列 x 行)。如果您想将终端调整为特定尺寸以进行测试或其他目的,这非常有用。

Screenshot of the overlay that appears in the middle of the terminal with the current columns and rows when a terminal resize happens.

新的 VT 功能

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

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

    • DECRQM (CSI ? 2026 $ p)
    • BSU (CSI ? 2026 h)
    • ESU (CSI ? 2026 l)
  • XTVERSION (CSI > 0 q):允许应用程序查询有关终端的详细信息,VS Code 目前给出的响应是 "xterm.js" 及其版本。

调试

按文件组织断点

设置 debug.breakpointsView.presentation 在 VS Code 中打开 在 VS Code Insiders 中打开

断点现在可以以树状结构显示,按文件分组。通过将 debug.breakpointsView.presentation 在 VS Code 中打开 在 VS Code Insiders 中打开 设置为 tree 来启用此功能。

Screenshot showing the Debug view with breakpoints organized in a tree by file.

测试

导航到未覆盖区域

我们在测试覆盖率工具栏中添加了导航按钮,允许您轻松跳转到未覆盖代码的区域。您可以使用命令面板中的 测试:显示覆盖率工具栏 (Test: Show Coverage Toolbar) 命令来切换测试覆盖率工具栏。

Screenshot showing the test coverage toolbar with navigation buttons to jump between uncovered regions.

对扩展的贡献

GitHub 拉取请求

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

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

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

扩展开发

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

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

QuickPick 上使用 prompt 属性可在输入框下方显示持久性说明文本。文本在用户输入时保持可见,这有助于提供指导或上下文。

const quickPick = vscode.window.createQuickPick();
quickPick.prompt = 'Select a file to open';
quickPick.items = items;
quickPick.show();

QuickPickItem 上使用 resourceUri 属性可从资源 URI 自动派生项目属性。提供时,VS Code 会派生:

  • label 来自文件名(当设置为空字符串时)
  • description 来自文件路径(当设置为 undefined 或空字符串时)
  • icon 来自当前文件图标主题(当 iconPath 设置为 ThemeIcon.FileThemeIcon.Folder 时)

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

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 个问题的分流工作

Graph showing the overall issues for all VS Code managed repositories.

Graph showing the total amount of open issues closed during housekeeping.

Graph showing the total amount of unknown issues triaged during housekeeping (excluding closed issues).

通过使用改进的分流工具和去重流程,我们成功关闭了大量陈旧和已解决的问题。这使我们面对的项目更易于管理,使我们能够向前推进并开发对用户影响最大的功能。仅在我们的核心 VS Code 仓库中,我们就关闭了 2,872 个问题,并额外分流了 1,697 个问题!

Issue graph for microsoft/vscode.

在 2025 年 6 月,我们还宣布 Copilot 开源了!这意味着所有相关问题也将归档到 microsoft/vscode 仓库中,并且我们在 microsoft/vscode-copilot-release 中还有积压的问题需要处理。本月,我们处理了仓库中的每个问题并关闭了 1,659 个问题,仅剩下 175 个待迁移。

Issue graph for microsoft/vscode-copilot-release.

下图显示了我们的核心 vscode 仓库多年来的增长情况,以及我们出色的社区随着时间的推移贡献了多少问题。我们感谢多年来为我们的仓库贡献问题并继续与我们互动的所有人。您的反馈使 VS Code 成为了今天的产品!🚀

Graph showing historical issue data for microsoft/vscode from 2018 to present.

使用 TypeScript 编写扩展(实验性功能)

现在可以直接使用 TypeScript 编写 VS Code 扩展,而无需构建步骤。这可行……但仍然需要一点冒险精神!许多方面仍未经过测试,例如如何编写和运行测试、如何发布扩展以及其他工作流考虑因素。

这条 GitHub 评论 中了解更多关于这种实验性方法的信息。

值得注意的修复

  • vscode#283356 - 修复了滚动经过某些聊天输出时导致跳动的问题。

感谢

vscode 的贡献

vscode-copilot-chat 的贡献

vscode-js-profile-visualizer 的贡献

问题跟踪

对我们问题跟踪的贡献


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

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

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