现已发布!阅读关于 12 月份的新功能和修复。

2025 年 12 月 (版本 1.108)

发布日期:2026 年 1 月 8 日

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


欢迎来到 Visual Studio Code 2025 年 12 月版本。

Placeholder for release image

传统上,12 月是我们团队专注于清理我们存储库中 GitHub issue 和 pull request 的时间。今年,我们成功地将未解决的 issue 减少了近 6,000 个,并对一千多个 issue 进行了分类。

除了我们的整理工作之外,我们还在 VS Code 的各个领域进行了一些改进和功能更新。

编码愉快!


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

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

代理

Agent Skills (实验性)

设置chat.useAgentSkills

VS Code 现在支持 Agent Skills,让您可以教授编码代理新的功能并提供特定领域的知识。Agent Skills 是指令、脚本和资源的文件夹,GitHub Copilot 可以在相关时加载它们来执行专门的任务。

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

通过启用 chat.useAgentSkills 设置来启用对 Agent Skills 的支持。

Agent Skills 文档中了解有关创建和使用 skills 的更多信息。

Agent Sessions 视图的改进

在本迭代中,我们通过多项增强功能进一步改进了 Agent Sessions 视图

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

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

注意chat.viewSessions.orientation 不再提供 auto 选项。请改用 sideBySide

聊天

聊天选择器基于 Agent Sessions

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

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

注意:也可以通过在快速打开控件中输入 agent 来访问 Agent sessions(⌘P (Windows, Linux Ctrl+P))。

聊天标题改进

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

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

Screenshot of the chat title control.

重启时打开空聊天

设置chat.viewRestorePreviousSession

从现在开始,当 VS Code 重启时,将不再自动恢复先前的聊天会话。取而代之的是,将显示一个空的聊天视图,您可以在其中从 Agent Sessions 控件访问先前的会话。

使用 chat.viewRestorePreviousSession 设置修改此行为。

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

设置chat.tools.terminal.enableAutoApprove, chat.tools.terminal.autoApproveWorkspaceNpmScripts

