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

2025 年 8 月 (版本 1.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 计划。

Screenshot that shows the model picker in the Chat view, showing the Auto option.

“自动”将在 Claude Sonnet 4、GPT-5、GPT-5 mini 和 GPT-4.1 之间进行选择,除非您的组织已禁用对这些模型的访问。在使用自动模型选择时,VS Code 会根据所选模型使用可变模型乘数。如果您是付费用户,自动将应用 10% 的请求折扣。

您可以通过将鼠标悬停在聊天视图中的响应上来查看所选模型和模型乘数。

Screenshot of a chat response, showing the selected model on hover.

详细了解 VS Code 中的自动模型选择

确认对敏感文件的编辑

设置chat.tools.edits.autoApprove

在代理模式下,代理可以自主地编辑您工作区中的文件。这可能包括意外或恶意地修改或删除重要文件(如配置文件),这可能导致您的计算机立即产生负面影响。详细了解 在使用 AI 驱动的开发工具时的安全注意事项

在此版本中,代理现在会在对某些文件进行编辑之前明确征求用户确认。这为使用代理模式时提供了额外的安全层。通过 chat.tools.edits.autoApprove 设置,您可以配置文件模式以指示需要确认的文件。

默认情况下,公共系统文件夹、隐藏文件和工作区外文件将需要确认。

Screenshot showing the confirmation dialog for sensitive file edits in the Chat view.

支持 AGENTS.md 文件 (实验性)

设置chat.useAgentsMdFile

AGENTS.md 文件允许您为代理提供上下文和说明。从这个版本开始,当您的工作区根目录中存在 AGENTS.md 文件时,它将被自动作为聊天请求的上下文。这对于使用多个 AI 代理的团队很有用。

默认情况下启用对 AGENTS.md 文件的支持,并且可以通过 chat.useAgentsMdFile 设置进行控制。有关 AGENTS.md 文件的更多信息,请参阅 https://agents.md/

详细了解 如何根据您的实践和团队工作流自定义 VS Code 中的聊天

改进的已更改文件体验

在此次迭代中,已更改文件列表经过重新设计,并包含多项便利功能。这些更改应能改善您在代理模式下工作的体验!

  • 已更改文件列表默认处于折叠状态,以便为聊天对话腾出更多空间。折叠时,您仍然可以看到已更改文件的数量以及添加或删除的行数。

  • 当您保留或接受建议的更改时,该文件将从已更改文件中移除。

  • 当您使用源代码管理视图暂存或提交文件时,这会自动接受提议的文件更改。

  • 现在,列表中的每个项目都显示了每文件的更改(添加或删除的行数)。

在提示文件中使用自定义聊天模式

提示文件是 Markdown 文件,您可以在其中编写可重用的聊天提示。要运行提示文件,请在聊天输入字段中键入 /,后跟提示文件名,或者当您在编辑器中打开提示文件时使用“播放”按钮。

您可以指定运行提示文件时应使用哪种聊天模式。以前,您只能在提示文件中使用内置聊天模式,如 agenteditask。现在,您还可以在提示文件中引用自定义聊天模式。

Screenshot showing IntelliSense for custom chat modes in prompt files.

详细了解 如何使用提示文件、聊天模式和自定义指令来自定义 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 具有多个内置工具集,如 editsearch

工具选择器现在显示了每个工具集包含哪些工具,您可以单独启用或禁用每个工具。您可以通过聊天视图中的“配置工具…”按钮访问工具选择器。

Screenshot showing the tools picker with an expanded edit tool set, listing all available tools.

配置聊天中使用的字体

设置chat.fontFamily, chat.fontSize

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

Screenshot showing the Chat view with a custom font and font size.

注意:列表内容目前尚不支持这些设置,但我们正在努力在未来的版本中修复此问题。

与编码代理协作 (实验性)

通过编码代理,您可以将任务委托给 AI 代理在后台处理。您可以让多个此类代理并行工作。我们正在不断改进聊天会话体验,以帮助您更有效地与编码代理协作。

聊天会话视图

设置chat.agentSessionsViewLocation

聊天会话视图提供了一个统一的视图来管理本地和贡献的聊天会话。我们已显著增强了聊天会话视图,您现在可以在其中执行所有关键操作,从而更轻松地迭代和完成编码任务。

  • 状态栏跟踪:直接从状态栏监控多个编码代理的进度。
  • 多会话支持:从此视图启动和管理多个聊天会话。
  • 扩展的上下文菜单:访问更多操作,以高效地与编码代理进行交互。
  • 丰富的描述:启用丰富的描述后,每个列表项现在都包含详细的上下文,以帮助您快速查找相关信息。

GitHub 编码代理集成

我们改进了 GitHub 编码代理与聊天会话的集成,以提供更流畅、更直观的体验。

  • 聊天编辑器操作:可以直接从聊天编辑器轻松查看或应用代码更改,并签出拉取请求。
  • 无缝过渡:从本地聊天到 GitHub 代理任务,实现更佳的连续性。
  • 更好的会话渲染:在卡片和工具渲染方面进行了各种改进,以提高视觉清晰度。
  • 性能提升:更快的会话加载速度,提供更灵敏的体验。

委托给编码代理

我们继续扩展将 VS Code 中的本地任务委托给 Copilot 编码代理的方法。

  • 使用编码代理修复 TODO

    TODO 开头的注释现在会显示一个代码操作,用于快速启动编码代理会话。

    Screenshot of a code action above a TODO comment called Delegate to coding agent.

  • 从聊天中委托 (githubPullRequests.codingAgent.uiIntegration)

    当您在聊天中执行“委托给编码代理”操作时,现在会将其他上下文(包括文件引用)转发给 GitHub 编码代理。这使您能够在将任务交给编码代理完成之前精确地规划任务。会打开一个新的聊天编辑器,其中实时显示编码代理的进度。

主题:Sharp Solarized (在 vscode.dev 上预览)

使用 Google 进行社交登录

使用 Google 帐户登录或注册 GitHub Copilot 的选项现已全面推出,并正在 VS Code 中向所有用户推广。

Screenshot showing the sign in dialog showing the option to use a Google account.

您可以在 GitHub 博客文章公告中找到有关此内容的更多信息。

终端自动批准

设置chat.tools.terminal.enableAutoApprove

自动批准终端命令可以极大地简化代理交互,但它也带来了 安全风险。此版本在终端自动批准方面进行了一系列改进,以增强可用性和安全性。

  • 您现在可以通过 chat.tools.terminal.enableAutoApprove 设置启用或禁用终端自动批准。组织也可以通过 设备管理设置此项。

  • 在终端自动批准实际启用之前,您需要通过聊天视图中的下拉列表显式选择加入。

    Screenshot of a terminal command in the Chat view, showing the Enable Auto Approve dropdown.

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

    Screenshot that shows the three standard options are presented for "foo --arg && bar".

    主题:Sapphire (在 vscode.dev 上预览)

    这对命令提供了一些基本支持,以建议更合适的子命令,例如建议 npm test 规则而不是 npm

  • 为了提高自动批准命令的透明度,我们在聊天视图中显示了应用了哪个规则,并允许您配置该规则。

    Screenshot showing the new links added under the tool call in the Chat view for adding new auto approve rules.

  • 我们改进了默认设置,以提供安全并减少噪音。您可以通过打开 settings.json 文件,然后输入 chat.tools.terminal.autoApprove 并通过 Tab 完成来查看规则的完整列表,该列表显示了该设置的默认值。

  • 包含反斜杠或正斜杠字符的非正则表达式规则现在被视为路径,并且不仅批准该确切路径,还允许使用任一斜杠类型以及 ./ 前缀。使用 PowerShell 时,所有规则都强制设置为不区分大小写。

  • 当代理想要使用 curlwgetInvoke-RestMethodInvoke-WebRequest 从互联网获取内容时,我们现在会显示警告,因为这是命令注入攻击的常见向量。

在我们的文档中详细了解 终端自动批准

全局自动批准

全局自动批准自 v1.99 版本起一直是一项实验性设置。我们观察到用户在启用此设置时没有充分考虑其后果。此外,一些用户认为启用 chat.tools.autoApprove 设置是启用终端自动批准的先决条件,但这从未是事实。

为了解决这些误解并进一步保护我们的用户,当全局自动批准首次尝试使用时,会显示一个应有其惊悚外观的警告,以便用户可以轻松退出并禁用该设置。

Screenshot of a warning dialog that appears when global auto approve is used for the first time.

该设置也已更改为更清晰的 chat.tools.global.autoApprove,没有任何自动迁移,因此所有用户(偶然或有意)都需要重新进行显式设置。

数学渲染默认启用

设置chat.math.enabled

聊天响应中的数学公式渲染现已全面推出并默认启用。您可以使用 chat.math.enabled 设置禁用此功能。

Screenshot of the Chat view, showing inline and block equations in a chat response.

此功能由 KaTeX 提供支持,并支持行内和块级数学公式。行内数学公式可以通过将标记包装在单个美元符号($...$)中来编写,而块级数学公式使用两个美元符号($$...$$)。

聊天视图默认可见性

设置workbench.secondarySideBar.defaultVisibility

当您首次打开工作区时,带有聊天视图的辅助侧边栏默认可见,邀请您立即提问或开始代理会话。您可以使用 workbench.secondarySideBar.defaultVisibility 设置或使用聊天视图本身中的下拉列表来配置此行为。

Screenshot showing Chat view menu with the option to set the default Secondary Side Bar visibility.

改进的任务支持

  • 输入请求检测

    当您在代理模式下运行任务或终端命令时,代理现在会检测到进程何时请求用户输入,并提示您在聊天中进行响应。如果您在出现提示时在终端中键入,提示将自动隐藏。当提供选项和描述时(例如 [Y] Yes [N] No),这些将显示在确认提示中。

  • 具有问题匹配器的任务错误检测

    对于使用问题匹配器的任务,代理现在会根据问题匹配器结果收集和显示错误,而不是依赖语言模型来评估输出。问题显示在聊天进度消息中的下拉列表中,允许您直接导航到问题位置。这确保了错误仅在与当前任务执行相关时才报告。

  • 复合任务支持

    代理模式现在支持运行复合任务。当您运行复合任务时,代理会指示每个依赖任务的进度和输出,包括用户输入的任何提示。这使得更复杂的工作流和多步任务执行具有更好的可见性。

    在下面的示例中,运行了 VS Code - Build 任务。会评估每个依赖任务的输出,并在响应和进度消息下拉列表中向用户显示一个问题。

改进的终端支持

  • 将更多终端工具移至核心

    与上个版本的 runInTerminal 工具一样,terminalSelectionterminalLastCommand 工具已从扩展移至核心,这应该会带来一般的可靠性改进。

  • 可配置的终端工具 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

我们引入了一个新设置 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 值)

