尝试以扩展 VS Code 中的代理模式!

2025 年 6 月 (版本 1.102)

发布日期:2025 年 7 月 9 日

下载:Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


欢迎来到 Visual Studio Code 2025 年 6 月版。此版本中有许多更新,希望您会喜欢,其中一些主要亮点包括:

  • 聊天

  • MCP

    • MCP 支持现已在 VS Code 中正式可用(显示更多)。
    • 通过 MCP 视图和库轻松安装和管理 MCP 服务器(显示更多)。
    • MCP 服务器作为配置文件和设置同步中的一流资源(显示更多)。
  • 编辑器体验

    • 将任务委托给 Copilot 编码代理,让它在后台处理(显示更多)。
    • 中键点击滚动编辑器(显示更多)。

如果您想在线阅读这些发布说明,请访问 code.visualstudio.com 上的“**更新**”。**内测版用户**:想尽快尝试新功能吗?您可以下载每晚发布的内测版构建,并在最新更新发布后立即试用。

聊天

Copilot Chat 开源

我们很高兴地宣布,我们已将 GitHub Copilot Chat 扩展开源!源代码现已在 microsoft/vscode-copilot-chat 下以 MIT 许可证发布。

这标志着我们在透明度和社区协作方面迈出了重要一步。通过开源此扩展,我们使社区能够:

  • 直接贡献 VS Code 中由 AI 驱动的聊天体验的开发
  • 理解 聊天模式、自定义指令和 AI 集成的**实现**
  • 在我们的工作基础上**构建**更优秀的 AI 开发工具
  • 参与塑造 AI 辅助编码的未来

您可以探索此仓库,了解代理模式、行内聊天MCP 集成等功能是如何实现的。我们欢迎社区的贡献、反馈和协作。

要了解有关此里程碑以及我们对开源 AI 编辑器工具的更广阔愿景,请阅读我们的详细博客文章:开源 AI 编辑器 - 首个里程碑

聊天模式改进

上一个里程碑,我们预览了自定义聊天模式。除了内置的“询问”、“编辑”和“代理”聊天模式外,您还可以定义自己的聊天模式,其中包含特定的指令和一组允许 LLM 在回复请求时遵循的工具。

在这个里程碑中,我们在此领域进行了一些改进和错误修复。

配置语言模型

根据普遍请求,您现在还可以指定聊天模式应使用的语言模型。将 model 元数据属性添加到您的 chatmode.md 文件中,并提供模型标识符(我们提供模型信息的 IntelliSense)。

Screenshot that shows the IntelliSense for the model metadata property in chat mode file.

改进的编辑支持

聊天模式提示指令文件的编辑器现在支持所有受支持元数据属性的补全、验证和悬停功能。

Screenshot that shows the hover information for tools.

Screenshot that shows the model diagnostics when a model is not available for a specific chat mode.

聊天视图中的齿轮菜单

聊天视图工具栏中的“**配置聊天**”操作允许您管理自定义模式以及可重用的指令、提示和工具集。

Screenshot that shows the Configure Chat menu in the Chat view.

选择“**模式**”将显示所有当前已安装的自定义模式,并允许您打开、创建新模式或删除模式。

您现在可以从外部链接(例如 gist)导入聊天模式文件。例如,以下链接将导入 Burke 的 GPT 4.1 Beast Mode 的聊天模式文件:

GPT 4.1 Beast Mode (VS Code)

这将提示您选择目标文件夹和模式名称,然后从链接中的 URL 导入模式文件。此机制也适用于提示和指令文件。

生成自定义指令

为您的项目设置自定义指令可以通过提供有关您的编码标准和项目约定的上下文来显著改善 AI 建议。然而,从头开始创建有效的指令可能具有挑战性。

在这个里程碑中,我们引入了“**聊天: 生成指令**”命令,以帮助您为工作区引导自定义指令。从命令面板或聊天视图中的“配置”菜单运行此命令,代理模式将分析您的代码库,生成反映项目结构、技术和模式的定制指令。

