2025 年 8 月 (v1.104)
发布日期:2025 年 9 月 11 日
更新 1.104.1:此更新解决了这些 问题。
更新 1.104.2:此更新解决了这些 问题。
更新 1.104.3:此更新解决了这些 问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel Silicon | 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-clause”表达式。
{
"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。
工具选择器现在显示哪些工具属于每个工具集,您可以单独启用或禁用每个工具。您可以通过“聊天”视图中的“配置工具…”按钮访问工具选择器。

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

注意:列表内容目前尚未遵循这些设置,但我们正在努力在即将发布的版本中修复此问题。
与编码代理协作 (实验性)
通过编码代理,您可以将任务委派给 AI 代理在后台处理。您可以让多个代理并行工作。我们正在继续改进聊天会话体验,以帮助您更有效地与编码代理协作。
聊天会话视图
设置:chat.agentSessionsViewLocation
聊天会话视图提供了一个单一的统一视图来管理本地和贡献的聊天会话。我们已显著增强了聊天会话视图,现在您可以在其中执行所有关键操作,从而更轻松地迭代和完成编码任务。
- 状态栏跟踪:直接从状态栏监控多个编码代理的进度。
- 多会话支持:在同一视图中启动和管理多个聊天会话。
- 扩展的上下文菜单:访问更多操作,以高效地与您的编码代理进行交互。
- 丰富描述:启用丰富描述后,每个列表条目现在都包含详细的上下文,以帮助您快速找到相关信息。
GitHub 编码代理集成
我们改进了 GitHub 编码代理 与聊天会话的集成,以提供更顺畅、更直观的体验。
- 聊天编辑器操作:直接从聊天编辑器轻松查看或应用代码更改,并检出拉取请求。
- 无缝过渡:通过改进的连续性,从本地聊天转到 GitHub 代理任务。
- 更好的会话渲染:对卡片和工具渲染进行了各种改进,以提高视觉清晰度。
- 性能提升:更快的会话加载,以获得更具响应性的体验。
委托给编码代理
我们继续扩展将 VS Code 中的本地任务委托给 Copilot 编码代理的方式。
-
使用编码代理修复 TODO
以
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] 是 [N] 否),这些将在确认提示中显示。 -
带问题匹配器的任务的错误检测
对于使用问题匹配器的任务,代理现在会根据问题匹配器结果收集和显示错误,而不是依赖语言模型来评估输出。问题将显示在聊天进度消息内的下拉菜单中,允许您直接导航到问题位置。这可确保仅在与当前任务执行相关时才报告错误。
-
复合任务支持
代理模式现在支持运行复合任务。当您运行复合任务时,代理会显示每个依赖任务的进度和输出,包括用户输入的任何提示。这使得更复杂的工作流程和多步任务执行的可视性更好。
在下面的示例中,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+`)。
- 空编辑器和选项卡栏菜单现在有一个“新建终端”条目。
- 新的终端下拉菜单已重新排列,现在有一个“新建终端窗口”条目。
- 顶级终端菜单现在有一个“新建终端窗口”条目。
我们还改进了这些新终端窗口以紧凑模式打开的体验。如果您向窗口添加新选项卡,它会自动退出紧凑模式。

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

与终端视图中一样,您可以右键单击操作区域将其移出溢出菜单。
终端 IntelliSense 改进(预览)
在此版本中,终端 IntelliSense 将获得多项改进。
- 多项性能改进,这些改进不成比例地影响了 Windows 上的体验。
- 由于删除了 `sed` 依赖项(在 Windows 上不可用),`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 Environments 扩展对 Pipenv 的支持
现在可以像在 Python 扩展中一样发现和选择 Pipenv 环境。此外,它们会出现在 Python 侧边栏的“环境管理器”视图中,在那里它们会与您的其他环境类型一起分组和显示。

配置环境变量注入
一项新设置 python.useEnvFile 控制当启用了 Python Environments 扩展时,是否将 `.env` 文件和 python.envFile 设置中的环境变量注入到终端中。
Python 环境扩展改进
The Python Environments Extension 作为向稳定用户受控推出的部分,继续获得错误修复和改进。要在推出期间使用 Python Environments 扩展,请确保已安装该扩展,并在 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 扩展的最新预览版本。然后,您可以通过“聊天”视图中的“添加上下文...”>“工具”菜单选择 `pylancerunCodeSnippet` 工具。
注意:与所有 AI 生成的代码一样,在允许该工具执行之前,请务必检查生成的代码。审阅代码的逻辑和意图可确保其符合您项目的目标并保持安全和正确性。
Pylance IntelliSense 已在所有 Python 文档中启用
`python.analysis.supportAllPythonDocuments` 设置已从 Pylance 的最新预览版本中删除,现在 Pylance IntelliSense 默认在所有 Python 文档中启用,包括终端和 diff 视图。这意味着您可以在 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,它用于验证 shell 集成转义序列中的命令。
语言模型聊天提供程序 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 状态代码,并带有 WWW-Authenticate 标头,该标头定义了身份验证挑战。这些基本上是 API 为了克服 401 所需的内容。
我们引入了一个提议的 API,该 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 - 使用 page down 在分页器中使用时,终端固定滚动可能会显示 1 帧
- xtermjs/xterm.js#5390 - 修复退出备用缓冲区后的滚动条闪烁
感谢
最后但同样重要的是,向 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)
- 将“转到测试”添加到覆盖范围源快速选择器 PR #259600
- 设置测试覆盖率工具栏快速选择器的正确活动项 PR #259639
- 测试结果:仅在有 URI 时提供“转到测试”(修复 #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 命令将“打开活动 diff 侧边”选项添加到命令面板 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
- Revert "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: 修复 disposable 泄漏 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.hide` PR #259352
对 vscode-copilot-chat 的贡献
- @24anisha: 将 sku 数据添加到 github 遥测 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/colorPresentation添加功能信息 PR #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/colorPresentation添加功能信息 PR #2173 - @notpeter (Peter Tripp)
- @ribru17 (Riley Bruins): 修复 3.18 metamodel 版本 PR #2180
- @skewb1k: 修正 lazy 属性描述中的语法和一致性 PR #2170
对 node-jsonc-parser 的贡献
- @operagxsasha: docs: 编辑了 badge tests 的链接 PR #98
- @pimterry (Tim Perry): 向解析器错误添加 startLine & startCharacter PR #102
对 python-environment-tools 的贡献
- @almarouk (Abdelrahman AL MAROUK): 修复 conda env trace 消息 PR #241
我们非常感谢大家在新功能准备就绪后立即进行试用,请经常回来查看并了解新功能。
如果您想阅读以前 VS Code 版本的发行说明,请访问 code.visualstudio.com 上的更新页面。