辅助功能

聚焦聊天确认操作

我们添加了一个命令“聚焦聊天确认(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

您可以为每个工作区配置颜色,从而更轻松地区分哪个工作区在哪个窗口中打开。

Screenshot of several VS Code windows with different border colors.

当您将 window.border 配置为 default 时,主题可以使用 window.activeBorderwindow.inactiveBorder 颜色键为活动和非活动窗口设置边框颜色。您可以从 workbench.colorCustomizations 设置中进一步覆盖这些颜色。

管理扩展账户偏好设置

我们在命令面板中添加了一个命令“账户:管理扩展账户偏好设置”。调用此命令时,它会显示已访问身份验证账户的扩展列表,并允许您更改这些扩展使用的账户。您甚至可以直接从列表中登录新账户。

这建立在我们一年前添加的账户管理功能的基础上。

编辑器选项卡索引

设置workbench.editor.showTabIndex

您现在可以在选项卡标签中显示编辑器选项卡的索引。当您打开许多选项卡并想使用键盘快捷键快速在它们之间导航时,这会很有帮助。使用 workbench.editor.showTabIndex 设置启用此功能。

Screenshot of editor tabs with numbers in front of them, indicating their index.

编辑器选项卡栏滚动条可见性

设置workbench.editor.titleScrollbarVisibility

workbench.editor.titleScrollbarVisibility 使您能够控制编辑器选项卡栏中的滚动条何时可见。默认值 auto 仅在选项卡溢出且用户将鼠标悬停在选项卡上时显示滚动条。您也可以将其设置为 visible 以在选项卡溢出时始终显示滚动条,或设置为 hidden 以从不显示它。

问题报告器改进

在通过内置的问题报告器在 VS Code 或扩展中报告问题时,您现在可以通过报告按钮上的下拉菜单选择在 GitHub 上创建在 GitHub 上预览。如果按钮没有显示下拉菜单,只显示创建或预览,这可能意味着您仍在加载扩展数据,或者需要确保您已登录到提供正确范围的 GitHub 帐户。

Screenshot of a dropdown showing Create on Github and Preview on Github in the issue reporter.

Notebook

改进的 NES 建议(实验性)

设置github.copilot.chat.notebook.enhancedNextEditSuggestions.enabled

我们正在试验改进笔记本的下一个编辑建议的质量。目前,语言模型在生成建议时可以访问活动单元格的内容。当 github.copilot.chat.notebook.enhancedNextEditSuggestions.enabled 设置启用时,语言模型可以访问整个笔记本,从而能够生成更准确、更高质量的下一个编辑建议。

源代码管理

预览和迁移 Git worktree 更改

现在,您可以通过在源代码管理更改视图中右键单击 worktree 文件来打开上下文菜单,并选择与工作区比较,来预览 worktree 文件与当前工作区之间的差异。

Screenshot of the context menu shown in the SCM view on a changed file in a worktree, with the Compare with Workspace option selected.

查看完更改后,您可以使用命令面板()中的迁移 Worktree 更改...命令将所有更改从 worktree 合并到当前工作区。这使得跨多个 worktree 工作并选择性地将更改带回主存储库变得容易。

详细了解 VS Code 中的 Git Worktree

终端

终端窗口的可发现性和改进

一个常见的请求是允许在单独的窗口中打开终端。此功能已存在约一年半,但一直不那么容易被发现。在此迭代中,我们为此功能添加了多个入口点。

  • 新命令 ⌃⇧⌥` (Windows、Linux Ctrl+Shift+Alt+`)
  • 空的编辑器和选项卡栏菜单现在有一个新建终端条目。
  • 新的终端下拉菜单已调整,现在有一个新建终端窗口条目。
  • 顶层的终端菜单现在有一个新建终端窗口条目。

