🚀 在 VS Code 中

2025 年 3 月 (版本 1.99)

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


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

  • 代理模式

    • 代理模式在 VS Code 稳定版中可用。通过设置 chat.agent.enabled 启用(更多...)。
    • 使用模型上下文协议 (MCP) 服务器工具扩展代理模式(更多...)。
    • 尝试代理模式中的新内置工具,用于获取 Web 内容、查找符号引用和深度思考(更多...)。
  • 代码编辑

    • 下一步编辑建议现已正式发布(更多...)。
    • 在编辑器中应用 AI 编辑时,减少诊断事件等干扰(更多...)。
  • 聊天

    • 使用您自己的 API 密钥在聊天中访问更多语言模型(预览)(更多...)。
    • 从统一的聊天体验中轻松切换询问、编辑和代理模式(更多...)。
    • 通过即时远程工作区索引体验改进的工作区搜索速度和准确性(更多...)。
  • 笔记本编辑

    • 像代码文件一样轻松创建和编辑笔记本,支持编辑和代理模式(更多...)。

如果您想在线阅读这些发行说明,请访问 更新,网址为 code.visualstudio.comInsider 用户:想要尽快试用新功能吗?您可以下载每晚构建的 Insider 版本,并在最新更新可用时立即试用。

聊天

代理模式在 VS Code 稳定版中可用

设置chat.agent.enabled

我们很高兴地宣布代理模式在 VS Code 稳定版中可用!通过设置 chat.agent.enabled 启用。在接下来的几周内,将不再需要启用此设置,因为我们将默认向所有用户推出启用。

查看代理模式文档或从聊天视图中的聊天模式选择器中选择代理模式。

Screenshot that shows the Chat view, highlighting agent mode selected in the chat mode picker.

模型上下文协议服务器支持

此版本在代理模式下支持模型上下文协议 (MCP) 服务器。MCP 为 AI 模型提供了一种标准化的方法,用于发现和与外部工具、应用程序和数据源进行交互。当您在 VS Code 中使用代理模式输入聊天提示时,模型可以调用各种工具来执行任务,例如文件操作、访问数据库或检索 Web 数据。这种集成实现了更动态和上下文感知的编码辅助。

MCP 服务器可以在用户、远程或 .code-workspace 设置的 mcp 部分下配置,或者在工作区的 .vscode/mcp.json 中配置。配置支持输入变量,以避免硬编码密钥和常量。例如,您可以使用 ${env:API_KEY} 引用环境变量,或使用 ${input:ENDPOINT} 在服务器启动时提示输入值。

您可以使用 MCP: 添加服务器 命令从命令行调用快速设置 MCP 服务器,或者使用从 Docker、npm 或 PyPI 发布的 MCP 服务器进行 AI 辅助设置。

添加新的 MCP 服务器后,聊天视图中会显示刷新操作,可用于启动服务器并发现工具。之后,服务器会按需启动以节省资源。

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

如果您已经在其他应用程序(例如 Claude Desktop)中使用 MCP 服务器,VS Code 将发现它们并提供为您运行它们。可以通过设置 chat.mcp.discovery.enabled 来切换此行为。

您可以使用 MCP: 列出服务器 命令查看 MCP 服务器列表及其当前状态,并通过使用代理模式下的 选择工具 按钮选择可在聊天中使用的工具。

您可以在我们的文档中阅读有关如何安装和使用 MCP 服务器的更多信息。

代理模式工具

在此里程碑中,我们向代理模式添加了几个新的内置工具。

思考工具(实验性)

设置github.copilot.chat.agent.thinkingTool

受到 Anthropic 研究的启发,我们在代理模式中添加了对思考工具的支持,该工具可用于让任何模型有机会在工具调用之间进行思考。这提高了我们的代理在产品内复杂任务和 SWE-bench 评估中的性能。

抓取工具

使用 #fetch 工具在您的提示中包含来自公开可访问网页的内容。例如,如果您想包含有关 MCP 等主题的最新文档,您可以要求抓取完整文档(方便 LLM 消费)并在提示中使用它。这是一个视频,展示了它可能的样子