当启用了终端自动批准(chat.tools.terminal.enableAutoApprove)时,以下命令现在默认自动批准:

  • git ls-files
  • git --no-pager <safe_subcommand>
  • git -C <dir> <safe_subcommand>
  • rg(排除 --pre--hostname-bin
  • sed(排除某些参数和用法模式)
  • Out-String

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

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

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

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

如果您希望将终端工具命令保留在 shell 历史记录中,请使用 chat.tools.terminal.preventShellHistory 设置进行配置。

辅助功能

在可访问视图中流式传输聊天响应

可访问视图现在会动态流式传输生成的聊天响应。以前,您需要关闭并重新打开可访问视图才能看到更新的内容。现在,您可以停留在可访问视图中并监视传入的输出,从而更容易实时跟踪 AI 响应。

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

为减少噪音,MCP (Model Context Protocol) 服务器输出默认已从可访问视图中排除。标准的聊天输出仍然完全可访问,因为它显示在文本区域中,该区域可以很好地与屏幕阅读器配合使用。

窗口标题中的语言 ID 变量

现在,window.title 设置可用一个名为 ${activeEditorLanguageId} 的新变量。此变量显示当前活动编辑器的语言标识符,这对于需要确定当前编程语言以启用适当语音命令的可访问性工具(如 Talon)非常有用。

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

编辑器体验

通过拖放导入配置文件

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

当您拖放文件时,将打开“配置文件”编辑器,让您可以预览和导入配置文件。这提供了与拖放 .code-workspace 文件以打开工作区相似的体验。

复制面包屑路径

设置breadcrumbs.symbolPathSeparator

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

Screenshot of the Copy Breadcrumbs Path command.

breadcrumbs.symbolPathSeparator 设置使您可以自定义用于连接面包屑片段的分隔符字符。

工作区符号导航支持查询中的特殊字符

现在,当搜索查询包含 # 字符时,“工作区符号导航”(⌘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, git.blame.editorDecoration.disableHover

新的 git.blame.ignoreWhitespace 设置使您可以配置 Git Blame 来忽略空格更改,从而确定哪个提交最后修改了某一行。这在处理经过重新格式化的代码时特别有用,因为它有助于您识别进行实际功能更改的提交,而不仅仅是空格调整。

此外,git.blame.editorDecoration.disableHover 设置允许您禁用在鼠标悬停在 Git Blame 编辑器装饰上时出现的悬停工具提示。如果您喜欢更干净的编辑体验,只想查看行内 Blame 注释而不附加的悬停信息,这可能很有用。

使用编辑器编写提交消息

很久以前,我们添加了使用完整编辑器编写提交消息的功能,但提交或取消的操作在编辑器标题工具栏中难以发现。我们改进了编辑器右下角的编辑器叠加控件,并将这些操作移至那里,以使其更易于使用。

Source Control Repositories 视图中的 Worktrees(实验性)

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

在这个里程碑中,我们在 Source Control Repositories 视图中添加了一个 Worktrees 节点。在该节点下,您可以看到仓库 worktrees 的列表,并有一个内联操作可以在新窗口中打开 worktree。上下文菜单还包含一个在当前窗口中打开 worktree 的操作,以及一个删除 worktree 的操作。

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

您可以通过设置 scm.repositories.selectionModescm.repositories.explorer 设置来启用实验性仓库浏览器。尝试一下,让我们知道您还希望在 Repositories 浏览器中看到哪些其他仓库工件。

了解有关在 VS Code 中使用源代码管理的更多信息。

终端

终端 IntelliSense 默认用户体验重构

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

该功能本身仍默认启用,但与自动在键入时显示控件(快速建议和触发字符建议)不同,现在需要通过 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".

除了这次用户体验重构之外,终端 IntelliSense 还进行了以下改进:

  • 现在 macOS/Linux 上显示具有可执行位的文件
  • 改进了 npmgit 的完成项
  • 对该功能进行了多项修复

性能和稳定性改进

此版本中,终端在性能和稳定性方面得到了一些重要的改进。

  • node-pty#831:在 macOS 和 Linux 上,一次粘贴超过 50 个字符或让 Copilot 运行大型命令不再受到限制,并且应该几乎瞬间应用,其扩展性与 KB/MB 数据量的其他终端类似。这也修复了在 macOS 上执行相同操作时可能发生的崩溃。
  • vscode#285031vscode#285032xterm.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
  • XTVERSIONCSI > 0 q):允许应用程序查询终端的详细信息,VS Code 的响应目前是“xterm.js”及其版本。

调试

按文件组织断点

设置debug.breakpointsView.presentation

断点现在可以显示为树状结构,按文件分组。通过将 debug.breakpointsView.presentation 设置为 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 扩展取得了更多进展,该扩展使您能够处理、创建和管理拉取请求和问题。新功能包括:

  • 从 pull request 描述 webview 更改 pull request 的基础分支。
  • 从 pull request 描述 webview 将打开的 pull request 转换为草稿。
  • 为现有的 PR(而不仅仅是新的 PR)生成 pull request 描述。

查看扩展 0.126.0 的更改日志,了解此版本中的所有内容。

扩展开发

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

快速选择器 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 issue 和 pull request。今年,我们成功地**将未解决的 issue 减少了 5,951 个,并对另外 1,203 个 issue 进行了分类**。

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).

通过使用改进的分类工具和重复数据删除流程,我们能够关闭大量过时和已解决的 issue。这使我们的项目更易于管理,使我们能够继续开发对用户影响最大的功能。仅在我们核心 VS Code 存储库中,我们就关闭了 2,872 个 issue,并对另外 1,697 个 issue 进行了分类!

Issue graph for microsoft/vscode.

在 2025 年 6 月,我们也宣布 Copilot 已开源!这意味着所有相关的 issue 也将提交到 microsoft/vscode 存储库,并且我们还有一些遗留 issue 需要在 microsoft/vscode-copilot-release 中处理。本月,我们对该存储库中的所有 issue 进行了分类,并关闭了 1,659 个 issue,只剩下 175 个待迁移。

Issue graph for microsoft/vscode-copilot-release.

下面是一张图表,展示了我们核心 vscode 存储库的多年增长情况,以及我们出色的社区多年来做出了多少 issue 贡献。我们感谢所有多年来为我们的存储库贡献 issue 并与我们保持互动的人。您的反馈正是造就了今天的 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.