2025 年 8 月(版本 1.104)
发布日期:2025 年 9 月 11 日
更新 1.104.1:此次更新修复了这些问题。
更新 1.104.2:此次更新修复了这些问题。
更新 1.104.3:此次更新修复了这些问题。
下载:Windows: x64 Arm64 | Mac: 通用版 Intel Apple Silicon | Linux: deb rpm tarball Arm snap
欢迎阅读 Visual Studio Code 2025 年 8 月版的更新说明。此版本包含了许多我们希望您会喜欢的功能,以下是部分主要亮点:
-
模型灵活性
-
安全性
-
生产力
如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新页面。
Insiders:想尽快尝试新功能?
您可以下载每晚的 Insiders 构建版本,并尽快尝试最新更新。
下载 Insiders
聊天
自动模型选择(预览版)
在本次迭代中,我们在聊天中引入了自动模型选择功能。当您在模型选择器中选择自动 (Auto) 模型时,VS Code 会自动选择合适的模型,以确保您获得最佳性能并减少速率限制。
自动模型选择目前处于预览阶段,我们将在接下来的几周内向所有 VS Code 中的 GitHub Copilot 用户推广该功能,首先从个人 Copilot 计划开始。

除非您的组织禁用了对这些模型的访问权限,否则“自动”模式将在 Claude Sonnet 4、GPT-5、GPT-5 mini 和 GPT-4.1 之间进行选择。使用自动模型选择时,VS Code 会根据所选模型使用可变模型乘数。如果您是付费用户,自动模式将应用 10% 的请求折扣。
您可以将鼠标悬停在聊天视图的响应上,查看所选模型和模型乘数。

了解更多关于 VS Code 中自动模型选择的信息。
确认对敏感文件的编辑
设置: chat.tools.edits.autoApprove
在智能体模式下,智能体可以自主地对工作区中的文件进行编辑。这可能包括意外或恶意地修改或删除重要文件(如配置文件),从而对您的机器造成直接的负面影响。了解更多关于使用人工智能开发工具时的安全注意事项。
在此版本中,智能体在对某些文件进行编辑之前,会明确要求用户确认。这为使用智能体模式提供了额外的安全层。通过 chat.tools.edits.autoApprove 设置,您可以配置哪些文件模式需要确认。
常见的系统文件夹、点文件 (dotfiles) 以及工作区之外的文件默认需要确认。

对 AGENTS.md 文件的支持(实验性)
设置: chat.useAgentsMdFile
AGENTS.md 文件允许您向智能体提供上下文和说明。从本版本开始,当您的工作区根目录中包含 AGENTS.md 文件时,它会自动被捕获并作为聊天请求的上下文。这对于使用多个 AI 智能体的团队非常有用。
对 AGENTS.md 文件的支持默认开启,并可通过 chat.useAgentsMdFile 设置进行控制。有关 AGENTS.md 文件的详细信息,请参阅 https://agents.md/。
了解更多关于在 VS Code 中自定义聊天以符合您的实践和团队工作流程的内容。
改进的已更改文件体验
在此次迭代中,已更改文件列表进行了重构,新增了多项便利性功能。这些更改将改善您在智能体模式下的工作体验!
-
已更改文件列表现在默认处于折叠状态,以便为聊天对话提供更多空间。折叠后,您仍然可以看到文件更改计数以及添加或删除的行数。
-
当您保留或接受建议的更改时,该文件将从文件更改列表中移除。
-
当您在源代码控制视图中暂存或提交文件时,会自动接受建议的文件更改。
-
列表中的每项现在都会显示每个文件的更改(添加或删除的行数)。
在提示符文件中使用自定义聊天模式
提示符文件 (Prompt files) 是 Markdown 文件,您可以在其中编写可重用的聊天提示。要运行提示符文件,请在聊天输入字段中键入 / 后跟提示符文件名,或者在编辑器中打开提示符文件时使用播放按钮。
您可以指定运行提示符文件时应使用的聊天模式。以前,您只能在提示符文件中使用内置的聊天模式,如 agent、edit 或 ask。现在,您还可以在提示符文件中引用自定义聊天模式。

了解更多关于使用提示符文件、聊天模式和自定义说明来自定义 VS Code 中的聊天的内容。
配置提示符文件建议(实验性)
设置: chat.promptFilesRecommendations
团队经常创建自定义提示符文件以标准化 AI 工作流程,但在用户最需要时,这些提示符可能很难发现。现在,您可以配置哪些提示符文件根据上下文条件作为聊天欢迎视图中的建议出现。
新的 chat.promptFilesRecommendations 设置既支持简单的布尔值,也支持上下文感知的建议的 when 子句表达式。
{
"chat.promptFilesRecommendations": {
"plan": true, // Always suggest
"a11y-audit": "resourceExtname == .html", // Only for HTML files
"document": "resourceLangId == markdown", // Only for Markdown files
"debug": false // Never suggest
}
}
这有助于团队在适当的时间展示正确的人工智能工作流程,使自定义提示符更易于发现,并与您的工作区和文件类型更加相关。
在工具集中选择工具
工具集是一种将相关工具组合在一起的便捷方式,VS Code 具有多个内置工具集,如 edit 或 search。
工具选择器现在显示每个工具集包含哪些工具,您可以单独启用或禁用每个工具。您可以通过聊天视图中的 配置工具... (Configure Tools...) 按钮访问工具选择器。