在代理模式下,此工具会自动拾取,但您也可以在其他模式下通过 #fetch 显式引用它,以及您要抓取的 URL。

此工具的工作原理是在无头浏览器窗口中渲染网页,该页面的数据在本地缓存,因此您可以自由地反复要求模型抓取内容,而无需重新渲染的开销。

请告诉我们您如何使用 #fetch 工具,以及您希望看到哪些功能!

抓取工具限制

  • 目前,JavaScript 在此浏览器窗口中被禁用。如果网站完全依赖 JavaScript 来渲染内容,则该工具将无法获取太多上下文。这是一个我们正在考虑更改的限制,并且可能会更改以允许 JavaScript。
  • 由于无头性质,我们无法抓取需要身份验证的页面,因为此无头浏览器存在于与您使用的浏览器不同的浏览器上下文中。相反,请考虑使用 MCP 引入专为该目标构建的 MCP 服务器,或者通用浏览器 MCP 服务器,例如 Playwright MCP 服务器

用法工具

#usages 工具是“查找所有引用”、“查找实现”和“转到定义”的组合。此工具可以帮助聊天了解有关函数、类或接口的更多信息。例如,聊天可以使用此工具查找接口的示例实现,或查找在进行重构时需要更改的所有位置。

在代理模式下,此工具将自动拾取,但您也可以通过 #usages 显式引用它

使用代理模式创建新工作区(实验性)

设置github.copilot.chat.newWorkspaceCreation.enabled

您现在可以在 代理模式下搭建新的 VS Code 工作区。无论您是设置 VS Code 扩展、MCP 服务器还是其他开发环境,代理模式都可以帮助您使用必要的依赖项和设置初始化、配置和启动这些项目。

代理模式下的 VS Code 扩展工具

几个月前,我们最终确定了 VS Code 扩展贡献的语言模型工具的扩展 API。现在,您可以在代理模式下使用这些工具。

任何贡献给此 API 并在其配置中设置 toolReferenceNamecanBeReferencedInPrompt 的工具都会在代理模式下自动可用。

通过在扩展中贡献工具,它可以访问完整的 VS Code 扩展 API,并且可以通过扩展市场轻松安装。

与来自 MCP 服务器的工具类似,您可以使用代理模式下的 选择工具 按钮启用和禁用这些工具。请参阅我们的语言模型工具扩展指南来构建您自己的工具!

代理模式工具审批

作为完成用户提示任务的一部分,代理模式可以运行工具和终端命令。这很强大,但也可能存在风险。因此,您需要批准在代理模式下使用工具和终端命令。

为了优化此体验,您现在可以记住在会话、工作区或应用程序级别的批准。当前未为终端工具启用此功能,但我们计划在未来的版本中开发终端的审批系统。

Screenshot that shows the agent mode tool Continue button dropdown options for remembering approval.

如果您想自动批准所有工具,您现在可以使用实验性的 chat.tools.autoApprove 设置。这将自动批准所有工具,并且当语言模型希望运行工具时,VS Code 不会要求确认。请记住,启用此设置后,您将没有机会取消模型想要采取的潜在破坏性操作。

我们计划在未来扩展此设置,使其具有更精细的功能。

在 SWE-bench 上的代理评估

VS Code 的代理在 swebench-verified 上使用 Claude 3.7 Sonnet 实现了 56.0% 的通过率,这遵循了 Anthropic 关于在 SWE-bench 环境中配置代理以在没有用户输入的情况下执行的 研究。我们的实验已转化为改进的提示、工具描述和代理模式的工具设计,包括 Claude 3.5 和 3.7 Sonnet 模型分发的文件编辑新工具。

统一聊天视图

在过去的几个月中,我们有一个“聊天”视图用于向语言模型提问,以及一个“Copilot 编辑”视图用于 AI 驱动的代码编辑会话。本月,我们的目标是通过将两个视图合并为一个聊天视图来简化基于聊天的体验。在聊天视图中,您将看到一个包含三种模式的下拉列表