该命令会在您的 .github 文件夹中创建一个 copilot-instructions.md 文件,或建议改进现有指令文件。然后,您可以审查和自定义生成的指令,以匹配您团队的特定需求。

详细了解如何使用指令自定义 AI 响应

按需加载指令文件

指令文件可用于描述编码实践和项目要求。指令可以手动或自动作为上下文包含在聊天请求中。

支持多种机制,请参阅我们文档中的自定义指令部分。

对于您希望有条件地包含的较大指令,您可以将 .instructions.md 文件与 applyTo 头部中定义的 glob 模式结合使用。当 glob 模式匹配聊天上下文中的一个或多个文件时,该文件会自动添加。

此版本中的新功能是,大型语言模型可以按需加载指令。每个请求都会获得所有指令文件的列表,以及 glob 模式和描述。在此示例中,LLM 在上下文中没有显式添加 TypeScript 文件的指令。因此,它在创建 TypeScript 文件之前会查找代码样式规则。

Screenshot showing loading instruction files on demand.

编辑以前的请求(实验性)

您现在可以点击以前的请求来修改文本内容、附加上下文、模式和模型。提交此更改后,这将删除所有后续请求,撤消所做的任何编辑,并在聊天中发送新请求。

将会分阶段推出不同的请求编辑入口点,这将帮助我们收集关于优先编辑和撤销流程的反馈。但是,用户可以通过实验性的 chat.editRequests 设置来设置他们的首选模式。

  • chat.editRequests.inline:将鼠标悬停在请求上并选择文本,以在请求中开始行内编辑。
  • chat.editRequests.hover:将鼠标悬停在请求上,以显示一个工具栏,其中包含一个按钮,用于在请求中开始行内编辑。
  • chat.editRequests.input:将鼠标悬停在请求上,以显示一个工具栏,这将从聊天底部的输入框开始编辑。

终端自动批准(实验性)

代理模式现在有一种在终端中自动批准命令的机制。以下是使用默认设置的演示:

当前有两种设置:允许列表和拒绝列表。允许列表是命令**前缀**或正则表达式的列表,当匹配时允许命令无需明确批准即可运行。例如,以下设置将允许运行任何以 npm run test 开头的命令,以及精确匹配 git statusgit log 的命令。

"github.copilot.chat.agent.terminal.allowList": {
  "npm run test": true,
  "/^git (status|log)$/": true
}

这些设置会在设置范围之间合并,这样您就可以拥有一组用户批准的命令,以及工作区特定的批准命令。

对于链式命令,我们尝试根据 shell 检测这些情况,并要求所有子命令都获得批准。因此,对于 foo && bar,我们会检查 foobar 是否都允许,只有在那时才能无需批准运行。我们还尝试检测内联命令,例如 echo $(pwd),这将同时检查 echo $(pwd)pwd

拒绝列表的格式与允许列表相同,但会覆盖它并强制批准。目前这主要用于您在允许列表中有广泛条目,但想阻止其中可能包含的某些命令的情况。例如,以下设置将允许所有以 npm run 开头的命令,除非它们以 npm run danger 开头。

"github.copilot.chat.agent.terminal.allowList": {
  "npm run": true
},
"github.copilot.chat.agent.terminal.denyList": {
  "npm run danger": true
}

由于工作区信任机制为我们提供了抵御提示注入的保护,我们在实现此功能时的安全理念是在允许列表中包含一小部分无害命令,并在拒绝列表中包含一组特别危险的命令,以防它们意外通过。允许列表默认为空,因为我们仍在考虑默认值应该是什么,但以下是我们的想法:

  • 允许列表:echo, cd, ls, cat, pwd, Write-Host, Set-Location, Get-ChildItem, Get-Content, Get-Location
  • 拒绝列表:rm, rmdir, del, kill, curl, wget, eval, chmod, chown, Remove-Item