配置聊天中使用的字体
设置: chat.fontFamily , chat.fontSize
VS Code 允许您选择编辑器中使用的字体,但聊天视图之前缺乏这种可配置性。我们现在添加了两个新设置,用于配置聊天消息的字体系列 ( chat.fontFamily ) 和字体大小 ( chat.fontSize )。

注意:列表的内容目前尚未应用这些设置,但我们正在努力在未来的版本中解决此问题。
与编程智能体协作(实验性)
通过编程智能体,您可以将任务委托给后台工作的 AI 智能体。您可以让多个此类智能体并行工作。我们正在不断改进聊天会话体验,以帮助您更有效地与编程智能体进行协作。
聊天会话视图
设置: chat.agentSessionsViewLocation
聊天会话视图提供了一个单一的、统一的视图,用于管理本地和贡献的聊天会话。我们显著增强了聊天会话视图,您现在可以在其中执行所有关键操作,从而更轻松地迭代和完成您的编码任务。
- 状态栏跟踪:直接从状态栏监控多个编程智能体的进度。
- 多会话支持:从同一个视图启动和管理多个聊天会话。
- 扩展上下文菜单:访问更多操作以高效地与您的编程智能体进行交互。
- 丰富的描述:启用丰富的描述后,每个列表条目现在都包含详细的上下文,帮助您快速找到相关信息。
GitHub 编程智能体集成
我们改进了 GitHub 编程智能体与聊天会话的集成,以提供更流畅、更直观的体验。
- 聊天编辑器操作:轻松查看或应用代码更改,并直接从聊天编辑器中检出拉取请求。
- 无缝转换:从本地聊天以更好的连续性过渡到 GitHub 智能体任务。
- 更好的会话渲染:对卡片和工具渲染进行了各种改进,以获得更好的视觉清晰度。
- 性能提升:更快的会话加载速度,带来更灵敏的体验。
委托给编程智能体
我们继续扩大将 VS Code 中的本地任务委托给 Copilot 编程智能体的方法。
-
用编程智能体修复 TODO
以
TODO开头的注释现在显示一个代码操作,用于快速启动编程智能体会话。
-
从聊天中委托 ( githubPullRequests.codingAgent.uiIntegration )
当您在聊天中执行委托给编程智能体 (Delegate to coding agent) 操作时,其他上下文(包括文件引用)现在会被转发给 GitHub 编程智能体。这使您能够在将任务移交给编程智能体完成之前精确地规划任务。一个新的聊天编辑器会被打开,并实时显示编程智能体的进度。
主题:Sharp Solarized(在 vscode.dev 上预览)
使用 Google 进行社交登录
使用 Google 帐户登录或注册 GitHub Copilot 的选项现已正式发布,并正在推广给 VS Code 中的所有用户。

您可以在 GitHub 博客公告中找到更多相关信息。
终端自动批准
设置: chat.tools.terminal.enableAutoApprove 此设置在组织级别进行管理。请联系您的管理员进行更改。
自动批准终端命令可以极大地简化智能体交互,但也伴随着安全风险。此版本引入了对终端自动批准的多项改进,以增强可用性和安全性。
-
您现在可以使用 chat.tools.terminal.enableAutoApprove 此设置在组织级别进行管理。请联系您的管理员进行更改。 设置启用或禁用终端自动批准。此设置也可以由组织通过设备管理进行设置。
-
在实际启用终端自动批准之前,您需要在聊天视图中通过下拉菜单明确选择加入。

-
在聊天视图中,您可以方便地为正在运行的命令添加自动批准规则,或打开配置设置。

主题:Sapphire (在 vscode.dev 上预览)
这为命令提供了基本的支持,建议在更合适的情况下使用子命令,例如建议使用
npm test规则而不是npm。 -
为了提高自动批准命令的透明度,我们在聊天视图中显示了应用了哪条规则,这也使您能够配置该规则。

-
我们改进了默认设置以提供安全性并减少干扰。您可以通过打开
settings.json文件查看设置的默认值,然后输入chat.tools.terminal.autoApprove并通过 Tab 键补全,查看完整的规则列表。 -
包含反斜杠或正斜杠字符的非正则表达式规则现在被视为路径,不仅会批准该确切路径,还允许使用任一斜杠类型以及
./前缀。使用 PowerShell 时,所有规则都被强制为不区分大小写。 -
当智能体模式想要使用
curl、wget、Invoke-RestMethod或Invoke-WebRequest从互联网拉取内容时,我们现在会显示警告,因为这是提示注入攻击的常见向量。
在我们的文档中了解更多关于终端自动批准的信息。
全局自动批准
全局自动批准自 v1.99 以来一直是一项实验性设置。我们观察到用户在未充分考虑后果的情况下启用了此设置。此外,一些用户认为启用 chat.tools.autoApprove 设置是启用终端自动批准的前提,但事实并非如此。
为了消除这些误解并进一步保护我们的用户,现在在首次尝试使用全局自动批准时,会出现一个名副其实且令人恐惧的警告,以便用户可以轻松退出并禁用该设置。