Screenshot that shows the chat mode picker in the Chat view.

  • 询问:这与之前的聊天视图相同。询问有关您的工作区或一般编码的问题,使用任何模型。使用 @ 调用内置聊天参与者或来自已安装扩展的参与者。使用 # 手动附加任何类型的上下文。
  • 代理:启动一个代理编码流程,其中包含一组工具,使其能够自主收集上下文、运行终端命令或采取其他操作来完成任务。代理模式已为所有 VS Code Insider 用户启用,我们正在向 VS Code 稳定版中的更多用户推出它。
  • 编辑:在编辑模式下,模型可以对多个文件进行定向编辑。附加 #codebase 以使其自动查找要编辑的文件。但它不会自动运行终端命令或执行任何其他操作。

注意:如果您在此列表中看不到代理模式,则可能是尚未为您启用,或者它已被组织策略禁用,需要由组织所有者启用。

除了简化您的聊天体验外,这种统一还为 AI 驱动的代码编辑启用了一些新功能

  • 在对话中间切换模式:例如,您可能在询问模式下开始集思广益一个应用程序的想法,然后切换到代理模式来执行计划。提示:按 ⌘. (Windows、Linux Ctrl+.) 快速更改模式。
  • 历史记录中的编辑会话:使用 显示聊天 命令(聊天视图顶部的时钟图标)来恢复过去的编辑会话并继续处理它们。
  • 将聊天移动到编辑器或窗口:选择 在新编辑器/新窗口中打开聊天,将您的聊天对话从侧边栏弹出到新的编辑器选项卡或单独的 VS Code 窗口。聊天长期以来一直支持此功能,但现在您也可以从编辑器窗格或单独的窗口运行您的编辑/代理会话。
  • 多个代理会话:从上面一点来看,这意味着您甚至可以同时运行多个代理会话。您可能希望在代理模式下进行一个聊天会话来处理实现功能,而另一个独立的会话用于进行研究和使用其他工具。不建议同时指导两个代理会话编辑文件,这可能会导致混淆。

自带密钥 (BYOK)(预览)

Copilot Pro 和 Copilot Free 用户现在可以为 Azure、Anthropic、Gemini、Open AI、Ollama 和 Open Router 等流行的提供商自带 API 密钥。这使您可以在新模型发布的第一天就使用 Copilot 本身不支持的新模型。

要试用它,请从模型选择器中选择 管理模型...。我们正在积极探索对 Copilot Business 和 Enterprise 客户的支持,并将在未来的版本中分享更新。要了解有关此功能的更多信息,请访问我们的文档

A screenshot of a "Manage Models - Preview" dropdown menu in a user interface. The dropdown has the label "Select a provider" at the top, with a list of options below it. The options include "Anthropic" (highlighted in blue), "Azure," "Gemini," "OpenAI," "Ollama," and "OpenRouter." A gear icon is displayed next to the "Anthropic" option.

可重用提示文件

改进的配置

设置chat.promptFilesLocations

chat.promptFilesLocations 设置现在支持文件路径中的 glob 模式。例如,要包含当前打开的工作区中的所有 .prompt.md 文件,您可以将路径设置为 { "**": true }

此外,配置现在尊重应用的文件系统上的大小写敏感性,与主机操作系统的行为保持一致。

改进的提示文件编辑

  • 您的 .prompt.md 文件现在为文件系统路径提供基本自动完成功能,并突出显示有效的文件引用。另一方面,断开的链接现在显示为警告或错误波浪线,并提供详细的诊断信息。
  • 您现在可以使用 聊天:使用提示 命令中的提示文件列表中的编辑和删除操作来管理提示。
  • 提示文件中的文件夹引用不再标记为无效。
  • Markdown 注释现在已得到正确处理,例如,在生成发送到 LLM 模型的最终提示时,所有注释掉的链接都会被忽略。

与自定义指令对齐

.github/copilot-instructions.md 文件现在的行为类似于任何其他可重用的 .prompt.md 文件,支持嵌套链接解析和增强的语言功能。此外,现在可以引用任何 .prompt.md 文件并对其进行适当处理。

了解有关自定义指令的更多信息。

用户提示

