2025 年 9 月 (版本 1.105)
发布日期:2025 年 10 月 9 日
安全更新:以下扩展程序有安全更新:GitHub.copilot-chat。
下载:Windows:x64 Arm64 | Mac:通用 Intel Apple 芯片 | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2025 年 9 月发布版。此版本中有许多我们希望您会喜欢的更新,其中一些主要亮点包括
-
操作系统集成
-
开发者生产力
-
代理工具
如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新页面。
Insiders:想尽快尝试新功能?
您可以下载每晚的 Insiders 构建版本,并尽快尝试最新更新。
下载 Insiders
聊天
完全限定的工具名称
提示文件和自定义聊天模式使您能够指定可以使用哪些工具。为了避免内置工具与 MCP 服务器或扩展提供的工具之间的命名冲突,我们现在支持提示文件和聊天模式的完全限定工具名称。这也有助于发现缺失的扩展或 MCP 服务器。
工具名称现在由它们所属的 MCP 服务器、扩展或工具集限定。例如,您将使用 search/codebase
而不是 codebase
,或者 list_issues
将是 github/github-mcp-server/list_issues
。
您仍然可以使用以前的表示法,但代码操作可帮助您迁移到新名称。
自定义模型改进的编辑工具
设置:github.copilot.chat.customOAIModels
我们改进了自带密钥 (BYOK) 自定义模型的编辑工具集,以更好地与 VS Code 内置工具集成。此外,我们还增强了默认工具,并添加了“学习”机制,以为自定义模型选择最佳工具集。
如果您正在使用与 OpenAI 兼容的模型,您还可以使用github.copilot.chat.customOAIModels 设置显式配置编辑工具列表。
支持嵌套的 AGENTS.md 文件(实验性)
设置:chat.useNestedAgentsMdFiles
上一个里程碑,我们引入了对工作区根目录中的 AGENTS.md
文件的支持。此功能现在普遍可用并默认启用。
我们现在还添加了对工作区子文件夹中嵌套的 AGENTS.md
文件的支持。这使您能够为代码库的不同部分提供更具体的上下文和说明。例如,您可能对前端和后端代码有不同的说明。此功能目前处于实验阶段,可以通过chat.useNestedAgentsMdFiles 设置启用。
了解有关根据您的实践和团队工作流自定义 VS Code 中的聊天的更多信息。
聊天用户体验改进
聊天回复的操作系统通知
设置:chat.notifyWindowOnResponseReceived
在 VS Code 1.103 中,我们引入了针对需要用户确认的聊天会话的操作系统通知,前提是 VS Code 窗口未聚焦。在此版本中,我们扩展了此功能,以在收到聊天回复时显示操作系统徽章和通知提示。通知包括回复预览,选择它会将焦点带到聊天输入。
您可以通过chat.notifyWindowOnResponseReceived 设置控制通知行为。
思维链(实验性)
思维链显示模型在回复时的推理过程,这对于调试或理解模型提供的建议非常有用。随着 GPT-5-Codex 的引入,思维令牌现在在聊天中显示为回复中的可展开部分。
您可以使用chat.agent.thinkingStyle 设置配置如何显示或隐藏思维链。思维令牌也很快将在更多模型中可用!
显示最近的聊天会话(实验性)
设置:chat.emptyState.history.enabled
上一个里程碑,我们引入了提示文件建议,以帮助您在创建新聊天会话时入门(⌘N (Windows, Linux Ctrl+N))。在此版本中,我们在此基础上显示您最近的本地聊天对话。这有助于您快速从中断处继续或重访过去的对话。
默认情况下,此功能是关闭的,但您可以通过chat.emptyState.history.enabled 设置启用它。
在代理循环期间保留或撤销更改
以前,当代理仍在处理您的聊天请求时,您无法保留或撤销文件编辑,直到代理完成。现在,您可以在编辑循环进行时保留或撤销对文件的更改。这使您能够拥有更多的控制权,尤其对于长时间运行的任务。
导航用户聊天消息的键盘快捷键
为了在聊天会话中快速导航您之前的聊天提示,我们添加了用于在聊天消息中向上和向下导航的键盘快捷键
- 导航上一条:⌥⌘↑ (Windows, Linux Ctrl+Alt+Up)
- 导航下一条:⌥⌘↓ (Windows, Linux Ctrl+Alt+Down)
代理会话
此里程碑,我们对“聊天会话”视图和将任务委派给远程编码代理的体验进行了多项改进。
聊天会话视图增强功能
设置:chat.agentSessionsViewLocation
聊天会话视图提供了一个集中位置,用于管理本地聊天对话和远程编码代理会话。此视图使您能够同时处理多个 AI 会话、跟踪其进度并高效管理长时间运行的任务。
在此版本中,我们对 UI 进行了多项改进并提高了性能,以增强聊天会话体验。
-
聊天会话视图继续支持诸如用于监视多个编码代理的状态栏跟踪、用于会话管理的上下文菜单以及提供每个会话详细上下文的丰富描述等功能。
-
通过使用视图标题中的“+”按钮快速启动新会话。
委托给远程编码代理
使用远程编码代理的典型场景是首先在本地聊天会话中讨论和计划任务,您可以在其中访问代码库的完整上下文,然后将实现工作委派给远程编码代理。然后,远程代理可以在后台处理任务并创建包含解决方案的拉取请求。
如果您在启用了 Copilot 编码代理的存储库中工作,“聊天”视图中的委派给编码代理按钮现在默认显示。
当您使用委派操作时,您的聊天对话中的所有上下文,包括文件引用,都会转发给编码代理。如果您的对话超出了编码代理的上下文窗口,VS Code 会自动总结和压缩信息以适应窗口。
聊天终端配置文件
我们添加了特定于平台的设置 chat.tools.terminal.terminalProfile.windows、chat.tools.terminal.terminalProfile.osx 和 chat.tools.terminal.terminalProfile.linux,用于配置由 run-in-terminal 工具启动的 shell。
拥有一个特定于聊天的 shell 对于简化或删除常规 shell 设置中的交互元素并使代理更容易使用非常有用。同时,它保持您的常规环境和 shell 启动脚本不变。
"chat.tools.terminal.terminalProfile.osx": {
"path": "bash", // bash instead of zsh
"args": [], // non-login instead of login on macOS
"env": {
"COPILOT": "1" // environment variable that can be used in init scripts
}
}
终端命令
自动回复终端提示(实验性)
设置:chat.tools.terminal.autoReplyToPrompts
我们引入了一个可选设置 chat.tools.terminal.autoReplyToPrompts,它使代理能够自动响应终端中的输入提示,例如 Confirm? y/n
。
终端自由格式输入请求检测
当终端需要自由格式输入时,我们现在显示一个确认提示。这使您能够专注于当前工作,并且仅在需要输入时转移注意力。
使用 Apple 帐户登录
除了使用 GitHub 或 Google 帐户登录外,您现在还可以使用 Apple 帐户登录或设置 GitHub Copilot 帐户。此功能将向 VS Code 用户推出。
您可以在公告GitHub 博客文章中找到更多信息。
模型可用性
此里程碑,我们添加了对聊天中以下模型的支持。可用模型取决于您的 Copilot 计划和配置。
-
GPT-5-Codex,OpenAI 的 GPT-5 模型,针对代理编码进行了优化。
-
Claude Sonnet 4.5,Anthropic 最先进的编码和现实世界代理模型。
您可以使用聊天中的模型选择器在不同模型之间进行选择。了解有关 VS Code 中的语言模型的更多信息。
MCP
MCP 市场(预览版)
VS Code 现在包含一个内置的 MCP 市场,使用户能够直接从“扩展”视图浏览和安装 MCP 服务器。这由 GitHub MCP 注册表提供支持,并提供无缝体验,直接在编辑器中发现和管理 MCP 服务器。
注意:此功能目前处于预览阶段。并非所有功能都可用,并且体验可能仍有一些不足。
MCP 市场默认禁用。如果未安装 MCP 服务器,您将在“扩展”视图中看到一个欢迎视图,提供轻松启用市场的访问权限。您还可以通过使用 chat.mcp.gallery.enabled 设置手动启用 MCP 市场。
要从“扩展”视图浏览 MCP 服务器
- 在“扩展”视图搜索框中使用
@mcp
过滤器 - 从“扩展”视图中的过滤器下拉菜单中选择MCP 服务器
- 按名称搜索特定的 MCP 服务器
自动启动 MCP 服务器
在此版本中,当您发送聊天消息时,新的或过时的 MCP 服务器现在会自动启动。VS Code 还避免在自动启动服务器时触发对话等交互,而是在聊天中添加指示器,让您知道服务器需要关注。
由于 MCP 默认自动启动,我们不再急切地激活扩展,而是在发送第一条聊天消息时才激活提供 MCP 的扩展。
对于扩展开发者,我们还添加了对 mcpServerDefinitionProviders
贡献点的 when
子句的支持,这样您就可以在不相关时避免激活。
改进了工具返回的 MCP 资源的表示
以前,我们对包含资源的工具结果的实现将其留给模型检索这些资源,而没有明确说明如何操作。在此版本的 VS Code 中,默认情况下,我们包含资源内容的预览,并添加了检索完整内容的说明。这应该会在使用此类工具时带来更好的模型性能。
MCP 规范更新
此里程碑,我们采用了以下 MCP 规范更新
-
SEP-973,它允许 MCP 服务器指定与其数据关联的
icons
。这可以用于为服务器、资源和工具提供自定义图标。HTTP MCP 服务器必须从 MCP 服务器本身侦听的相同授权机构提供图标,而 stdio 服务器允许引用磁盘上的
file:///
URI。 -
SEP-1034,它允许 MCP 服务器在使用引导时提供
default
值。
辅助功能
Windows 上 pwsh 的 Shell 集成对屏幕阅读器的支持
当检测到屏幕阅读器时,PSReadLine 历来被禁用,以避免向用户提供过多的听觉反馈。由于我们终端的 shell 集成依赖于 PSReadLine 支持,我们现在在屏幕阅读器模式下激活 PSReadLine 的简化版本。这确保了 shell 集成及其功能适用于屏幕阅读器用户。
聊天改进
设置:accessibility.verboseChatProgressUpdates
一个新设置 accessibility.verboseChatProgressUpdates,使屏幕阅读器用户能够获得更详细的聊天活动公告。
从聊天输入中,用户可以聚焦上次聚焦的聊天回复项 ⇧⌘↓ (Windows, Linux Ctrl+Shift+Down)。
可访问视图持久性
在 VS Code 和其他窗口之间切换时,我们现在保持用户在可访问视图中的位置,以实现无缝工作流。
编辑器体验
覆盖快速输入的默认快捷方式
快速输入控件,例如命令面板(快速选择、输入框)中使用的控件,过去常常硬编码用于导航的键盘快捷键,例如向上或向下移动列表、接受 (Enter) 和其他一些交互。
这些操作现在已移动到命令,这使您能够覆盖它们的键盘快捷键。例如,如果您想在快速选择中通过 Tab 键接受某些内容,现在可以实现。要查看所有可以覆盖的键盘快捷键,请打开“键盘快捷键”编辑器 (kb(workbench.action.openGlobalKeybindings))
并搜索 quickInput.
禁止仅包含空白字符的下一个编辑建议
设置:github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges
现在可以禁止下一个编辑建议 (NES) 提出仅包含空白字符的更改,例如代码格式化。
源代码管理
通过 AI 解决合并冲突
当打开带有 Git 合并冲突标记的文件时,您现在可以通过 AI 解决合并冲突。我们在编辑器的右下角添加了一个新操作。选择此新操作会打开“聊天”视图,并启动一个代理流,其中包含合并基础和来自每个分支的更改作为上下文。
您可以在编辑器中查看建议的合并冲突解决方案,并在需要时提供其他上下文。您可以通过使用 AGENTS.md
文件自定义合并冲突解决方案。
将文件提交添加到聊天上下文
几个里程碑前,我们添加了在源代码管理图视图中查看每个历史项中的文件的功能。您现在可以将历史项中的文件作为上下文添加到聊天请求中。当您想将文件的特定版本的内容作为上下文提供给聊天提示时,这会很有用。
要将过去提交中的文件添加到聊天中,请选择一个提交以查看文件列表,右键单击特定文件,然后从上下文菜单中选择添加到聊天。
测试
使用代码覆盖率运行测试
如果您为代码安装了测试扩展,聊天中的 runTests
工具使代理能够使用 VS Code 测试集成在代码库中运行测试,而不是从命令行运行它们。
在此版本中,runTests
工具现在还将测试代码覆盖率报告给代理。这使代理能够生成和验证覆盖整个代码的测试。
交换测试结果列
您可以使用视图标题菜单中的新交换 ↔️ 按钮更改结果树在“测试结果”视图中显示的侧面。
任务
长时间运行任务完成的操作系统通知
设置:task.notifyWindowOnTaskCompletion
当用户启动的长时间运行任务在 VS Code 窗口未聚焦时完成时,将显示操作系统徽章和通知提示。选择通知会将焦点移至任务完成的窗口。您可以使用 task.notifyWindowOnTaskCompletion 设置配置此行为。
任务终端标题持久性
设置:terminal.integrated.tabs.title
您可以使用 terminal.integrated.tabs.title 设置配置终端选项卡的标题。默认情况下,值为 ${process}
,它显示在终端中运行的进程的名称。
对于任务,这意味着当任务启动不同的进程时,终端标题可能会更改,这可能会造成混淆。为了解决这个问题,我们现在在任务启动时将任务名称作为终端标题持久化。
终端
公开启动听写
我们已将“启动听写”操作添加到终端溢出菜单。此操作使您能够使用语音听写将文本输入到终端中。相应的“停止听写”操作会在相关时出现。
认证
macOS 对 Microsoft 身份验证的原生代理支持
设置:microsoft-authentication.implementation
此里程碑,我们采用了最新的 MSAL 库,因此您现在可以通过 macOS 上的原生体验(除了 Windows)登录
原生代理身份验证仅适用于
- M 系列(也称为 ARM)macOS 设备
- 通过策略强制通过代理的 Intune 注册的 macOS 机器
这启用了出色的单点登录流程,是获取 Microsoft 身份验证会话的推荐方式。MSAL 团队将随着时间的推移为其余平台(Linux、Windows ARM、macOS Intel/x64)启用此功能,敬请期待!
注意:如果您在使用代理进行身份验证时遇到问题,可以将 microsoft-authentication.implementation 更改为
msal-no-broker
,它将使用您的浏览器进行身份验证。
GitHub 身份验证的 PKCE 支持
GitHub 最近在其身份验证流程中启用了 PKCE (Proof Key for Code Exchange) 支持。我们已在 VS Code 用于向 GitHub 进行身份验证的流程中采用了此功能。
语言
Python
复制测试 ID 操作
运行装订线图标上下文菜单现在包含一个复制测试 ID 命令,用于复制完全限定的 pytest 或 unittest 测试标识符。
对扩展的贡献
GitHub 拉取请求
GitHub Pull Requests 扩展取得了更多进展,该扩展使您能够处理、创建和管理拉取请求和问题。新功能包括:
#openPullRequest
工具将打开的 PR diffs 和 PR 文件识别为“打开的拉取请求”。- 设置 githubIssues.issueAvatarDisplay 可用于控制在“问题”视图中显示第一个受分配者的头像还是作者的头像。
- 刷新时,我们不再总是运行支持“拉取请求”视图的拉取请求查询,而是先检查存储库中是否有新的 PR,然后再运行查询。这应该会减少在没有新 PR 时 API 的使用。
查看扩展 0.120.0 版本的更改日志以了解发布中的所有内容。
扩展开发
Microsoft 身份验证现在支持 WWW-Authenticate 声明质询
Azure 现在强制执行所有对 Azure 资源的创建/删除操作都必须使用通过 MFA 登录的经过身份验证的会话完成。虽然某些组织出于任何身份验证原因都要求 MFA,但有些组织不强制执行此操作,这些组织受此 MFA 强制执行的影响。
如果您有使用 Microsoft 身份验证并与 ARM 通信的扩展,则需要处理 ARM API 调用返回 401 Unauthorized
并带有 WWW-Authenticate
标头的情况,如下所示
Bearer realm="", authorization_uri="https://login.microsoftonline.com/common/oauth2/authorize", error="insufficient_claims", claims="SOME VALUE HERE"
好消息是,我们引入了一个最终的 API,您可以使用它来处理此状态代码
const wwwAuthenticateFromRequest = headers['WWW-Authenticate']; // the string above
vscode.authentication.getSession(
'microsoft',
{
wwwAuthenticate: wwwAuthenticateFromRequest,
fallbackScopes: scopesFromOriginalRequest
},
{
createIfNone: true
}
);
您只需逐字传递 WWW-Authenticate
值以及您最初请求的范围(最可能是 ARM 范围),Microsoft 身份验证提供程序将处理其余部分,并确保用户通过 MFA。
我们已与拥有 Azure 资源扩展的 Azure 工具团队合作,以采用此新 API。如果您正在使用该扩展或使用该扩展的某些内容,则应该处理此强制执行。如果您遇到问题,请在 Azure 资源扩展上提出问题。
注意:希望在您的
AuthenticationProvider
中支持WWW-Authenticate
质询?在问题 #267992 中提供您的想法。
提示和说明文件贡献
扩展现在可以贡献提示和说明文件。
"contributes": {
"chatPromptFiles": [
{
"name": "ReviewAndCreateIssue",
"description": "Review the selected code and create an issue",
"path": "./prompts/reviewAndCreateIssue.prompt.md"
}
],
"chatInstructions": [
{
"name": "TextMateGuidelines",
"description": "Use these instructions when creating or modifying TextMate grammars",
"path": "./prompts/textMateGuidelines.instructions.md"
}
]
}
聊天模式贡献 (chatModes
) 目前在建议的 API 标志后。
列出 SecretStorage 中的密钥
此迭代,我们已最终确定了列出您的扩展存储在 Secret Storage 中的所有密钥的 API。这可以在 context.secrets
对象中找到。
export function activate(context: ExtensionContext) {
const keys: string[] = await context.secrets.keys();
const value = await context.secrets.get(keys[0]); // a value that exists
}
一个可以使用此功能的示例是在 deactivate
上,您可能希望删除所有秘密存储数据。
工程
Playwright VS Code MCP 服务器
我们进一步探索了使用 MCP 服务器来控制 VS Code 的本地构建,以帮助 VS Code 的开发循环。虽然我们在模型理解解析屏幕截图方面结果好坏参半,但使用 #executePrompt
工具(可以通过 github.copilot.chat.executePrompt.enabled 启用)进行子代理编排在不污染上下文方面是有效的。
我们计划在未来的版本中进一步探索这一点,敬请期待!
要尝试此 MCP 服务器,您可以在 vscode 存储库的 test/mcp 文件夹中找到它。入门非常容易
- 遵循贡献指南以运行本地版本的 Code OSS。
- 在代理模式下使用我们微不足道(目前)的提示文件提问:
/playwright <your question here>
。
值得注意的修复
- vscode#265842 - 聊天:修复影响 Sonnet、Gemini 和 Grok 模型的文件损坏问题
- vscode#221255 - 修复终端链接在“打开 URI 可能不安全”警告确认后仍会打开的问题。
- vscode#229374 - 修复终端 OSC 8 超链接打开文件夹时,在 VS Code 资源管理器中打开而不是原生文件资源管理器。
- vscode#268443 - 发行说明中的设置链接不起作用。
感谢
问题跟踪
对我们问题跟踪的贡献
- @gjsjohnmurray (John Murray)
- @albertosantini (Alberto Santini)
- @RedCMD (RedCMD)
- @IllusionMH (Andrii Dieiev)
拉取请求
对 vscode
的贡献
- @alpalla (Alessio Palladino):在转换为驼峰式和帕斯卡式操作中保持换行符 PR #263781
- @andr8928:建议小部件:错误修复 - 当小部件太高时,确保使用上方和下方空间中较大的一个。 PR #260583
- @avarayr (avarayr):修复:在 macOS Tahoe 上禁用窗口阴影以防止 GPU 性能问题 PR #267724
- @bwateratmsft (Brandon Waterloo [MSFT]):修复 MCP HTTP 服务器处理程序中的类型不兼容问题 PR #268548
- @CGNonofr (Loïc Mangeonjean)
- 修复:支持任务类型上的竞争条件 PR #265847
- 修复:在 firefox 中正确更新克隆的样式表上的突变 PR #269126
- @dmiska25 (Dylan Miska):处理 ref 而不是对象本身以避免空对象。 PR #266299
- @DrSergei (Sergei Druzhkov):改进 canSetExpressionValue 检查 PR #268952
- @essjay05 (Joy Serquiña):修复:添加 aria-description 以提供屏幕阅读器工具提示上下文 PR #267818
- @garciasdos (Diego García):修复:引导电子邮件验证器 PR #265326
- @harbin1053020115 (ermin.zem):功能:点击演练“:toSide”命令时,根据 workbench.editor.splitInGroupLayout 配置拆分编辑器组方向 PR #267557
- @hron (Aleksei Gusev):允许将
diffEditor.revert
绑定到键盘 PR #225881 - @leonard520 (Xiaoyun Ding):将对话 ID 添加到 mcp meta PR #265303
- @lukocode:修复:确保在剪贴板复制之前加载 SVG 图像 PR #263799
- @mawosoft (Matthias Wolf)
- 修复 PowerShell shell 集成在启用严格模式时的问题。 PR #266260
- 在 PowerShell shell 集成中恢复 PSReadline 键重映射 PR #267311
- @narbit (Natalya Arbit):不允许 localhost 重定向,而支持环回 IP 重定向 PR #267546
- @Peter-developer01 (Peter):修复 localization.contribution.ts 中 nls.localize(...) 中的拼写错误 PR #263228
- @RedCMD (RedCMD):修复 RangeFormat 错误的文档竞争条件 PR #267628
- @SimonSiefke (Simon Siefke)
- 修复:ReplAccessibilityAnnouncer 中的内存泄漏 PR #264937
- 修复:聊天小部件中的内存泄漏 PR #265002
- 减少约 1.2 MB 内存 PR #267785
- 修复:折叠中的内存泄漏 PR #269071
- @Skn0tt (Simon Knott):将省略号字符视为搜索通配符 PR #262462
- @tmm1 (Aman Karmani):修复 BrowserSocketFactory 中的一次性泄漏 PR #263736
- @turansky (Victor Turansky):修复:
lm.registerLanguageModelChatProvider
jsdoc 格式 PR #266485 - @witsaint (DQ):修复:确认按钮样式 PR #267438
- @yiliang114 (易良):修复 #263546,解决 treeView view/item/context 子菜单的 z-index 问题… PR #263555
对 vscode-copilot-chat
的贡献
- @24anisha:将接受/拒绝和生存添加到 GH 遥测 PR #1059
- @DGideas (Wanlin Wang 王万霖):改进自定义 OpenAI 兼容模型 URL 解析 PR #1074
- @johan-j (Johan Jansson):模型选择器中 BYOK 自定义模型的分组 PR #1111
- @shaunm-msft (Shaun Miller)
- @vritant24 (Vritant Bhardwaj):根据嵌入排名取消工具分组 PR #678
- @yemohyleyemohyle
对 vscode-eslint
的贡献
- @frodi-karlsson (Fróði Karlsson)
- @fronterior (Low Front):修复 workspaceFolder 检查以使用可选链 PR #2075
对 vscode-json-languageservice
的贡献
- @danila-schelkov (Danila Schelkov):功能:propertyNames 的示例完成 PR #286
对 vscode-mypy
的贡献
- @cnaples79 (Chase Naples):修复:在非交互模式下从 stderr 解析 mypy 诊断 PR #375
对 vscode-python-environments
的贡献
- @almarouk (Abdelrahman AL MAROUK):修复 conda env 刷新不等待承诺的问题 PR #751
- @renan-r-santos (Renan Santos):当终端移动到编辑器窗口时显示激活按钮 PR #764
对 vscode-vsce
的贡献
- @joyceerhl (Joyce Er):修复:为
languageModelChatProvider
贡献生成语言模型标签 PR #1199
对 debug-adapter-protocol
的贡献
- @dmjio (David M. Johnson):更新 adapters.md 中的调试适配器列表 PR #562
我们非常感谢大家尽快尝试我们的新功能,所以请经常回来查看并了解最新内容。
如果您想阅读以前 VS Code 版本的发行说明,请访问 code.visualstudio.com 上的更新。