该设置也已更改为更清晰的 chat.tools.global.autoApprove 此设置在组织级别进行管理。请联系您的管理员进行更改。,且没有任何自动迁移,因此所有用户(无论是否意外)都需要重新去明确设置它。
数学渲染默认启用
设置: chat.math.enabled
聊天响应中的数学公式渲染现已正式发布并默认启用。您可以使用 chat.math.enabled 设置禁用此功能。

此功能由 KaTeX 提供支持,支持行内和块级数学公式。行内数学公式可以通过将标记包裹在单美元符号 ($...$) 中编写,而块级数学公式使用两个美元符号 ($$...$$)。
聊天视图默认可见性
设置: workbench.secondarySideBar.defaultVisibility
当您首次打开工作区时,带有聊天视图的辅助侧栏默认可见,邀请您立即提问或启动智能体式会话。您可以使用 workbench.secondarySideBar.defaultVisibility 设置或通过聊天视图本身的下拉菜单来配置此行为。

改进的任务支持
-
输入请求检测
当您在智能体模式下运行任务或终端命令时,智能体现在可以检测到进程何时请求用户输入,并且会提示您在聊天中进行响应。如果您在出现提示时在终端中键入,提示将自动隐藏。当提供选项和描述(例如
[Y] 是 [N] 否)时,这些内容会显示在确认提示中。 -
针对具有问题匹配器的任务的错误检测
对于使用问题匹配器的任务,智能体现在会根据问题匹配器的结果收集并显示错误,而不是依赖于语言模型来评估输出。问题显示在聊天进度消息中的下拉菜单中,允许您直接导航到问题位置。这确保了只有在与当前任务执行相关时才会报告错误。
-
复合任务支持
智能体模式现在支持运行复合任务。当您运行复合任务时,智能体会指示每个依赖任务的进度和输出,包括任何用户输入提示。这实现了更复杂的工作流程,并提高了对多步任务执行的可见性。
在下面的示例中,运行了 VS Code - Build 任务。系统会评估每个依赖任务的输出,并在响应和进度消息下拉菜单中向用户显示问题。
改进的终端支持
-
将更多终端工具移至核心
就像上个版本的
runInTerminal工具一样,terminalSelection和terminalLastCommand工具已从扩展移动到核心,这将带来普遍的可靠性改进。 -
可配置的终端工具 shell 集成超时
每当
runInTerminal工具尝试创建终端时,它会等待一段时间让 shell 集成激活。如果您的 shell 启动特别慢(例如您有一个非常繁重的 PowerShell 配置文件),这可能会导致它等待之前固定的 5 秒超时,最终仍然失败。此超时现在可通过 chat.tools.terminal.shellIntegrationTimeout 设置进行配置。 -
防止使用命令提示符 (Command Prompt)
由于在命令提示符中实际上无法进行 shell 集成(至少在 Copilot 需要的功能方面),Copilot 现在选择使用 Windows PowerShell,它应该默认具有 shell 集成。当您的默认 shell 是命令提示符时,这应该能提高
runInTerminal工具的可靠性。如果出于某种原因您希望 Copilot 使用命令提示符,目前无法实现。我们很可能会很快添加自定义 Copilot 使用的终端配置文件的功能,这在 #253945 中进行跟踪。
Todo List 工具
Todo list 工具可帮助智能体将复杂的多步任务分解为更小的任务,并报告进度以帮助您跟踪单个项目。我们对此工具进行了改进,现已默认启用。
工具进度显示在聊天视图顶部的 Todo 控件中,随着 todo 列表的处理,该控件会自动折叠,仅显示当前正在进行的任务。
跳过工具调用
当智能体请求确认工具调用时,您现在可以选择跳过工具调用,让智能体继续。您仍然可以通过聊天输入框取消请求或输入新请求。
语义工作区搜索的改进
我们升级了 #codebase 工具,以使用新的嵌入 (embeddings) 模型来对工作区中的代码进行语义搜索。此新模型为代码搜索提供了更好的结果。新的嵌入也使用了更少的存储空间,每个嵌入只需要我们之前模型磁盘存储大小的 6%。
我们将在接下来的几周内逐步推广这个新的嵌入模型。您的工作区将自动更新为使用此新嵌入模型,因此无需采取任何操作。如果您想在它推广给您之前试用,VS Code Insiders 已经在使用该新模型。
隐藏并禁用 GitHub Copilot AI 功能
设置: chat.disableAIFeatures
我们引入了一项新设置 chat.disableAIFeatures ,用于禁用和隐藏 GitHub Copilot 提供的内置 AI 功能,包括聊天、代码补全和下一次编辑建议。
与我们之前的解决方案相比,该设置具有以下优势
- 在您的设备间同步,除非您明确禁用它
- 如果已安装 Copilot 扩展,则将其禁用
- 按配置文件或工作区配置设置,从而轻松选择性地禁用 AI 功能
“隐藏 AI 功能”命令已重命名以反映此更改,现在将在设置编辑器中显示此新设置。
注意:之前隐藏 AI 功能的用户将继续看到 AI 功能处于隐藏状态。如果您想在设备间同步您的选择,可以另外更新该设置。
MCP
支持服务器指令
VS Code 现在读取 MCP 服务器指令,并将它们包含在其基础提示符中。
MCP 自动发现默认禁用
设置: chat.mcp.discovery.enabled
VS Code 支持自动发现安装在其他应用程序(如 Claude Code)中的 MCP 服务器。随着 MCP 支持在 VS Code 中的成熟,自动发现现已默认禁用,但您可以使用 chat.mcp.discovery.enabled 设置重新启用它。
启用 MCP
设置: chat.mcp.access 此设置在组织级别进行管理。请联系您的管理员进行更改。
之前控制 MCP 服务器是否可以在 VS Code 中运行的 chat.mcp.enabled 设置已迁移到具有更具描述性选项的新 chat.mcp.access 此设置在组织级别进行管理。请联系您的管理员进行更改。 设置中
all:允许所有 MCP 服务器运行(等同于之前true的值)none:完全禁用 MCP 支持(等同于之前false的值)
辅助功能
聚焦聊天确认操作
我们添加了一个命令:聚焦聊天确认 (Focus Chat Confirmation) (kb(workbench.action.chat.focusConfirmation)),它会聚焦确认对话框(如果存在),或者向屏幕阅读器用户通告不需要确认。
代码编辑
可配置的内联建议延迟
设置: editor.inlineSuggest.minShowDelay
新的 editor.inlineSuggest.minShowDelay 设置使您能够配置键入后内联建议出现的快慢。如果您觉得建议出现得太快并干扰了您的输入,这会很有用。
编辑器体验
Windows 上的窗口边框颜色支持
设置: window.border
我们很高兴在 Windows 上添加了一个新的 window.border 设置,使您能够在 VS Code 窗口周围显示彩色边框。该设置具有以下选项:
default:遵循颜色主题设置,回退到 Windows 设置system:仅遵循 Windows 设置(窗口标题强调色)off:禁用边框颜色<color>:十六进制、RGB、RGBA、HSL、HSLA 格式的特定颜色
您可以按工作区配置颜色,从而更容易区分哪个窗口打开了哪个工作区。