创建用户提示命令现在允许创建一种新的提示类型,称为用户提示。这些提示存储在用户数据文件夹中,并且可以跨机器同步,类似于代码片段或用户设置。可以在同步设置中通过使用同步资源列表中的 提示 项来配置同步。

改进的视觉支持(预览)

在上次迭代中,Copilot Vision 已为 GPT-4o 启用。查看我们的发行说明以了解有关如何在聊天中附加和使用图像的更多信息。

在此版本中,您可以从任何浏览器通过拖放附加图像。从浏览器拖放的图像必须具有正确的 url 扩展名,包括 .jpg.png.gif.webp.bmp

配置编辑器

统一聊天体验

我们已将 VS Code 中的聊天体验简化为单个统一的聊天视图。您现在可以轻松地在不同的聊天模式之间切换,而无需在单独的视图之间移动并丢失对话的上下文。

Screenshot that shows the chat mode picker in the Chat view.

根据您的场景,使用这些模式中的任何一种,并在对话中自由移动

  • 询问模式:针对询问有关您的代码库和集思广益的想法进行了优化。
  • 编辑模式:针对跨代码库中的多个文件进行编辑进行了优化。
  • 代理模式:针对自主编码流程进行了优化,结合了代码编辑和工具调用。

获取有关统一聊天视图的更多详细信息。

通过即时索引实现更快的工作区搜索

远程工作区索引加速了大型代码库中相关代码片段的搜索,AI 在回答问题和生成编辑时使用这些代码片段。这些远程索引对于包含数万甚至数十万个文件的大型代码库尤其有用。

以前,您必须按下一个按钮或运行命令来构建并开始使用远程工作区索引。借助我们新的即时索引支持,当您第一次尝试询问 #codebase/@workspace 问题时,我们现在会自动构建远程工作区索引。在大多数情况下,此远程索引可以在几秒钟内构建完成。构建完成后,您或任何其他在 VS Code 中使用该存储库的人员进行的任何代码库搜索都将自动使用远程索引。

请记住,远程工作区索引目前仅适用于存储在 GitHub 上的代码。要使用远程工作区索引,请确保您的工作区包含一个带有 GitHub 远程的 git 项目。您可以使用 Copilot 状态菜单查看当前正在使用的索引类型

Screenshot that shows the workspace index status in the Copilot Status Bar menu.

为了管理负载,我们将在未来几周内逐步推出即时索引,因此您可能不会立即看到它。当即时索引尚未为您启用时,您仍然可以运行 GitHub Copilot: 构建远程索引命令 命令来开始使用远程索引。

Copilot 状态菜单

从状态栏访问的 Copilot 状态菜单现已为所有用户启用。在此里程碑中,我们为其添加了一些新功能

  • 随时查看工作区索引状态信息。

    Screenshot that shows the workspace index status of a workspace in the Copilot menu.

  • 查看是否为活动编辑器启用了代码完成。

    新图标反映了状态,以便您可以快速查看是否启用了代码完成。

    Screenshot that shows the Copilot status icon when completions is disabled.

  • 启用或禁用代码完成和 NES

开箱即用的 Copilot 设置(实验性)

设置chat.setupFromDialog

我们正在推出一项实验性功能,以显示开箱即用的功能性聊天体验。这包括聊天视图、编辑器/终端内联聊天和快速聊天。首次发送聊天请求时,我们将引导您完成登录和注册 Copilot Free。

如果您想亲自体验此功能,请启用 chat.setupFromDialog 设置。

聊天预发布频道不匹配

如果您在 VS Code 稳定版中安装了 Copilot Chat 扩展的预发布版本,则新的欢迎屏幕会通知您不支持此配置。由于聊天功能的快速开发,该扩展程序不会在 VS Code 稳定版中激活。

欢迎屏幕提供了切换到扩展程序的发布版本或下载 VS Code Insiders 的选项。

Screenshot that shows the welcome view of chat, indicating that the pre-release version of the extension is not supported in VS Code stable. A button is shown to switch to the release version, and a secondary link is shown to switch to VS Code Insiders.

语义文本搜索改进(实验性)

设置github.copilot.chat.search.semanticTextResults

