2025 年 8 月 (版本 1.104)
发布日期:2025 年 9 月 11 日
更新 1.104.1:此更新解决了这些问题。
更新 1.104.2:此更新解决了这些问题。
更新 1.104.3:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel Apple 芯片 | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2025 年 8 月版。此版本中有许多更新,我们希望您会喜欢,其中一些主要亮点包括:
-
模型灵活性
-
安全性
-
生产力
如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新页面。
Insiders:想尽快尝试新功能?
您可以下载每晚的 Insiders 构建版本,并尽快尝试最新更新。
下载 Insiders
聊天
自动模型选择(预览版)
此迭代中,我们在聊天中引入了自动模型选择。当您在模型选择器中选择自动模型时,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
在代理模式下,代理可以自主地编辑工作区中的文件。这可能包括意外或恶意修改或删除重要文件(例如配置文件),这可能会立即对您的机器产生负面影响。了解有关使用 AI 驱动的开发工具时的安全注意事项的更多信息。
在此版本中,代理现在在编辑某些文件之前会明确请求用户确认。这在使用代理模式时提供了额外的安全层。通过chat.tools.edits.autoApprove设置,您可以配置文件模式以指示哪些文件需要确认。
默认情况下,常见的系统文件夹、点文件和工作区外的文件将需要确认。

支持 AGENTS.md 文件(实验性)
AGENTS.md 文件允许您向代理提供上下文和说明。从此版本开始,当您的工作区根目录中包含 AGENTS.md 文件时,它将自动作为聊天请求的上下文。这对于使用多个 AI 代理的团队非常有用。
默认情况下,已启用对 AGENTS.md 文件的支持,并且可以使用chat.useAgentsMdFile设置进行控制。有关 AGENTS.md 文件的更多信息,请参阅https://agents.md/。
了解有关 在 VS Code 中根据您的实践和团队工作流自定义聊天的更多信息。
改进的已更改文件体验
此迭代中,已更改文件列表已通过多项生活质量功能进行了重新设计。这些更改应该会改善您在代理模式下的体验!
-
默认情况下,已更改文件列表现在处于折叠状态,以便为聊天对话腾出更多空间。折叠时,您仍然可以看到已更改文件数量以及已添加或删除的行数。
-
当您保留或接受建议的更改时,文件将从已更改文件列表中删除。
-
当您使用“源代码管理”视图暂存或提交文件时,这将自动接受建议的文件更改。
-
列表中每个项目的更改(添加或删除的行数)现在都会显示。
在提示文件中使用自定义聊天模式
提示文件是 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
}
}
这有助于团队在正确的时间展示正确的 AI 工作流,使自定义提示更易于发现并与您的工作区和文件类型相关。
在工具集中选择工具
工具集是一种将相关工具分组的便捷方式,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开头的注释现在会显示一个“代码操作”,以快速启动编码代理会话。
-
从聊天中委托 (githubPullRequests.codingAgent.uiIntegration)
当您在聊天中执行委托给编码代理操作时,其他上下文(包括文件引用)现在会转发到 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设置禁用此功能。

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

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

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

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

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

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

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

就像在终端视图中一样,您可以右键单击操作区域以将其从溢出菜单中移出。
终端智能感知改进(预览版)
此版本中,终端智能感知获得多项改进:
- 多项性能改进,这些改进对 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
终端粘性滚动改进
我们现在默认启用了终端粘性滚动。我们进行了多项改进以提供更好的体验,例如使用分页器时改进的行为。终端粘性滚动现在与editor.tabFocusMode设置兼容。
语言
JavaScript 和 TypeScript
在审查使用情况数据后,我们决定移除内置的 bower.json IntelliSense。Bower 已于 2017 年弃用,我们的内置支持使用率低且未积极维护。
Bower 建议用户迁移到 npm 或 yarn。对 VS Code 中 Bower 的持续支持可以通过扩展提供。
Python
Python 环境扩展对 Pipenv 的支持
Pipenv 环境现在可以像在 Python 扩展中一样被发现和选择。此外,它们会出现在 Python 侧边栏的环境管理器视图中,在那里它们与其他环境类型一起分组和显示。