当您将 window.border 配置为 default 时,主题可以分别使用 window.activeBorder 和 window.inactiveBorder 颜色键来设置活动窗口和非活动窗口的边框颜色。您可以进一步从 workbench.colorCustomizations 设置覆盖这些颜色。
管理扩展帐户偏好设置
我们在命令面板中添加了帐户:管理扩展帐户偏好设置 (Accounts: Manage Extension Account Preferences) 命令。调用该命令时,它会显示一个有权访问身份验证帐户的扩展列表,并允许您更改这些扩展使用的帐户。您甚至可以直接从列表中登录新帐户。
这是基于我们一年前添加的帐户管理功能。
编辑器选项卡索引
设置: workbench.editor.showTabIndex
您现在可以在选项卡的标签中呈现编辑器选项卡的索引。当您打开了许多选项卡并希望使用键盘快捷键在它们之间快速导航时,这会很有帮助。通过 workbench.editor.showTabIndex 设置启用此功能。

编辑器选项卡栏滚动条可见性
设置: workbench.editor.titleScrollbarVisibility
该 workbench.editor.titleScrollbarVisibility 设置使您能够控制编辑器选项卡栏中的滚动条何时可见。默认值 auto 仅在选项卡溢出且鼠标悬停在选项卡上时显示滚动条。您也可以将其设置为 visible 以在选项卡溢出时始终显示滚动条,或设置为 hidden 以从不显示它。
问题报告改进
当通过内置问题报告器在 VS Code 或扩展中报告问题时,您现在可以通过报告按钮上的下拉菜单选择在 GitHub 上创建 (Create on GitHub) 或 在 GitHub 上预览 (Preview on GitHub)。如果按钮未填充下拉菜单且仅显示“创建”或“预览”,这很可能意味着您仍在加载扩展数据,或者需要确保您已使用提供正确作用域的 GitHub 帐户登录。

Notebook
改进的 NES 建议(实验性)
设置: github.copilot.chat.notebook.enhancedNextEditSuggestions.enabled
我们正在试验改善 Notebook 的下一次编辑建议 (Next Edit Suggestions) 的质量。目前,语言模型在生成建议时只能访问活动单元格的内容。启用 github.copilot.chat.notebook.enhancedNextEditSuggestions.enabled 设置后,语言模型可以访问整个 Notebook,从而使其能够生成更准确、更高质量的下一次编辑建议。
源代码管理
预览和迁移 Git 工作树更改
您现在可以通过在源代码控制更改视图中右键单击工作树文件以打开上下文菜单,并选择与工作区比较 (Compare with Workspace),来预览工作树文件与当前工作区之间的差异。

审查更改后,您可以使用命令面板中的迁移工作树更改... (Migrate Worktree Changes...) 命令 () 将工作树中的所有更改合并到当前工作区中。这使得在多个工作树之间工作并将更改有选择地带回主仓库变得很容易。
了解更多关于 VS Code 中的 Git 工作树的信息。
终端
终端窗口的可发现性和润色
一个常见的请求是允许在单独的窗口中打开终端。此功能已经存在了大约一年半,但并不是特别容易被发现。在此次迭代中,我们为该功能添加了多个入口点:
- 新命令 ⌃⇧⌥` (Windows, Linux Ctrl+Shift+Alt+`)。
- 空编辑器和选项卡菜单现在有一个新建终端 (New Terminal) 条目。
- 新建终端下拉菜单已重新调整,现在有一个新建终端窗口 (New Terminal Window) 条目。
- 顶级终端菜单现在有一个新建终端窗口 (New Terminal Window) 条目。
我们还润色了这些新终端窗口以紧凑模式打开的体验。如果您向窗口添加新选项卡,它会自动退出紧凑模式。