AI 驱动的语义文本搜索现在默认在搜索视图中启用。使用 ⌘I (Windows、Linux Ctrl+I) 键盘快捷键触发语义搜索,这将向您显示基于查询的最相关结果,以及常规搜索结果。

您还可以通过使用 #searchResults 工具在聊天提示中引用语义搜索结果。这使您可以要求 LLM 总结或解释结果,甚至根据结果生成代码。

设置编辑器搜索更新

默认情况下,设置编辑器搜索现在使用我们在上一个版本中引入的密钥匹配算法。即使设置 ID 与已知设置完全匹配,它也会显示其他设置。

主题:浅粉色(在 vscode.dev 上预览)

窗口控件的新设置 (Linux, Windows)

设置window.controlsStyle

如果您已将标题栏样式 (window.titleBarStyle) 设置为 custom,您现在可以在窗口控件的三种不同样式之间进行选择。

  • native:这是默认设置,并根据底层平台渲染窗口控件
  • custom:如果您喜欢自定义样式而不是原生样式,则使用自定义样式渲染窗口控件
  • hidden:如果您想在标题栏中获得一些空间并且是更以键盘为中心的用户,则完全隐藏窗口控件

代码编辑

下一步编辑建议正式发布

设置github.copilot.nextEditSuggestions.enabled

我们很高兴地宣布下一步编辑建议 (NES) 正式发布!此外,我们还对 NES 的整体用户体验进行了一些改进

  • 使编辑建议更紧凑、减少对周围代码的干扰,并且更易于一目了然地阅读。
  • 更新了装订线指示器,以确保所有建议都更容易被注意到。

AI 编辑改进

我们在使用 AI 生成编辑时进行了一些较小的调整

  • 在使用 AI 编辑重写文件时,静音编辑器外部的诊断事件。以前,我们已经在此场景中禁用了波浪线。这些更改减少了“问题”面板中的闪烁,并确保我们不会发出快速修复代码操作的请求。

  • 当您决定保留 AI 编辑时,我们现在会显式保存文件。

基于工具的编辑模式

设置chat.edits2.enabled

我们正在更改聊天中的编辑模式的运作方式。新的编辑模式使用与代理模式相同的方法,它允许模型调用工具来编辑文件。这种对齐的一个优点是,它使您可以在所有三种模式之间无缝切换,同时大大简化了这些模式在底层的工作方式。

缺点是这意味着新模式仅适用于与代理模式相同的缩减模型集,即支持工具调用并经过测试以确保我们在涉及工具时可以获得良好体验的模型。您可能会注意到编辑模式列表中缺少 o3-miniClaude 3.7 (Thinking) 等模型。如果您想继续使用这些模型进行编辑,请禁用 chat.edits2.enabled 设置以恢复到之前的编辑模式。切换模式时,系统会要求您清除会话。

我们了解到,在使用工具时,提示跨不同模型获得一致的结果更难,但我们正在努力使这些模型在编辑(和代理)模式下亮起。

此设置将逐步为 VS Code 稳定版中的用户启用。

内联建议语法突出显示

设置editor.inlineSuggest.syntaxHighlightingEnabled

在此更新中,内联建议的语法突出显示现在默认启用。请注意,在以下屏幕截图中,代码建议已应用语法着色。

Screenshot of the editor, showing that syntax highlighting is enabled for ghost text.

如果您喜欢没有语法突出显示的内联建议,则可以使用 editor.inlineSuggest.syntaxHighlightingEnabled 禁用它。

Screenshot of the editor showing that highlighting for ghost text is turned off.

基于 Tree-Sitter 的语法突出显示(预览)

设置editor.experimental.preferTreeSitter.csseditor.experimental.preferTreeSitter.regex

在之前使用 Tree-Sitter 进行语法突出显示的工作基础上,我们现在支持实验性的、基于 Tree-Sitter 的 CSS 文件语法突出显示和 TypeScript 中正则表达式的语法突出显示。

笔记本

Jupyter 笔记本文档的最低版本为 4.5