我们希望添加到此功能的两个主要部分是:一个更容易将新命令添加到列表的 UI 入口点(#253268)和允许 LLM 评估命令安全性的选择加入选项(#253267)。我们还计划在下个版本中,在这些设置成为预览设置之前,移除 github.copilot. 前缀(#253314)并将其合并(#253472)。

终端命令简化

代理模式有时会想要运行带有 cd 语句的命令,以防万一。我们现在检测当它与当前工作目录匹配时的情况,并简化所运行的命令。

Screenshot of the terminal, asking to run  only runs  when the current working directory already matches.

代理对任务和终端的感知

代理模式现在了解它创建了哪些后台终端以及哪些任务正在主动运行。代理可以使用新的 GetTaskOutput 工具读取任务输出,这有助于防止运行重复任务并改善工作区上下文。

Screenshot of VS Code window showing two build tasks running in the terminal panel. The left terminal displays several errors. The chat agent replies to describe status of my build tasks with a summary of each task's output.

最大化聊天视图

您现在可以将辅助侧边栏最大化,使其横跨编辑器区域并隐藏主侧边栏和面板区域。VS Code 会记住此状态,并在重启后恢复,当您打开编辑器或视图时也会恢复聊天视图。

您可以使用关闭按钮旁边的新图标切换最大化状态,或者从命令面板使用新命令 workbench.action.toggleMaximizedAuxiliaryBar

代理模式徽章指示器

当窗口未聚焦且代理需要用户确认才能继续时,我们现在会在 Dock 栏中的应用程序图标上显示一个徽章。一旦触发它的相关窗口获得焦点,徽章就会消失。

Screenshot of the VS Code dock icon showing an agent confirmation as a badge.

您可以通过 chat.notifyWindowOnConfirmation 设置启用或禁用此徽章。

从命令行启动聊天

VS Code CLI 中添加了一个新的子命令 chat,它允许您在当前工作目录中启动聊天会话,并提供提示。

基本语法是 code chat [options] [prompt],选项可以是以下任何一种:

  • -m --mode <mode>:用于聊天会话的模式。可用选项:“ask”、“edit”、“agent”或自定义模式的标识符。默认为“agent”。
  • -a --add-file <path>:将文件作为上下文添加到聊天会话。
  • --maximize:最大化聊天会话视图。
  • -r --reuse-window:强制使用上次活动的窗口进行聊天会话。
  • -n --new-window:强制打开一个空窗口进行聊天会话。

支持从标准输入读取,前提是您在末尾传入 -,例如 ps aux | grep code | code chat <prompt> -

Fetch 工具支持非 HTTP URL

我们发现,有时模型会希望使用非 HTTP URL(例如 file:// URL)调用 Fetch 工具。Fetch 工具现在支持这些 URL,并返回 URL 处文件或资源的内容,而不再阻止它们。也支持图片。

更清晰的语言模型访问管理

我们重新设计了管理扩展访问扩展提供的语言模型的用户体验。以前,您会在“账户”菜单中看到一个名为“`账户名 (GitHub Copilot Chat)`”的项,它与 GitHub Copilot Chat 使用哪个账户无关。相反,它允许您管理哪些扩展有权访问 Copilot Chat 提供的语言模型。

为了使其更清晰,我们已删除“`账户名 (GitHub Copilot Chat)`”项,并将其替换为名为“**管理语言模型访问...**”的新项。此项会打开一个快速选择器,使您能够管理哪些扩展有权访问 GitHub Copilot Chat 提供的语言模型。

Screenshot that shows the language model access Quick Pick.

我们认为这更清晰了……话虽如此,在未来的版本中,我们将探索更细粒度的语言模型访问控制(例如,只允许特定模型,而不是扩展提供的所有模型),敬请期待。

读取聊天请求

由于聊天扩展本身是开源的,您现在可以使用我们内部使用已久的一个调试工具。要轻松查看 Copilot Chat 发出的所有请求的详细信息,请运行“**显示聊天调试视图**”命令。这将显示一个树形视图,其中包含每个请求的条目。您可以查看发送到模型的完整提示、启用的工具、响应以及其他关键细节。您可以通过右键单击 > “导出为...”保存请求日志。

该视图还包含独立工具调用的条目,以及一个在简易浏览器中打开的 prompt-tsx 调试视图。

🚨 注意:此日志对于故障排除非常有帮助,如果您在提交有关代理行为的问题时共享它,我们将不胜感激。但是,此日志可能包含个人信息,例如文件内容或终端输出。请在与他人共享之前仔细审查内容。

编辑工具改进

此版本对用于 GPT-4 模型和 Sonnet 模型的编辑工具的可预测性和可靠性进行了多项更改。您应该会在此版本中看到更可靠的编辑行为,我们将在未来的版本中继续改进这些工具。

MCP

VS Code 中的 MCP 支持现已正式可用

过去几个月,我们一直致力于扩展 VS Code 中的 MCP 支持,并支持规范中的全部 MCP 功能。截至本版本,MCP 支持现已在 VS Code 中正式可用!

此外,组织现在可以使用 GitHub Copilot 策略控制 MCP 服务器的可用性。在 GitHub Copilot 文档中了解更多关于在您的企业中管理 Copilot 的策略和功能的信息。

您可以通过从我们精选列表中安装一些流行的 MCP 服务器来开始。了解更多关于在 VS Code 中使用 MCP 服务器以及如何使用它们来扩展代理模式的信息。

Screenshot that shows the MCP Servers page.

如果您想构建自己的 MCP 服务器,请查看我们的MCP 开发者指南,了解如何利用 VS Code 中的 MCP 功能的更多详细信息。

支持启发式询问

最新的 MCP 规范增加了对启发式询问 (Elicitations) 的支持,作为 MCP 服务器从 MCP 客户端请求输入的一种方式。最新版本的 VS Code 采用了此规范并包含了对启发式询问的支持。

MCP 服务器发现和安装

扩展视图中的新“**MCP 服务器**”部分包含欢迎内容,直接链接到我们精选列表中的热门 MCP 服务器。访问网站探索可用的 MCP 服务器,并在任何 MCP 服务器上选择“**安装**”。这会自动启动 VS Code 并打开 MCP 服务器编辑器,显示服务器的 readme 和清单信息。您可以查看服务器详细信息并选择“**安装**”以将服务器添加到您的 VS Code 实例。

安装后,MCP 服务器会自动出现在您的“扩展”视图的“**已安装的 MCP 服务器**”部分下,其工具在聊天视图的工具快速选择器中可用。这使得验证您的 MCP 服务器是否正常工作以及立即访问其功能变得容易。

MCP 服务器管理视图

“扩展”视图中的新“**已安装的 MCP 服务器**”视图使您可以轻松监控、配置和控制已安装的 MCP 服务器。

Screenshot showing the MCP Servers management view with installed servers.

该视图列出了已安装的 MCP 服务器,并通过上下文菜单提供了多项管理操作:

Screenshot showing the context menu actions for an MCP server.

  • **启动服务器** / **停止服务器** / **重启服务器**:控制服务器的运行状态
  • **断开帐户**:从服务器中移除帐户访问权限
  • **显示输出**:查看服务器的输出日志以进行故障排除
  • **显示配置**:打开服务器的运行时配置
  • **配置模型访问**:管理服务器可以访问哪些语言模型
  • **显示采样请求**:查看用于调试的采样请求
  • **浏览资源**:探索服务器提供的资源
  • **卸载**:从您的 VS Code 实例中移除服务器

当您选择一个已安装的 MCP 服务器时,VS Code 会打开 MCP 服务器编辑器,显示服务器的 readme 详细信息、清单及其运行时配置。这提供了服务器功能和当前设置的概述,使您能够轻松了解服务器的功能和配置方式。

Screenshot showing the MCP server editor with runtime configuration.

“**已安装的 MCP 服务器**”视图还提供“**浏览 MCP 服务器...**”操作,可直接带您访问社区网站,从而使您始终可以在 VS Code 内部访问服务器发现功能。

Screenshot that shows the Browse MCP Servers action in the MCP Servers view.

MCP 服务器作为一流资源

MCP 服务器现在在 VS Code 中被视为一流资源,类似于用户任务和其他配置文件特定的配置。这代表了相对于之前将 MCP 服务器存储在用户设置中的方法,一个显著的架构改进。此更改使得 MCP 服务器管理更加健壮,并在您的通用 VS Code 设置和 MCP 服务器配置之间提供了更好的关注点分离。当您安装或配置 MCP 服务器时,它们会自动存储在相应的配置文件特定位置,以确保您的主要设置文件保持整洁和专注。

  • **专用存储**:MCP 服务器现在存储在每个配置文件内的专用 mcp.json 文件中,而不是混杂在您的用户设置文件中。
  • **配置文件特定**:每个 VS Code 配置文件都维护自己的一组 MCP 服务器,使您能够为不同的工作流或项目拥有不同的服务器配置。
  • **设置同步集成**:MCP 服务器通过设置同步在您的设备之间无缝同步,并对同步内容进行精细控制。

MCP 迁移支持

随着 MCP 服务器成为一流资源及其配置的相应更改,VS Code 为从旧版 MCP 服务器配置格式升级的用户提供了全面的迁移支持:

  • **自动检测**:settings.json 中现有的 MCP 服务器会自动检测并迁移到新的配置文件特定 mcp.json 格式。
  • **实时迁移**:当您将 MCP 服务器添加到用户设置时,VS Code 会立即迁移它们,并显示一条有用的通知来解释此更改。
  • **跨平台支持**:迁移在所有开发场景中无缝工作,包括本地、远程、WSL 和 Codespaces 环境。

此迁移确保您现有的 MCP 服务器配置无需任何手动干预即可继续工作,同时提供了新架构的增强管理功能。

Dev Container 对 MCP 配置的支持

Dev Container 配置 devcontainer.json 和 Dev Container Feature 配置 devcontainer-feature.json 支持路径 customizations.vscode.mcp 处的 MCP 服务器配置。创建 Dev Container 时,收集到的 MCP 服务器配置会写入远程 MCP 配置文件 mcp.json

配置 Playwright MCP 服务器的 devcontainer.json 示例:

{
  "image": "mcr.microsoft.com/devcontainers/typescript-node:latest",

  "customizations": {
    "vscode": {
      "mcp": {
        "servers": {
          "playwright": {
            "command": "npx",
            "args": ["@playwright/mcp@latest"]
          }
        }
      }
    }
  }
}

访问 MCP 资源的命令

为了使使用 MCP 服务器更易访问,我们添加了命令来帮助您管理和访问 MCP 配置文件:

  • **MCP: 打开用户配置** - 直接访问您的用户级别 mcp.json 文件
  • **MCP: 打开远程用户配置** - 直接访问您的远程用户级别 mcp.json 文件

这些命令提供对 MCP 配置文件的快速访问,使您可以轻松直接查看和管理服务器配置。

MCP 身份验证的快速管理

您现在可以从 MCP 齿轮菜单和快速选择中注销或断开帐户连接。

  • MCP 视图齿轮菜单:Screenshot showing the Disconnect Account action shown in MCP view gear menu.

  • MCP 编辑器齿轮菜单:Screenshot showing the Disconnect Account action shown in MCP editor gear menu.

  • MCP 快速选择:Screenshot showing the Disconnect Account action shown in MCP quick pick menu.

当帐户被其他 MCP 服务器或扩展使用时,显示“**断开连接**”操作;当帐户仅被 MCP 服务器使用时,显示“**注销**”操作。注销操作会完全从 VS Code 中移除帐户,而断开连接仅会移除 MCP 服务器对该帐户的访问权限。

辅助功能

从编辑器内保留所有编辑

以前,要接受所有编辑,焦点需要位于聊天视图中。现在,当焦点在编辑器中时,您可以运行“**保留所有编辑**”命令(⌥⌘Y (Windows, Linux Ctrl+Alt+Y))。

需要用户操作的声音提示

我们对可访问性信号进行了微调,以指示聊天何时需要用户操作,并将其默认值设置为 auto,以便屏幕阅读器用户会听到此信号。您可以使用 accessibility.signals.chatUserActionRequired 设置来配置此行为。

聊天中发生渲染错误时发出警报

以前,当聊天渲染错误发生时,屏幕阅读器用户不会收到警报。现在,用户会收到此信息警报,并且可以通过键盘聚焦此信息。

代码编辑

中键点击滚动

设置:editor.scrollOnMiddleClick

通过简单地点击或按住鼠标中键(滚轮)并移动来滚动编辑器。

激活后,光标会变为平移图标,向上或向下移动鼠标会平滑地向该方向滚动编辑器。滚动速度由鼠标从初始点击点移动的距离决定。释放鼠标中键或再次点击可停止滚动并返回标准光标。

已知冲突

启用此功能可能会干扰与鼠标中键绑定的其他操作。例如,如果您启用了列选择(editor.columnSelection),按住鼠标中键会选择文本。类似地,在 Linux 上,当点击鼠标中键时,选择剪贴板(editor.selectionClipboard)会粘贴剪贴板中的内容。

为避免这些冲突,请一次只启用其中一个设置。

暂停代码补全

您现在可以使用新的“**暂停**”功能暂时暂停行内建议和下一个编辑建议 (NES)。这在您希望集中注意力而不受建议干扰时很有帮助。

要暂停建议,请在状态栏中选择 Copilot 面板,或从命令面板运行“**暂停行内建议**”命令,然后从下拉菜单中选择一个持续时间。在暂停期间,不会出现行内建议或 NES。

Screenshot showing the Copilot dashboard with the snooze button at the bottom.

您还可以分配自定义键绑定,通过将所需持续时间作为参数传递给命令来快速暂停指定持续时间的建议。例如:

{
  "key": "...",
  "command": "editor.action.inlineSuggest.snooze",
  "args": 10
}

编辑器体验

Windows 强调色

设置:window.border

如果在 Windows 设置中启用了“在标题栏和窗口边框上显示强调色”,则 Windows 上的 VS Code 现在支持将强调色用作窗口边框。

Screenshot of the VS Code window with a red accent color border.

新的 window.border 设置使您能够控制窗口边框的颜色。使用 default 来使用 Windows 强调色,off 来禁用边框,或者提供一个特定的颜色值来使用自定义颜色。

**注意**:边框仅在相关 Windows 设置启用时可见。目前尚无法按工作区设置,但我们正在开发此支持。

设置搜索建议(预览版)

设置:workbench.settings.showAISearchToggle

在这个里程碑中,我们修改了设置编辑器中的闪光切换按钮,使其充当 AI 搜索结果和非 AI 搜索结果之间的切换器。AI 设置搜索结果是语义相似的结果,而不是基于字符串匹配的结果。例如,当您搜索“增大文本大小”时,editor.fontSize 会作为 AI 设置搜索结果出现。

仅当有 AI 结果可用时,此切换器才启用。我们欢迎反馈 AI 设置搜索未找到预期设置的情况,并计划在下一次迭代中默认启用此设置。

任务

重新运行所有正在运行的任务

您现在可以使用新的“**任务: 重新运行所有正在运行的任务**”命令快速重新运行所有当前正在运行的任务。这对于涉及多个并发任务的工作流非常有用,允许您一次性重新启动所有任务,而无需单独停止和重新运行每个任务。

重新启动任务会重新加载更新的 tasks.json

“**重新启动任务**”命令现在会在重新启动前重新加载您的 tasks.json,确保任何最新更改都得到尊重。以前,在重新启动任务时不会读取任务配置更改,这可能导致混淆或过时的任务行为。

终端

终端建议(预览版)

我们对终端建议功能进行了重大改进。

选择模式

新设置 terminal.integrated.suggest.selectionMode 可帮助您了解,默认情况下,Tab(而不是 Enter)接受建议。您可以选择 partialalwaysnever 模式来控制建议的选取和接受方式。

默认值为 partial,这意味着 Tab 会接受建议,直到发生导航。

Screenshot showing the first terminal suggestion can be accepted with Tab.

了解更多

终端建议控件状态栏中的“**了解更多**”操作(kb(workbench.action.terminal.suggestLearnMore))现在在前 10 次显示或当控件显示 10 秒时会突出显示。这有助于您发现如何配置、禁用和了解建议控件。

Screenshot showing the Learn More action appears in the terminal suggest control status bar.

多命令支持

终端建议现在支持多命令行。您可以使用 ;&& 和其他 shell 运算符链接命令,并接收行中所有命令的建议。

Screenshot showing the VS Code terminal showing a multi-command line with git commit and git push, and the terminal suggest widget displaying suggestions for pull, push, and other git commands.

我们现在在建议详细信息控件中显示软链接的真实路径,并为软链接文件和文件夹提供独特的图标,以帮助将其与其他建议区分开来。

Screenshot showing the terminal suggest shows the symlink's path -> real path.

改进的排序

我们改进了排序,以便首先为您提供最相关的建议。例如,将 mainmaster 的优先级置于其他分支之上。

Screenshot showing the terminal suggest boosts main and master compared to other branch suggestions.

Git Bash 改进

我们现在正确支持 Git Bash 的文件夹和文件路径补全。此外,我们还会来源内置命令并将其作为建议呈现。

Screenshot showing a Git Bash terminal with suggestions for builtin functions like cat, cp, and curl.

对扩展的贡献

GitHub 拉取请求

GitHub Pull Requests 扩展取得了更多进展,该扩展使您能够处理、创建和管理拉取请求和问题。

GitHub Pull Requests 扩展与 Copilot 编码代理之间已实现更深层次的集成,允许您直接从 VS Code 中启动、查看和管理编码代理会话。

这些功能要求您的工作区已打开到已启用 Copilot 编码代理的仓库。

查看扩展 0.114.0 版本的变更日志,了解该版本中的所有内容。

状态跟踪

我们改进了“**Copilot on my behalf**”查询中编码代理拉取请求状态的通知和显着显示。现在,数字徽章会指示新的编码代理更改。

Screenshot showing status of multiple coding agent pull requests

会话日志

您现在可以直接在 VS Code 中查看编码代理会话的会话日志。这使您能够查看编码代理执行的操作历史,包括代码更改和工具使用。

Screenshot showing the session log of a coding agent session.

#activePullRequest 工具的增强功能

#activePullRequest 工具返回有关拉取请求的信息,例如其标题、描述和状态,以供聊天使用;现在您还可以使用它来获取编码代理会话信息。

当通过编码代理体验创建的拉取请求被打开时,此工具会自动附加到聊天中,这样您就可以保持上下文并在需要时继续处理拉取请求。

启动编码代理会话(预览版)

通过在聊天中调用 #copilotCodingAgent 工具,将本地更改的剩余部分委托给编码代理。

此工具会自动将待处理的更改推送到远程分支,并从该分支开始一个编码代理会话,同时包含用户的指令。

Screenshot showing handing off a session to the coding agent.

实验性:可以通过 githubPullRequests.codingAgent.uiIntegration 设置启用更深层次的 UI 集成。启用后,对于已启用编码代理的存储库,聊天视图中会出现一个新的“**委托给编码代理**”按钮。

Python

Python 环境扩展改进

Python 环境扩展在此版本中收到了多项改进:

  • 我们改进了对 Poetry 2.0.0 以上版本的终端激活支持。
  • 您现在可以使用“快速创建”环境创建选项来设置多个虚拟环境,这些环境在同一工作区内具有唯一的名称。
  • 生成的 .venv 文件夹现在默认会被 Git 忽略。
  • 我们改进了环境删除过程。

Python 环境作为 Python 扩展的一部分包含

我们开始将Python 环境扩展作为 Python 扩展的可选依赖项推出。这意味着您现在可能会看到 Python 环境扩展与 Python 扩展一起自动安装,类似于 Python Debugger 和 Pylance 扩展。这种受控的推出使我们能够在正式发布之前收集早期反馈并确保可靠性。

Python 环境扩展包括我们迄今为止引入的所有核心功能,包括:使用快速创建进行一键式环境设置、自动终端激活(通过 "python-envs.terminal.autoActivationType" 设置),以及所有支持的环境和包管理 UI

要在推出期间使用 Python 环境扩展,请确保已安装该扩展,并将以下内容添加到您的 VS Code settings.json 文件中:

"python.useEnvironmentsExtension": true

Python 3.13 的 PyREPL 已禁用

我们已禁用 Python 3.13 及更高版本的 PyREPL,以解决交互式终端中的缩进和光标问题。有关更多详细信息,请参阅禁用 PyREPL 用于 >= 3.13

Pylance MCP 工具(实验性)

Pylance 扩展现在包含几个实验性 MCP 工具,它们提供对 Pylance 文档、导入分析、环境管理等的访问。这些工具目前在 Pylance 预发布版本中可用,并且仍处于早期开发阶段。尽管它们提供了新功能,但我们知道目前直接调用它们可能具有挑战性。我们正在积极努力使这些工具在未来的更新中更易于使用且更有价值。随着我们不断改进体验,欢迎您在 pylance-release 仓库中提供反馈。

GitHub 身份验证

重新设计的 GitHub 登录流程

本次迭代中,我们重新设计了 GitHub 登录流程,默认采用回环 URL 流程,而不是使用 vscode:// 协议 URL 的流程。此更改旨在提高登录流程的可靠性,并确保其在所有平台(包括不支持自定义 URL 方案的平台)上都能正常工作。

当您使用 GitHub 登录时,您现在会被重定向到一个看起来像 https://:PORT/ 的回环 URL。这使得登录流程无需依赖自定义 URL 方案即可成功完成。话虽如此,一旦您到达回环 URL,您仍然会被重定向到 vscode:// URL 以返回 VS Code,但是此重定向并非登录流程成功完成所必需的。

换句话说,我们兼得两全其美:一个在所有平台上都可靠的登录流程,以及一个使用 vscode:// URL 方案返回 VS Code 的方式。

顺便说一句,我们还为这个登录页面换上了新装。在未来的迭代中,我们将把这种新设计应用于其他登录体验。

Screenshot showing the redesigned authentication landing page.

扩展开发

允许在使用 vscode.openFolder 命令时打开文件

调用 vscode.openFolder 命令的扩展现在可以将 filesToOpen?: UriComponents[] 作为选项传递,以选择要在打开的工作区窗口中打开的文件。

示例

vscode.commands.executeCommand('vscode.openFolder', <folder uri>, { filesToOpen: [ /* files to open */]});

提议的 API

工程

使用 esbuild 进行 CSS 最小化

VS Code 长期以来一直使用 esbuild 来捆绑和最小化 JavaScript 源代码。我们现在也使用 esbuild 来捆绑和最小化我们的 CSS 文件。

使用 tsconfig.json 进行严格分层检查

我们现在使用多个 tsconfig.json 文件来确保我们的源代码符合我们的目标环境规则。我们的 CI 会运行 npm run valid-layers-check,如果例如在浏览器层中添加了仅在 Node 运行时中存在的类型,则会使构建失败。

vscode-bisect 用于健全性测试

vscode-bisect 项目由来已久,它允许查找 VS Code 构建中的回归(类似于 git bisect 对 Git 所做的)。我们添加了一个新的 --sanity 选项,允许我们快速进行在发布新版本之前强制执行的健全性检查

值得注意的修复

感谢

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

问题跟踪

对我们问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-copilot-chat 的贡献

vscode-json-languageservice 的贡献

vscode-pull-request-github 的贡献

vscode-ripgrep 的贡献

vscode-test 的贡献

language-server-protocol 的贡献

monaco-editor 的贡献

ripgrep-prebuilt 的贡献