终端编辑器中的终端操作
终端视图中可用的操作(新建终端下拉菜单、清除终端等)现在也适用于编辑器区域和终端窗口中的终端。

就像在终端视图中一样,您可以右键单击操作区域以将它们从溢出菜单中移出。
终端 IntelliSense 改进(预览)
终端 IntelliSense 在此版本中得到了多项改进:
- 多项性能改进,这对 Windows 上的体验影响显著。
- 由于移除了在 Windows 上不可用的
sed依赖,git补全在 Windows 上现在更加可靠。 git补全现在具有熟悉的图标来表示提交、分支、远程、暂存和标签。
- 添加了大量补全规范:
adb,basename,bundle,clear,cut,date,dd,diff,dig,dirname,docker-compose,docker,dotnet,env,export,fdisk,fmt,fold,gh,go,htop,id,jq,ln,lsblk,lsof,mount,nl,od,paste,ping,pkill,readlink,rsync,ruby,ruff,sed,seq,shred,sort,source,split,stat,su,sudo,tac,tar,tee,time,tr,traceroute,tree,truncate,uniq,unzip,wc,where,whereis,which,who,xargs,xxd,yo,zip
终端粘滞滚动 (Sticky Scroll) 改进
我们现在默认启用了终端粘滞滚动。我们进行了一些改进以获得更好的体验,例如改进了在使用分页器 (pager) 时的行为。终端粘滞滚动现在与 editor.tabFocusMode 设置兼容。
语言
JavaScript 和 TypeScript
在审查使用数据后,我们决定移除内置的 bower.json IntelliSense。Bower 自 2017 年起已被弃用,我们的内置支持使用率很低,且未得到积极维护。
Bower 建议用户迁移到 npm 或 yarn。VS Code 对 Bower 的持续支持可以由扩展提供。
Python
Python 环境扩展对 Pipenv 的支持
Pipenv 环境现在可以像在 Python 扩展中一样被发现和选择。此外,它们出现在 Python 侧栏的环境管理器 (Environment Manager) 视图中,在那里它们被分组并与其他环境类型一起显示。