新笔记本的 nbformat 默认版本已从 4.2 提升到 4.5,这将为笔记本的每个单元格设置 id 字段,以帮助计算差异。您还可以通过在笔记本的原始 JSON 中将 nbformat_minor 设置为 5 来手动更新现有笔记本。

AI 笔记本编辑改进

对笔记本的 AI 驱动编辑支持(包括代理模式)现已在稳定版中提供。这是上个月作为 VS Code Insiders 的预览功能添加的。

您现在可以使用聊天编辑笔记本文件,获得与编辑代码文件相同的直观体验:跨多个单元格修改内容、插入和删除单元格以及更改单元格类型。此功能在处理数据科学或文档笔记本时提供了无缝工作流程。

新的笔记本工具

VS Code 现在提供了一个专用工具,用于直接从聊天创建新的 Jupyter 笔记本。此工具根据您的查询计划和创建新的笔记本。

在代理模式或编辑模式下使用新的笔记本工具(确保使用 chat.edits2.enabled 启用改进的编辑模式)。如果您使用的是询问模式,请在聊天提示中键入 /newNotebook 以创建新的笔记本。

浏览 AI 编辑

使用差异工具栏迭代和查看单元格之间的每个 AI 编辑。

撤消 AI 编辑

当焦点位于单元格容器上时,撤消命令会恢复笔记本级别的全套 AI 更改。

聊天中的文本和图像输出支持

您现在可以将笔记本单元格输出(例如文本、错误和图像)直接添加到聊天中作为上下文。这使您可以在使用询问、编辑或代理模式时引用输出,从而使语言模型更容易理解和协助您的笔记本内容。

使用 添加到聊天的单元格输出 操作,可通过三点菜单或右键单击输出获得。

将单元格错误输出作为聊天上下文附加

将单元格输出图像作为聊天上下文附加

辅助功能

聊天代理模式改进

现在,当工具调用期间需要手动操作时,您会收到通知,例如“在终端中运行命令”。此信息也包含在相关聊天响应的 ARIA 标签中,从而增强了屏幕阅读器用户的可访问性。

此外,代理模式中提供了一个新的辅助功能帮助对话框,解释了用户可以从该功能中获得什么以及如何有效地导航它。

聊天编辑操作的辅助功能信号

VS Code 现在在您保留或撤销 AI 生成的编辑时提供听觉信号。这些信号可以通过 accessibility.signals.editsKeptaccessibility.signals.editsUndone 进行配置。

改进了建议控件的 ARIA 标签

建议控件项的 ARIA 标签现在包含更丰富和更具描述性的信息,例如建议的类型(例如,方法或变量)。此信息以前仅供有视觉的用户通过图标获取。

源代码管理

参考选择器改进

设置git.showReferenceDetails

在这个里程碑中,我们改进了用于各种源代码控制操作(如检出、合并、变基或删除分支)的参考选择器。更新后的参考选择器包含最后一次提交的详细信息(作者、提交消息、提交日期),以及本地分支的超前/落后信息。这些额外的上下文将帮助您为各种操作选择正确的参考。

通过切换 git.showReferenceDetails 设置来隐藏附加信息。

Screenshot of the source control references picker showing a list of git branches with details of the last commit, and ahead/behind information.

存储库状态栏项

包含多个存储库的工作区现在有一个源代码控制提供程序状态栏项,该项将活动存储库显示在分支选择器的左侧。新的状态栏项提供额外的上下文,以便您在编辑器之间导航和使用源代码控制视图时知道哪个是活动存储库。

要隐藏源代码控制提供程序状态栏项,请右键单击状态栏,然后从上下文菜单中取消选择源代码控制提供程序

Screenshot showing the repository status bar item for workspaces that contain more than one repository.

Git 责备编辑器装饰改进

我们收到了反馈,即在键入时,“尚未提交”编辑器装饰没有提供太多价值,更多的是一种干扰。从这个里程碑开始,“尚未提交”编辑器装饰仅在您使用键盘或鼠标在代码库中导航时显示。

提交输入光标自定义

在这个里程碑中,感谢社区的贡献,我们已将 editor.cursorStyleeditor.cursorWidth 设置添加到源代码控制输入框所遵循的设置列表中。