我们还改进了这些新终端窗口以紧凑模式打开的体验。如果您向窗口添加新选项卡,它会自动退出紧凑模式。

Screenshot of the terminal window open in compact mode, hiding tabs to make more room for terminal content.

终端编辑器中的终端操作

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

Screenshot of different terminal actions in the editor actions menu.

就像在终端视图中一样,您可以右键单击操作区域将它们移出溢出菜单。

终端 IntelliSense 改进(预览)

此版本中的终端 IntelliSense 得到了一些改进。

  • 多项性能改进,这些改进不成比例地影响了 Windows 上的体验。
  • 由于移除了 Windows 上不可用的 sed 依赖项,git 的自动补全在 Windows 上现在更加可靠。
  • git 自动补全现在具有熟悉的图标,用于表示提交、分支、远程、暂存和标签。新图标显示在“git checkout”的自动补全中,用于显示标签和分支的屏幕截图
  • 添加了大量自动补全规范:adbbasenamebundleclearcutdatedddiffdigdirnamedocker-composedockerdotnetenvexportfdiskfmtfoldghgohtopidjqlnlsblklsofmountnlodpastepingpkillreadlinkrsyncrubyruffsedseqshredsortsourcesplitstatsusudotactarteetimetrtraceroutetreetruncateuniqunzipwcwherewhereiswhichwhoxargsxxdyozip