配置环境变量注入
一个新设置 python.useEnvFile ,控制当启用 Python 环境扩展时,来自 .env 文件和 python.envFile 设置的环境变量是否被注入到终端中。
Python 环境扩展改进
Python 环境扩展作为向稳定版用户受控推广的一部分,继续收到错误修复和改进。要在推广期间使用 Python 环境扩展,请确保已安装该扩展,并将以下内容添加到您的 VS Code settings.json 文件中:"python.useEnvironmentsExtension": true。
Pylance AI 驱动的悬停摘要(实验性)
当使用 Pylance 的最新预发布版本时,Python 现在可以使用新的实验性 AI 悬停摘要功能。当您启用 python.analysis.aiHoverSummaries 设置时,您可以即时获取尚未拥有文档的符号的有用摘要。这使得理解不熟悉的代码变得更容易,并在您探索 Python 项目时提高工作效率。AI 悬停摘要目前可供 GitHub Copilot Pro、Pro+ 和 Enterprise 用户使用。
我们期待很快将此实验性体验带到稳定版本的扩展中。
运行代码片段工具
Pylance 运行代码片段工具使 GitHub Copilot 能够完全在内存中执行 Python 片段,而不是依赖 python -c "code" 等终端命令或创建临时文件来执行。它自动使用为您工作区配置的正确 Python 解释器,并消除了终端执行期间有时会出现的 shell 转义和引用问题。
其突出的好处之一是它提供的清晰、格式良好的输出,stdout 和 stderr 交错以保持清晰。这使其非常适合在与 GitHub Copilot 配合使用智能体模式时测试小段代码、运行快速脚本、验证 Python 表达式或检查导入,所有这些都在您的工作区上下文中进行。
要试用它,请确保使用 Pylance 扩展的最新预发布版本。然后,您可以通过聊天视图中的添加上下文... (Add context...) > 工具 (Tools) 菜单选择 pylancerunCodeSnippet 工具。
注意:与所有 AI 生成的代码一样,请确保在允许执行此工具之前检查生成的代码。审查代码的逻辑和意图可确保其符合您项目的目标并保持安全和正确。
在所有 Python 文档中启用 Pylance IntelliSense
python.analysis.supportAllPythonDocuments 设置已从 Pylance 最新预发布版本中移除,Pylance IntelliSense 现在默认在所有 Python 文档中启用,包括终端和差异视图。这意味着无论您在 VS Code 中的何处使用 Python,都可以获得丰富的代码补全、悬停和代码导航。
激活钩子 (Activation hooks)
Python 激活钩子现在可以从 shell 集成脚本运行,而无需 Python 环境扩展修改您的 shell 配置文件。当 python-envs.terminal.autoActivationType 设置为 shellStartup 时,这提供了更可靠的终端激活,并且重要的是,确保了 Copilot 终端按预期激活。
对扩展的贡献
GitHub 拉取请求
GitHub Pull Requests 扩展取得了更多进展,该扩展使您能够处理、创建和管理拉取请求和问题。新功能包括:
- 侧栏内容在窄窗口上折叠
- 拉取请求和问题 Webview 在重新加载后还原
- 新的“TODO”代码操作让您可以直接委托给 Copilot 编程智能体
- 子模块可以通过 githubPullRequests.ignoreSubmodules 忽略
查看扩展 0.118.0 版本的更新日志,了解该版本中的所有内容。
扩展开发
针对扩展启动终端的 shellIntegrationNonce
shellIntegrationNonce 现在可以传递给 TerminalOptions 和 ExtensionTerminalOptions 中的 createTerminal。这使扩展能够控制 Nonce,Nonce 用于验证 shell 集成转义序列中的命令。
语言模型聊天提供程序 API (Language Model Chat Provider API)
在此次迭代中,我们最终确定了 LanguageModelChatProviders API。这使扩展能够贡献一个或多个语言模型,无论是云托管还是本地模型。安装扩展后,用户可以通过聊天中的模型选择器选择这些模型。
已经有多个扩展利用此 API 通过其他模型扩展 VS Code 中的聊天功能,包括 AI Toolkit for VS Code、Cerebras Inference 和 Hugging Face。
您可以在我们的 语言模型聊天提供程序扩展指南 或我们的 扩展示例 中了解有关如何利用此 API 的更多信息。
注意:通过此 API 提供的模型目前仅供 个人 GitHub Copilot 计划的用户使用。
提议的 API
身份验证:支持 getSession 中的 WWW-Authenticate 挑战
HTTP 中一个公认的模式是,对 API 的请求可以返回 401 Unauthorized 状态代码,并带有定义身份验证挑战 (auth challenges) 的 WWW-Authenticate 标头。这些本质上是 API 需要的东西,以便解决 401 错误。
我们引入了一个提议的 API,允许将这些挑战传递并处理给身份验证提供程序。首先,从调用方一侧,您现在可以像这样传入挑战:
export interface AuthenticationWWWAuthenticateRequest {
/**
* The raw WWW-Authenticate header value that triggered this challenge.
*/
readonly wwwAuthenticate: string;
/**
* Optional scopes for the session.
*/
readonly scopes?: readonly string[];
}
export namespace authentication {
// NOTE: The only change is the 2nd parameter, the other variations of `getSession` have the same change
export function getSession(
providerId: string,
scopeListOrRequest: ReadonlyArray<string> | AuthenticationWWWAuthenticateRequest,
options?: AuthenticationGetSessionOptions
): Thenable<AuthenticationSession | undefined>;
}
在身份验证提供程序一侧,我们向 AuthenticationProvider 添加了以下两个新函数:
getSessionsFromChallenges(constraint: AuthenticationConstraint, options: AuthenticationProviderSessionOptions): Thenable<readonly AuthenticationSession[]>;
createSessionFromChallenges(constraint: AuthenticationConstraint, options: AuthenticationProviderSessionOptions): Thenable<AuthenticationSession>;
并且身份验证提供程序在通过 AuthenticationProviderOptions 中的 supportsChallenges: true 注册时,可以声明对挑战的支持。
示例:Azure MFA
这项工作最初是由于即将到来的在 Azure API 中要求 MFA 的更改而完成的,所以让我们也将其用作此 API 的一个示例。
假设您有一个在 Azure 中创建资源的扩展。它所做的只是调用 Azure RM API,没有什么特别的……您的扩展可能已经熟悉调用 vscode.authentication.getSession 来获取身份验证会话,主要是访问令牌,可用于调用此 API。现在,当您最初铸造该身份验证会话时,根据您的组织,您可能已经或可能没有通过多因素身份验证 (MFA)。如果您通过了,那么 Azure API 会很满意。如果您没有通过 MFA,那么 Azure 的 API 将返回 401 和 WWW-Authenticate 标头。
现在有了我们在 VS Code 中的新 API……您所要做的就是获取该标头值,并将其直接传入 vscode.authentication.getSession。
const newRequest = {
wwwAuthenticate: theRawHeaderValue,
scopes: scopesFromPreviousRequest
};
const sessionWithMFA = await vscode.authentication.getSession(
'microsoft',
newRequest,
options
);
这会将该标头值传递给 microsoft 身份验证提供程序,身份验证提供程序将负责铸造一个满足挑战的会话。
后续步骤
下一次迭代,我们将最终确定此提议的 getSession(即扩展请求身份验证)部分,因此如果您对此或 AuthenticationProvider 更改的形状有任何反馈,请告诉我们!您可以在 GitHub 上找到完整的提议。
关于 WWW-Authenticate 即将启用的另一个用例是,MCP 服务器发出 WWW-Authenticate 标头,要求提供具有更多作用域的令牌。MCP 规范中有一个关于此的提议。
辅助侧栏中的视图容器
扩展可以将视图容器贡献给 activitybar 和 panel。我们现在还添加了对贡献到 secondarySidebar 的支持。这目前处于 contribSecondarySideBar 提议 API 之后。我们希望很快能最终确定此 API。
工程
在 VS Code 的内部开发循环中探索 Playwright 和 Playwright MCP
VS Code 的 Agent 模式及其他 AI 功能已成为 VS Code 团队构建 VS Code 本身的核心工具。我们希望探索如何进一步应用这些功能,使 VS Code 的内部开发循环变得更加出色。为此,我们一直在尝试扩展现有的冒烟测试 自动化项目(使用 Playwright),以创建一个能够驱动本地 VS Code 实例的 MCP 服务器。这使得我们现有的代理流程(此前侧重于从构建/测试时期的构件(如编译、检查工具、测试等)接收上下文)现在也能与实时运行的 VS Code 实例进行交互……从而验证更改在运行时是否达到了预期效果。
这项工作的初步内容可在 vscode 仓库的 test/mcp 文件夹中找到。如果您有兴趣尝试,上手非常简单。
- 请按照 贡献指南 运行本地版本的 Code OSS。
- 然后,您可以在 Agent 模式下使用 我们(目前还很简陋的)提示词文件,输入
/playwright 您的提问来进行询问。
这仍处于早期探索阶段,但我们对它为我们在内部开发循环中进一步利用 AI 所带来的可能性感到兴奋。基础工作已经铺平,我们将继续对其进行迭代,使其对团队更加稳健和有用。
这项工作最近在 VS Code Insiders 播客中进行了介绍,我们讨论了此次探索背后的动机以及一些技术细节。您可以收听该期 VS Code Insiders 播客。
值得注意的修复
- vscode#151902 - 终端:1.68 版本中选择时复制 + 新高亮导致在 CMD+F 时复制了之前的项
- vscode#222075 - 在分页器中使用向下翻页时,终端粘滞滚动可能会出现 1 帧的闪烁
- xtermjs/xterm.js#5390 - 修复退出备用缓冲区后的滚动条瞬移问题
感谢
最后但同样重要的是,向 VS Code 的贡献者们致以衷心的感谢。
问题跟踪
对我们问题跟踪的贡献
- @gjsjohnmurray (John Murray)
- @RedCMD (RedCMD)
- @IllusionMH (Andrii Dieiev)
- @albertosantini (Alberto Santini)
拉取请求
对 vscode 的贡献
- @a-ariff (Ariff): 文档:修复 Development Container 部分的语法错误 PR #264162
- @alexkozy (Alexey)
- 修复:debugToolBar.ts 中的微小内存泄漏 PR #259349
- 修复:注册 WorkerTextModelSyncClient PR #259442
- @alexvoedi (Alexander Vödisch): 修复 linkedEditing 同步失败问题 PR #242993
- @bluedog13
- 修复 OAuth 重定向 URI 格式,使其符合 Microsoft 的 URL 标准 PR #260446
- 修复 OAuth2 资源参数以符合 RFC 8707 标准 PR #261815
- @CGNonofr (Loïc Mangeonjean): 修复 Firefox 上主题未与外部窗口同步的问题 PR #259839
- @Da-nie-elT: 使用
Object.hasOwn()更新 for-in 循环代码片段 PR #262682 - @DoctorKrolic: 将
.slnx添加到xml语言扩展列表中 PR #259049 - @DrSergei (Druzhkov Sergei): 修复监视窗口中的内存引用处理问题 PR #259753
- @gjsjohnmurray (John Murray)
- 将
Go to Test添加到覆盖率源快速选择器 PR #259600 - 在测试覆盖率工具栏的快速选择器中设置正确的活动条目 PR #259639
- 测试结果:仅在提供 URI 时才显示
Go to Test(修复 #260443) PR #260508
- 将
- @hihry (Himanshu Ravindra Iwanati): 修复:更新“恢复到上次检查点”悬停文本的大小写 PR #259572
- @j3iiifn: 提示词文件名不能包含数字 PR #261704
- @joelverhagen (Joel Verhagen)
- 允许安装流程返回规范的包名和版本 PR #259081
- 支持由辅助 MCP 安装返回 server.json PR #259634
- 在 MCP 辅助安装失败时添加帮助链接支持 PR #260215
- @kenherring (Ken Herring): terminal.copyOnSelection 和 terminalFindWidget - 聚焦时不复制所选内容 PR #254065
- @kplates (kplates): 功能:在文件搜索中包含/排除文件类型 PR #254285
- @LeftPhalange (Ethan Bovard): 使用 DIFF_OPEN_SIDE 命令在命令面板中添加“打开激活的差异侧(Open Active Diff Side)”选项 PR #261699
- @remcohaszing (Remco Haszing)
- 修复 MonacoEnvironment 的全局访问问题 PR #248075
- 在 Markdown 代码块中高亮显示更多语言 PR #263550
- @rwoll (Ross Wollman)
- 在自动化测试中等待代理循环完成 PR #262370
- 支持在自动化测试中切换模型 PR #262420
- 修复:解析 chat.open 命令中的命令 PR #263458
workbench.action.chat.export可选接受路径参数 PR #263507- 修复:根据 Promise 确认响应 PR #263894
- 撤销“修复:根据 Promise 确认响应 (#_263894)” PR #264047
- @SimonSiefke (Simon Siefke)
- 修复:模式输入控件中的内存泄漏 PR #258152
- 修复:CodeLens 控制器中的内存泄漏 PR #263136
- 修复:辅助功能信号调度程序中的内存泄漏 PR #263147
- 修复:QuickDiffModel 中的内存泄漏 PR #265007
- @swordjjjkkk (Truman): 在 VS Code 中显示标签页索引 PR #209196
- @terreng (Terren): 实现控制标题滚动条可见性的新选项 PR #246161
- @timheuer (Tim Heuer): 在测试覆盖率视图中添加“全部折叠”功能 PR #258906
- @tmm1 (Aman Karmani)
- 修复了一些拼写错误 PR #259747
- terminalProcessManager: 修复资源清理(disposable)泄漏 PR #261710
- 存储:使用 upsert 语法优化 sqlite 插入 PR #261999
- @Tritlo (Matthías Páll Gissurarson): extHostMcp: 接受 SSE/JSON 处理的 Content-Type 参数 PR #262787
- @ttttotem (ttttotem): 修复“在头两个字符之间点击时插入符号跳转到第 0 列”的问题 PR #265131
- @JBlitzar (JBlitzar): 连接到现有实例时使用
app.dock.hidePR #259352
对 vscode-copilot-chat 的贡献
- @24anisha: 向 GitHub 遥测数据添加 SKU 信息 PR #819
- @devm33 (Devraj Mehta): 使 logprobs 字段变为可选 PR #325
- @iann0036 (Ian Mckay): 修复:“GitHub”的大小写调整 PR #631
- @joelverhagen (Joel Verhagen)
- @jwangxx (James Wang)
- @lipido (Daniel Glez-Peña): 提高代理测试覆盖率 PR #614
- @m4dc4p: 更新 getErrors (GetErrors / problems) 工具 PR #394
- @rwoll (Ross Wollman)
- @shaunm-msft (Shaun Miller)
- @sridharavinash (Avinash Sridhar): 向对话模型消息添加模式(mode) PR #517
- @yemohyleyemohyle: 向 MSFT 内部遥测添加消息长度事件 PR #473
- @zhichli (Zhichao Li)
对 vscode-eslint 的贡献
- @AmarMuric04 (AmarMuric)
- @davidtaylorhq (David Taylor): 为 Ember 的 glimmer-ts/glimmer-js 格式添加探测支持 PR #2069
对 vscode-extension-samples 的贡献
- @Sepush (Artea): 重构(lsp-embedded-request-forwarding):清理无用代码 PR #1196
对 vscode-js-debug 的贡献
- @LittleLittleCloud (Xiaoyun Zhang): 修复:在 constructInspectorWSUri 函数中处理 localhost 主机名 PR #2260
对 vscode-jupyter 的贡献
- @hunterhogan (Hunter Hogan): package.nls.json 中的拼写错误 PR #16890
- @krassowski (Michał Krassowski): 添加对自定义 CDN URL 的支持 PR #16885
对 vscode-languageserver-node 的贡献
- @MariaSolOs (Maria José Solano): 将能力信息添加到
textDocument/colorPresentationPR #1660
对 vscode-markdown-languageservice 的贡献
- @remcohaszing (Remco Haszing): 将 @vscode/l10n 更新至 0.0.18 版本 PR #199
对 vscode-markdown-tm-grammar 的贡献
- @c-schuhmann (Christian Schuhmann): 添加对 SAP ABAP 语法的支持 PR #176
- @esmasth (Siddharth Sharma): 添加对 YANG 代码围栏(code fence)的支持 PR #169
- @Morikko (Eric Masseran): 在 markdown 代码块中添加 restructuredtext 支持 PR #178
- @remcohaszing (Remco Haszing)
对 vscode-pull-request-github 的贡献
- @krassowski (Michał Krassowski): 修复拼写错误 “will be replace” → “will be replaced” PR #7540
对 vscode-python-environments 的贡献
- @almarouk (Abdelrahman AL MAROUK): 修复:通过路径存在性检查增强 conda 可执行文件的获取 PR #677
- @sjsikora (Sam Sikora): 错误修复:更严格的 pip 列表包解析 PR #698
对 vscode-vsce 的贡献
- @tgrospic (Tomislav Grospić): 通过为 prepublish 命令使用字符串形式来避免 Node.js DEP0190 警告 PR #1188
对 debug-adapter-protocol 的贡献
- @jborean93 (Jordan Borean): 添加 Ansible 实现 PR #552
对 language-server-protocol 的贡献
- @aartaka (Artyom Bologov): 将 cl-lsp (Common Lisp) 添加到实现列表中 PR #2179
- @anakin4747 (Anakin Childerhose): 添加 kconfig-language-server PR #2177
- @asukaminato0721 (Asuka Minato): 添加 ty PR #2175
- @MariaSolOs (Maria José Solano): 将能力信息添加到
textDocument/colorPresentationPR #2173 - @notpeter (Peter Tripp)
- @ribru17 (Riley Bruins): 修复 3.18 元模型版本 PR #2180
- @skewb1k: 纠正懒属性描述中的语法和一致性问题 PR #2170
对 node-jsonc-parser 的贡献
- @operagxsasha: 文档:编辑了指向徽章测试的链接 PR #98
- @pimterry (Tim Perry): 在解析器错误中添加 startLine 和 startCharacter PR #102
对 python-environment-tools 的贡献
- @almarouk (Abdelrahman AL MAROUK): 修复 conda 环境跟踪消息 PR #241
我们非常感谢大家在新功能准备就绪后立即进行试用,请经常回来查看并了解新功能。
如果您想阅读以前 VS Code 版本的发行说明,请访问 code.visualstudio.com 上的更新页面。