终端

代理模式的可靠性

允许代理模式在终端中运行命令的工具在可靠性和兼容性方面进行了多项改进。您应该预期工具卡住或命令在没有输出的情况下完成的情况会减少。

更大的变化之一是引入了“丰富”质量 shell 集成 的概念,而不是“基本”和“无”。VS Code 附带的 shell 集成脚本通常都应启用丰富的 shell 集成,这在终端工具中运行(以及通常的终端使用)中提供最佳体验。您可以通过将鼠标悬停在终端选项卡上来查看 shell 集成质量。

终端 IntelliSense 改进(预览)

增强了 code CLI 的 IntelliSense

IntelliSense 现在支持 codecode-insiderscode-tunnel CLI 的子命令。例如,键入 code tunnel 会显示可用的子命令,如 helpkillprune,每个子命令都带有描述性信息。

Screenshot of the terminal window, showing code tunnel has been typed. The suggest widget shows subcommands like help, kill, prune, and others, with descriptions for each command.

我们还为以下选项添加了建议:

  • --uninstall-extension
  • --disable-extension
  • --install-extension

这些会显示已安装扩展的列表,以帮助完成命令。

Screenshot of the VSCode terminal with code --uninstall-extension. A list of available extensions is displayed, including vscode-eslint and editorconfig.

此外,code --locate-shell-integration-path 现在提供特定于 shell 的选项,例如 bashzshfishpwsh

Screenshot of the VSCode terminal showing a command input: code --locate-shell-integration-path with a dropdown menu listing shell options bash, fish, pwsh, and zsh.

全局命令自动刷新

当系统 bin 目录中检测到更改时,终端现在会自动刷新其全局命令列表。这意味着新安装的 CLI 工具(例如,在运行 npm install -g pnpm 后)将立即显示在完成列表中,而无需重新加载窗口。

以前,由于缓存,新工具的完成项不会出现,直到手动重新加载窗口。

选项值上下文

终端建议现在显示有关预期选项值的上下文信息,帮助您更轻松地完成命令。

Screenshot of the terminal showing a command in progress: npm install --omit. The terminal suggest widget displays  to indicate that's the option that's expected.

fish shell 的丰富完成

在上一个版本中,我们为 bash 和 zsh 添加了详细的命令完成。在此迭代中,我们已将该支持扩展到 fish。完成详细信息来自 shell 的文档或内置帮助命令。

例如,在 fish 中键入 jobs 会显示用法信息和选项

Screenshot of the Visual Studio Code Terminal with a fish terminal showing a user has typed jobs. The suggest widget shown provides information about the jobs command with detailed usage examples and options.

建议中的文件类型图标

终端中的建议现在包含不同文件类型的特定图标,从而可以更轻松地一目了然地区分脚本和二进制文件。

Screenshot of the terminal, showing suggestions for various script files, including code.sh, code-cli.sh, and code-server.js. Icons indicate the specific file type.

内联建议详细信息

内联建议(在终端中显示为幽灵文本)继续显示在建议列表的顶部。在此版本中,我们在这些条目中添加了命令详细信息,以便在接受它们之前提供更多上下文。

Screenshot of the terminal, showing the Block command as ghost text in the terminal. The first suggestion is block and it contains usage information.

新的简化和详细的选项卡悬停

默认情况下,终端选项卡现在显示的详细信息少得多。

Screenshot of the simple hover showing the terminal name, PID, command line, shell integration quality and actions

要查看所有内容,选项卡悬停底部有一个显示详细信息按钮。

Screenshot of the detailed hover showing extensions that contribute to the environment and detailed shell integration diagnostics

已签名的 PowerShell shell 集成

shell 集成 PowerShell 脚本现在已签名,这意味着在使用 RemoteSigned 的默认 PowerShell 执行策略时,Windows 上的 shell 集成现在应该自动开始工作。您可以在此处阅读有关 shell 集成的优势的更多信息。

终端 shell 类型

在此迭代中,我们最终确定了终端 shell API,允许扩展在其终端中查看用户的当前 shell 类型。订阅事件 onDidChangeTerminalState 允许您查看终端中用户 shell 类型的更改。例如,shell 可以从 zsh 更改为 bash。