终端固定滚动改进

我们现在默认启用了终端固定滚动。我们已经进行了多项改进,以获得更好的体验,例如在使用分页符时的改进行为。终端固定滚动现在兼容 editor.tabFocusMode 设置。

语言

JavaScript 和 TypeScript

在审查了使用情况后,我们决定删除内置的 bower.json IntelliSense。Bower 自 2017 年以来一直已弃用,我们的内置支持使用很少,并且没有积极维护。

Bower 建议用户迁移到 npmyarn。通过扩展可以在 VS Code 中继续支持 Bower。

Python

Python Environments 扩展对 Pipenv 的支持

现在可以像在 Python 扩展中一样发现和选择 Pipenv 环境。此外,它们会出现在 Python 侧边栏的环境管理器视图中,在那里它们与其他环境类型一起分组和显示。

Screenshot showing the Python sidebar with Pipenv environments expanded.

配置环境变量注入

一个新的设置 python.useEnvFile 控制在启用 Python Environments 扩展时,是否将来自 .env 文件和 python.envFile 设置的环境变量注入到终端。

Python 环境扩展改进

Python Environments 扩展在向稳定用户进行受控推广的过程中,继续获得错误修复和改进。要在使用该扩展的过程中使用 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 传递给 createTerminal 中的 TerminalOptionsExtensionTerminalOptions。这使得扩展能够控制 nonce,该 nonce 用于验证 shell 集成转义序列中的命令