配置环境变量注入
一个新设置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 运行代码片段工具不再依赖于 python -c "code" 等终端命令或创建临时文件来执行,而是让 GitHub Copilot 完全在内存中执行 Python 片段。它会自动使用为您的工作区配置的正确 Python 解释器,并且消除了有时在终端执行期间出现的 Shell 转义和引号的常见问题。
一个突出的优点是它提供了清晰、格式良好的输出,stdout 和 stderr 交错显示,以提高清晰度。这使得在使用代理模式与 GitHub Copilot 一起测试小块代码、运行快速脚本、验证 Python 表达式或检查导入时非常理想,所有这些都在您的工作区上下文中进行。
要试用它,请确保使用最新预发布版本的 Pylance 扩展。然后,您可以通过“聊天”视图中的“添加上下文...”>“工具”菜单选择 pylancerunCodeSnippet 工具。
注意:与所有 AI 生成的代码一样,请务必在允许执行此工具之前检查生成的代码。审查代码的逻辑和意图可确保其符合您的项目目标并保持安全性和正确性。
Pylance IntelliSense 在所有 Python 文档中启用
python.analysis.supportAllPythonDocuments 设置已从最新的 Pylance 预发布版本中移除,Pylance IntelliSense 现在默认在所有 Python 文档中启用,包括终端和差异视图。这意味着无论您在 VS Code 中处理 Python 代码,都可以获得丰富的代码补全、悬停和代码导航。
激活挂钩
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
此迭代中,我们最终确定了 LanguageModelChatProviders API。这使扩展能够贡献一个或多个语言模型,无论是云托管还是本地模型。通过安装扩展,用户可以通过聊天中的模型选择器选择这些模型。
已经有多个扩展利用此 API 通过其他模型扩展 VS Code 中的聊天,包括 VS Code AI 工具包、Cerebras 推理和 Hugging Face。
您可以在我们的语言模型聊天提供商扩展指南或我们的扩展示例中了解如何利用此 API。
注意:通过此 API 提供的模型目前仅适用于个人 GitHub Copilot 计划的用户。
提议的 API
身份验证:在 getSession 中支持 WWW-Authenticate 质询
HTTP 的一个成熟模式是,对 API 的请求可以返回 401 Unauthorized 状态码,并带有 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 的其他 AI 功能已成为 VS Code 团队构建 VS Code 本身的核心工具(无双关语)。我们希望探索如何进一步应用这些功能,以使 VS Code 的内部开发循环变得更好。为此,我们一直在尝试扩展我们现有的冒烟测试自动化项目,该项目使用Playwright,以创建一个可以驱动 VS Code 本地实例的 MCP 服务器。这允许我们现有的代理流(侧重于从构建/测试时工件(编译、linter、测试等)接收上下文)现在也可以与 VS Code 的实时实例进行交互……验证更改在运行时是否具有所需的效果。
这项工作的第一个部分可以在 vscode 存储库的test/mcp 文件夹中找到。如果您有兴趣尝试一下,入门非常简单:
- 遵循贡献指南以运行 Code OSS 的本地版本。
- 然后您可以使用我们微不足道(目前)的提示文件在代理模式下提出问题
/playwright your question here。
这仍然是一个早期的探索,但我们对它为我们在内部开发循环中进一步使用 AI 所带来的可能性感到兴奋。基础工作已经奠定,我们将在此基础上进行迭代,使其对团队更加健壮和有用。
这项工作最近在 VS Code Insiders 播客中得到了专题报道,我们在其中讨论了此探索背后的动机和一些技术细节。您可以收听VS Code Insiders 播客的这一集。
值得注意的修复
- vscode#151902 - 终端:1.68 中选择复制 + 新高亮在 CMD+F 上复制上一个术语
- vscode#222075 - 在分页器中使用向下翻页时,终端粘性滚动可能会出现 1 帧
- xtermjs/xterm.js#5390 - 修复退出 alt 缓冲区后滚动条瞬移问题
感谢
最后但同样重要的是,向 VS Code 的贡献者们致以衷心的感谢。
问题跟踪
对我们问题跟踪的贡献
- @gjsjohnmurray (John Murray)
- @RedCMD (RedCMD)
- @IllusionMH (Andrii Dieiev)
- @albertosantini (Alberto Santini)
拉取请求
对 vscode 的贡献
- @a-ariff (Ariff): docs: 修复开发容器部分中的语法 PR #264162
- @alexkozy (Alexey)
- fix: debugToolBar.ts 中微小的内存泄漏 PR #259349
- fix: 注册 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): fix: 更新“恢复到上次检查点”悬停文本的大小写 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): feat: 从文件搜索中包含/排除文件类型 PR #254285
- @LeftPhalange (Ethan Bovard): 使用 DIFF_OPEN_SIDE 命令将“打开活动差异侧边”选项添加到命令面板 PR #261699
- @remcohaszing (Remco Haszing)
- 修复 MonacoEnvironment 的全局访问 PR #248075
- 在 markdown 代码块中突出显示更多语言 PR #263550
- @rwoll (Ross Wollman)
- 在自动化中等待代理循环完成 PR #262370
- 支持自动化中的模型切换 PR #262420
- fix: 解析 chat.open 命令中的命令 PR #263458
workbench.action.chat.export可选接受路径 PR #263507- fix: 基于 promise 确认响应 PR #263894
- 恢复“fix: 基于 promise 确认响应 (#_263894)” PR #264047
- @SimonSiefke (Simon Siefke)
- fix: 模式输入小部件中的内存泄漏 PR #258152
- fix: codelens 控制器中的内存泄漏 PR #263136
- fix: 辅助功能信号调度程序中的内存泄漏 PR #263147
- fix: QuickDiffModel 中的内存泄漏 PR #265007
- @swordjjjkkk (Truman): 在 VSCode 中显示选项卡索引 PR #209196
- @terreng (Terren): 实现控制标题滚动条可见性的新选项 PR #246161
- @timheuer (Tim Heuer): 为测试覆盖率视图添加全部折叠功能 PR #258906
- @tmm1 (Aman Karmani)
- 修复一些拼写错误 PR #259747
- terminalProcessManager: 修复一次性泄漏 PR #261710
- storage: 使用 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: 将 sku 数据添加到 github telemetry PR #819
- @devm33 (Devraj Mehta): 使 logprobs 字段可选 PR #325
- @iann0036 (Ian Mckay): fix: “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): 将模式添加到对话模型消息 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): refactor(lsp-embedded-request-forwarding): 清理无用代码 PR #1196
对 vscode-js-debug 的贡献
- @LittleLittleCloud (Xiaoyun Zhang): fix: 处理 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 代码围栏的支持 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): fix: 通过路径存在性检查增强 conda 可执行文件检索 PR #677
- @sjsikora (Sam Sikora): bug fix: 更严格的 pip list 包解析 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: docs: 编辑徽章测试的链接 PR #98
- @pimterry (Tim Perry): 将 startLine 和 startCharacter 添加到解析器错误 PR #102
对 python-environment-tools 的贡献
- @almarouk (Abdelrahman AL MAROUK): 修复 conda env 跟踪消息 PR #241
我们非常感谢大家在功能就绪时立即试用我们的新功能,所以请经常回来查看,了解最新动态。
如果您想阅读以前 VS Code 版本的发布说明,请访问 code.visualstudio.com 上的更新。