当前可识别的所有 shell 的列表都在此处列出

远程开发

Linux 旧版服务器支持已结束

从 1.99 版本开始,您将无法再连接到这些服务器。正如我们在 1.97 版本中指出的那样,需要更多时间来完成迁移到受支持的 Linux 发行版的用户可以提供 glibclibstdc++ 的自定义构建作为解决方法。有关此解决方法的更多信息,请参见 FAQ 部分。

企业

macOS 设备管理

除了 Windows 之外,VS Code 现在还支持 macOS 上的设备管理。这允许系统管理员从集中管理系统(如 Microsoft Intune)推送策略。

有关更多详细信息,请参阅企业支持文档。

扩展的贡献

Python

更好地支持 Pylance 的可编辑安装

Pylance 现在支持解析以可编辑模式(pip install -e .)安装的软件包的导入路径,如 PEP 660 所定义,这在这些场景中实现了改进的 IntelliSense 体验。

此功能通过 python.analysis.enableEditableInstalls 启用,我们计划在本月开始将其作为默认体验推出。如果您遇到任何问题,请在 Pylance GitHub 存储库 中报告它们。

使用 Pylance 的更快、更可靠的诊断体验(实验性)

我们正在开始推出一项更改,以提高在使用扩展的发布版本时 Pylance 诊断的准确性和响应速度。这对于具有多个打开或最近关闭的文件的场景尤其有帮助。

如果您不想等待推出,可以设置 python.analysis.usePullDiagnostics。如果您遇到任何问题,请在 Pylance GitHub 存储库 中报告它们。

Pylance 自定义 Node.js 参数

有一个新的 python.analysis.nodeArguments 设置,允许您在使用 python.analysis.nodeExecutable 时将自定义参数直接传递给 Node.js。默认情况下,它设置为 "--max-old-space-size=8192",但您可以修改它以满足您的需求(例如,在处理大型工作区时为 Node.js 分配更多内存)。

此外,当将 python.analysis.nodeExecutable 设置为 auto 时,Pylance 现在会自动下载 Node.js。

扩展创作

Terminal.shellIntegration 调整

Terminal.shellIntegration API 现在仅在发生命令检测时才会亮起。以前,这应该在报告当前工作目录时起作用,这导致 TerminalShellIntegration.executeCommand 无法很好地工作。

此外,TerminalShellIntegration.executeCommand 现在将表现得更加一致,并跟踪单个命令行最终运行多个命令的多个“子执行”。这取决于代理模式的可靠性部分中提到的丰富 shell 集成。

建议的 API

任务问题匹配器状态

我们添加了 提议的 API,以便扩展可以监视任务的问题匹配器何时开始和完成处理行。使用 taskProblemMatcherStatus 启用它。

将图像发送到 LLM

在此迭代中,我们添加了一个 提议的 API,以便扩展可以附加图像并将视觉请求发送到语言模型。附件必须是图像的原始、非 base64 编码的二进制数据 (Uint8Array)。最大图像大小为 5MB。

查看 此 API 提案问题 以查看用法示例并及时了解此 API 的状态。

工程

使用 Marketplace 中的新 /latest API 检查扩展更新

在几个里程碑之前,我们在 vscode-unpkg 服务中引入了一个新的 API 端点,用于检查扩展更新。Marketplace 现在支持相同的端点,VS Code 现在正在使用此端点来检查扩展更新。这在实验之后,将分阶段推广给用户。

感谢您

最后但同样重要的是,衷心感谢 VS Code 的贡献者。

问题跟踪

对我们的问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-css-languageservice 的贡献

vscode-custom-data 的贡献

vscode-extension-samples 的贡献

vscode-extension-telemetry 的贡献

vscode-js-debug 的贡献

vscode-mypy 的贡献

vscode-prompt-tsx 的贡献

vscode-pull-request-github 的贡献

vscode-python-debugger 的贡献

vscode-test 的贡献

language-server-protocol 的贡献

python-environment-tools 的贡献