语言模型聊天提供商 API

本期,我们完成了 LanguageModelChatProviders API。这使得扩展可以贡献一个或多个语言模型,无论是在云端托管还是本地。通过安装扩展,用户可以通过聊天中的模型选择器选择这些模型。

已经有多个扩展利用此 API 来扩展 VS Code 中的聊天功能,支持其他模型,包括 AI Toolkit for VS CodeCerebras InferenceHugging Face

您可以在我们的 语言模型聊天提供商扩展指南或我们的扩展示例中了解更多关于如何使用此 API 的信息。

注意:通过此 API 提供的模型目前仅对使用个人 GitHub Copilot 套餐的用户可用。

提议的 API

身份验证:支持 getSession 中的 WWW-Authenticate 挑战

HTTP 的一个成熟模式是,对 API 的请求可以返回一个 401 未授权状态码,并带有 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 规范中对此有一个提议

在辅助侧边栏中查看容器

扩展程序可以向 activitybarpanel 贡献视图容器。我们现在增加了对 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 文件夹中找到。如果您有兴趣尝试一下,入门非常简单。

  1. 遵循贡献指南来运行 Code OSS 的本地版本。
  2. 然后,您可以使用我们简短(目前)的提示文件在代理模式下提出问题 /playwright 你的问题

这仍然是一次早期探索,但我们对它为我们进一步在内部开发循环中使用 AI 带来的可能性感到兴奋。基础工作已经铺好,我们将对其进行迭代,使其对团队来说更加健壮和有用。

这项工作最近在 VS Code Insiders 播客上进行了介绍,我们讨论了这次探索的动机和一些技术细节。您可以收听VS Code Insiders 播客的这一集。

值得注意的修复

  • vscode#151902 - 终端:选择时复制 + 1.68 版本中的新高亮会在 CMD+F 时复制先前的终端
  • vscode#222075 - 使用分页键在分页器中向下翻页时,终端固定滚动可能会显示一帧
  • xtermjs/xterm.js#5390 - 退出备用缓冲区后修复滚动条的闪烁

感谢

最后但同样重要的是,向 VS Code 的贡献者们致以衷心的感谢

问题跟踪

对我们问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-copilot-chat 的贡献

vscode-eslint 的贡献

vscode-extension-samples 的贡献

vscode-js-debug 的贡献

vscode-jupyter 的贡献

vscode-languageserver-node 的贡献

vscode-markdown-languageservice 的贡献

vscode-markdown-tm-grammar 的贡献

vscode-pull-request-github 的贡献

vscode-python-environments 的贡献

vscode-vsce 的贡献

debug-adapter-protocol 的贡献

language-server-protocol 的贡献

node-jsonc-parser 的贡献

python-environment-tools 的贡献

我们非常感谢大家在新功能准备就绪后立即进行试用,请经常回来查看并了解新功能。

如果您想阅读以前 VS Code 版本的发行说明,请访问 code.visualstudio.com 上的更新页面。

© . This site is unofficial and not affiliated with Microsoft.