2025 年 3 月 (版本 1.99)
更新 1.99.1:本次更新解决了这些安全问题。
更新 1.99.2:本次更新解决了这些问题。
更新 1.99.3:本次更新解决了这些问题。
下载:Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2025 年 3 月版。此版本带来了许多我们希望您喜欢的新功能,主要亮点包括
-
代理模式
- 代理模式已在 VS Code Stable 版中可用。通过设置 chat.agent.enabled 来启用它 (更多...)。
- 使用模型上下文协议 (MCP) 服务器工具扩展代理模式 (更多...)。
- 试试代理模式中用于获取网页内容、查找符号引用和深度思考的新内置工具 (更多...)。
-
代码编辑
-
聊天
-
笔记本编辑
- 通过支持编辑模式和代理模式,像编辑代码文件一样轻松创建和编辑笔记本 (更多...)。
如果您想在线阅读这些发布说明,请访问 code.visualstudio.com 上的更新页面。Insiders:想尽快试用新功能吗?您可以下载每晚的 Insiders 版本,并在最新更新可用时立即试用。
聊天
代理模式已在 VS Code Stable 版中可用
我们很高兴地宣布,代理模式已在 VS Code Stable 版中可用!通过设置 chat.agent.enabled 来启用它。如果您没有看到此设置,请确保重新加载 VS Code。在接下来的几周内,随着我们默认向所有用户推出此功能,将不再需要手动启用此设置。
查看代理模式文档或在聊天视图中从聊天模式选择器中选择代理模式。
模型上下文协议服务器支持
此版本支持在代理模式中使用模型上下文协议 (MCP) 服务器。MCP 提供了一种标准化方法,使 AI 模型能够发现并与外部工具、应用程序和数据源交互。当您在 VS Code 中使用代理模式输入聊天提示时,模型可以调用各种工具来执行文件操作、访问数据库或检索网页数据等任务。这种集成支持更动态和上下文感知的编码协助。
MCP 服务器可以在用户、远程或 .code-workspace
设置中的 mcp
部分下配置,也可以在工作区中的 .vscode/mcp.json
文件中配置。配置支持输入变量以避免硬编码密钥和常量。例如,您可以使用 ${env:API_KEY}
引用环境变量,或使用 ${input:ENDPOINT}
在启动服务器时提示输入值。
您可以使用MCP: 添加服务器命令快速通过命令行调用设置 MCP 服务器,或使用 AI 辅助设置从发布到 Docker、npm 或 PyPI 的 MCP 服务器进行设置。
添加新的 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。现在,您可以在代理模式中使用这些工具。
配置中设置了 toolReferenceName
和 canBeReferencedInPrompt
并贡献给此 API 的任何工具都将自动在代理模式中可用。
通过在扩展中贡献工具,它可以访问完整的 VS Code 扩展 API,并且可以轻松地通过扩展市场安装。
与 MCP 服务器中的工具类似,您可以使用代理模式中的选择工具按钮启用或禁用这些工具。请参阅我们的语言模型工具扩展指南来构建您自己的工具!
代理模式工具批准
作为完成用户提示任务的一部分,代理模式可以运行工具和终端命令。这很强大,但也可能带来风险。因此,您需要在代理模式中批准使用工具和终端命令。
为了优化此体验,您现在可以记住在会话、工作区或应用程序级别的批准。目前终端工具尚未启用此功能,但我们计划在未来版本中为终端开发批准系统。
如果您想自动批准所有工具,现在可以使用实验性设置 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 模型的文件编辑新工具。
统一聊天视图
在过去几个月里,我们有一个用于向语言模型提问的“聊天”视图,以及一个用于 AI 辅助代码编辑会话的“Copilot 编辑”视图。本月,我们旨在通过将这两个视图合并到统一的聊天视图中来简化基于聊天的体验。在聊天视图中,您将看到一个包含三种模式的下拉菜单
- 提问模式:这与之前的聊天视图相同。使用任何模型提问有关您的工作区或一般编码的问题。使用
@
调用内置聊天参与者或从已安装的扩展中调用。使用#
手动附加任何类型的上下文。 - 代理模式:启动一种代理式编码流程,它带有一组工具,允许其自主收集上下文、运行终端命令或执行其他操作来完成任务。代理模式已为所有 VS Code Insiders 用户启用,并且我们正在向 VS Code Stable 版中越来越多的用户推出此功能。
- 编辑模式:在编辑模式下,模型可以对多个文件进行定向编辑。附加
#codebase
让它自动查找要编辑的文件。但它不会自动运行终端命令或执行其他任何操作。
注意:如果您在此列表中没有看到代理模式,可能是尚未为您启用,或者被组织策略禁用,需要由组织所有者启用。
除了简化您的聊天体验之外,此统一功能还为 AI 辅助代码编辑带来了一些新功能
- 在对话中途切换模式:例如,您可以在提问模式中开始头脑风暴应用创意,然后切换到代理模式来执行计划。提示:按下 ⌘.(Windows、Linux Ctrl+.)可快速更改模式。
- 历史记录中的编辑会话:使用显示聊天记录命令(聊天视图顶部的时钟图标)来恢复过去的编辑会话并继续处理它们。
- 将聊天移动到编辑器或窗口:选择在新编辑器/新窗口中打开聊天,将聊天对话从侧边栏弹出到新的编辑器标签页或单独的 VS Code 窗口中。聊天功能长期以来一直支持此功能,但现在您也可以从编辑器窗格或单独的窗口运行编辑/代理会话。
- 多个代理会话:根据上述观点,这意味着您甚至可以同时运行多个代理会话。您可能希望在一个聊天中以代理模式处理功能实现,而在另一个独立的会话中进行研究和使用其他工具。不建议同时指示两个代理会话编辑文件,这可能会导致混淆。
自带密钥 (BYOK)(预览)
Copilot Pro 和 Copilot Free 用户现在可以自带 API 密钥,以用于 Azure、Anthropic、Gemini、Open AI、Ollama 和 Open Router 等热门提供商。这使您可以在新模型发布的第一天就使用 Copilot 原生不支持的模型。
要试用此功能,请从模型选择器中选择管理模型...。我们正在积极探索对 Copilot Business 和 Enterprise 客户的支持,并将在未来版本中分享更新。要了解更多关于此功能的信息,请查阅我们的文档。
可重用提示文件
改进的配置
设置 chat.promptFilesLocations 现在支持文件路径中的 glob 模式。例如,要包含当前打开工作区中的所有 .prompt.md
文件,可以将路径设置为 { "**": true }
。
此外,配置现在尊重在适用文件系统上的大小写敏感性,与主机操作系统的行为保持一致。
改进的提示文件编辑
- 您的
.prompt.md
文件现在提供文件系统路径的基本自动补全功能,并高亮显示有效的文件引用。另一方面,损坏的链接现在显示为警告或错误波浪线,并提供详细的诊断信息。 - 您现在可以在聊天: 使用提示命令中的提示文件列表中使用编辑和删除操作来管理提示。
- 提示文件中的文件夹引用不再标记为无效。
- Markdown 注释现在得到正确处理,例如,生成发送给 LLM 模型的最终提示时,所有被注释掉的链接都会被忽略。
与自定义指令对齐
.github/copilot-instructions.md
文件现在与其他任何可重用的 .prompt.md
文件行为相同,支持嵌套链接解析和增强的语言功能。此外,现在可以引用任何 .prompt.md
文件并进行适当处理。
了解更多关于自定义指令的信息。
用户提示
创建用户提示命令现在允许创建一种新的提示类型,称为用户提示。这些提示存储在用户数据文件夹中,并且可以在不同机器之间同步,类似于代码片段或用户设置。同步可以在同步设置中使用同步资源列表中的提示项进行配置。
改进的视觉支持(预览)
上一个迭代,Copilot 视觉功能已为 GPT-4o
启用。查阅我们的发布说明,了解更多关于如何在聊天中附加和使用图片的信息。
此版本中,您可以通过拖放从任何浏览器附加图片。从浏览器拖放的图片必须具有正确的 URL 扩展名,包括 .jpg
、.png
、.gif
、.webp
或 .bmp
。
配置编辑器
统一聊天体验
我们已将 VS Code 中的聊天体验简化为单一的统一聊天视图。您无需在不同的视图之间切换并丢失对话上下文,现在可以轻松地在不同的聊天模式之间切换。
根据您的场景,使用以下任一模式,并在对话中自由切换
- 提问模式:优化用于提问有关代码库和头脑风暴想法。
- 编辑模式:优化用于对代码库中的多个文件进行编辑。
- 代理模式:优化用于自主编码流程,结合代码编辑和工具调用。
获取更多关于统一聊天视图的详细信息。
通过即时索引加快工作区搜索
远程工作区索引加快了搜索大型代码库中与 AI 回答问题和生成编辑时使用的相关代码片段的速度。这些远程索引对于拥有数万甚至数十万个文件的大型代码库尤其有用。
以前,您必须按下按钮或运行命令才能构建并开始使用远程工作区索引。通过我们新的即时索引支持,当您首次尝试提问 #codebase
/@workspace
相关问题时,我们现在会自动构建远程工作区索引。在大多数情况下,此远程索引可以在几秒钟内构建完成。构建完成后,您或任何其他在 VS Code 中使用该仓库的人进行的任何代码库搜索都将自动使用远程索引。
请记住,远程工作区索引目前仅适用于存储在 GitHub 上的代码。要使用远程工作区索引,请确保您的工作区包含一个带有 GitHub 远程仓库的 Git 项目。您可以使用Copilot 状态菜单查看当前正在使用的索引类型
为了管理负载,我们将在未来几周内缓慢推出即时索引,因此您可能不会立即看到它。如果即时索引尚未为您启用,您仍然可以运行 GitHub Copilot: 构建远程索引
命令开始使用远程索引。
Copilot 状态菜单
Copilot 状态菜单,可从状态栏访问,现已为所有用户启用。在此里程碑中,我们为此添加了一些新功能
开箱即用 Copilot 设置(实验性)
我们正在推出一项实验性功能,以提供开箱即用的功能性聊天体验。这包括聊天视图、编辑器/终端内联聊天和快速聊天。当您首次发送聊天请求时,我们将引导您完成登录和注册 Copilot Free 的流程。
如果您想亲自体验此功能,请启用设置 chat.setupFromDialog。
聊天预发布通道不匹配
如果在 VS Code Stable 版中安装了 Copilot Chat 扩展的预发布版本,新的欢迎屏幕将通知您此配置不受支持。由于聊天功能快速发展,此扩展在 VS Code Stable 版中将无法激活。
欢迎屏幕提供了切换到扩展的正式发布版本或下载VS Code Insiders 的选项。
语义文本搜索改进(实验性)
设置:github.copilot.chat.search.semanticTextResults
AI 驱动的语义文本搜索现在在搜索视图中默认启用。使用键盘快捷键 ⌘I(Windows、Linux Ctrl+I)触发语义搜索,它会根据您的查询显示最相关的结果,并显示在常规搜索结果的上方。
您还可以使用 #searchResults
工具在您的聊天提示中引用语义搜索结果。这使您可以要求 LLM 总结或解释结果,甚至根据结果生成代码。
设置编辑器搜索更新
默认情况下,设置编辑器搜索现在使用我们在上一版本中引入的键匹配算法。即使设置 ID 与已知设置完全匹配,它也会显示其他设置。
主题:Light Pink(在 vscode.dev 上预览)
窗口控件的新设置(Linux、Windows)
如果您已将标题栏样式 (window.titleBarStyle) 设置为 custom
,您现在可以在窗口控件的三种不同样式之间进行选择。
native
:这是默认样式,根据底层平台渲染窗口控件custom
:如果更喜欢自定义样式而不是原生样式,则使用自定义样式渲染窗口控件hidden
:如果您想在标题栏中获得一些空间并且是更倾向于使用键盘的用户,则完全隐藏窗口控件
代码编辑
下一编辑建议正式发布
设置:github.copilot.nextEditSuggestions.enabled
我们很高兴地宣布下一编辑建议 (NES) 正式发布!此外,我们还对 NES 的整体用户体验进行了一些改进
- 使编辑建议更紧凑,减少对周围代码的干扰,并更容易一目了然地阅读。
- 更新了行号区指示器,确保所有建议更容易被注意到。
AI 编辑改进
在使用 AI 生成编辑时,我们做了一些小的调整
-
在使用 AI 编辑重写文件时,静默编辑器外部的诊断事件。以前,在这种情况下我们已经禁用了波浪线。这些更改减少了“问题”面板的闪烁,并确保我们不会发出快速修复代码操作的请求。
-
当您决定保留 AI 编辑时,我们现在会显式保存文件。
基于工具的编辑模式
我们正在更改聊天中的编辑模式的运作方式。新的编辑模式使用与代理模式相同的方法,让模型调用工具来编辑文件。这种调整的好处在于,它使您可以在所有三种模式之间无缝切换,同时大大简化了这些模式在底层的工作方式。
一个缺点是,这意味着新模式仅适用于与代理模式相同的模型子集,即支持工具调用并经过测试确保在使用工具时能获得良好体验的模型。您可能会注意到 o3-mini
和 Claude 3.7 (Thinking)
等模型从编辑模式列表中消失了。如果您想继续使用这些模型进行编辑,请禁用设置 chat.edits2.enabled 以恢复到先前的编辑模式。切换模式时会要求您清除会话。
我们了解到,在使用工具时,跨不同模型获得一致结果的提示难度更大,但我们正在努力使这些模型支持编辑(和代理)模式。
此设置将逐步对 VS Code Stable 版用户启用。
内联建议语法高亮
设置: editor.inlineSuggest.syntaxHighlightingEnabled
本次更新默认启用内联建议的语法高亮显示。请注意,在下面的截图中,代码建议已应用语法着色。
如果您希望内联建议不带语法高亮显示,可以通过 editor.inlineSuggest.syntaxHighlightingEnabled 设置禁用它。
基于 Tree-Sitter 的语法高亮显示(预览)
设置: editor.experimental.preferTreeSitter.css 和 editor.experimental.preferTreeSitter.regex
基于之前使用 Tree-Sitter 进行语法高亮显示的工作,我们现在实验性地支持对 CSS 文件和 TypeScript 中正则表达式的基于 Tree-Sitter 的语法高亮显示。
笔记本
Jupyter notebook 文档的最低版本提升至 4.5
新 notebook 的默认 `nbformat` 版本已从 4.2 提升到 4.5,这将为 notebook 的每个单元格设置 `id` 字段,以帮助计算差异。您也可以通过在 notebook 的原始 JSON 中将 `nbformat_minor` 设置为 `5` 来手动更新现有 notebook。
AI notebook 编辑改进
notebook 的 AI 驱动编辑支持(包括代理模式)现已在 Stable 版本中提供。此功能已于上月作为预览功能添加到 VS Code Insiders 中。
您现在可以使用聊天来编辑 notebook 文件,其体验与编辑代码文件一样直观:修改跨多个单元格的内容、插入和删除单元格以及更改单元格类型。此功能在处理数据科学或文档 notebook 时提供了无缝的工作流程。
新 notebook 工具
VS Code 现在提供了一个专用工具,可以直接从聊天中创建新的 Jupyter notebook。此工具根据您的查询规划和创建新的 notebook。
在代理模式或编辑模式下使用新的 notebook 工具(请确保通过 chat.edits2.enabled 启用改进的编辑模式)。如果您使用询问模式,请在聊天提示中键入 /newNotebook
以创建新 notebook。
导航 AI 编辑
使用差异工具栏遍历和查看跨单元格的每个 AI 编辑。
撤销 AI 编辑
当焦点位于单元格容器上时,撤销 命令将恢复 notebook 级别的完整 AI 更改集。
聊天中的文本和图像输出支持
您现在可以将 notebook 单元格输出(例如文本、错误和图像)直接作为上下文添加到聊天中。这使您在使用询问、编辑或代理模式时可以引用输出,从而使语言模型更容易理解您的 notebook 内容并提供帮助。
使用将单元格输出添加到聊天操作,可通过省略号菜单或右键单击输出获取。
将单元格错误输出作为聊天上下文附件
将单元格输出图像作为聊天上下文附件
辅助功能
聊天代理模式改进
在工具调用期间(例如“在终端中运行命令”)需要手动操作时,您现在会收到通知。此信息也包含在相关聊天响应的 ARIA 标签中,从而增强了屏幕阅读器用户的辅助功能。
此外,代理模式中提供了新的辅助功能帮助对话框,解释了用户可以从此功能中获得什么以及如何有效导航。
聊天编辑操作的辅助功能信号
在保留或撤销 AI 生成的编辑时,VS Code 现在提供声音信号。这些信号可通过 accessibility.signals.editsKept 和 accessibility.signals.editsUndone 进行配置。
改进建议控件的 ARIA 标签
建议控件项的 ARIA 标签现在包含更丰富和描述性的信息,例如建议的类型(例如方法或变量)。此信息以前只能通过图标提供给有视力的用户。
源代码管理
引用选择器改进
在本里程碑中,我们改进了用于各种源代码控制操作(例如签出、合并、变基或删除分支)的引用选择器。更新后的引用选择器包含上次提交的详细信息(作者、提交消息、提交日期)以及本地分支的超前/落后信息。此附加上下文将帮助您为各种操作选择正确的引用。
通过切换 git.showReferenceDetails 设置隐藏附加信息。
存储库状态栏项
包含多个存储库的工作区现在有一个源代码控制提供程序状态栏项,显示分支选择器左侧的活动存储库。新的状态栏项提供了额外的上下文,以便您在编辑器之间导航和使用源代码控制视图时了解哪个是活动存储库。
要隐藏源代码控制提供程序状态栏项,右键单击状态栏,然后从上下文菜单中取消选择源代码控制提供程序。
Git blame 编辑器装饰改进
我们听取了反馈,发现键入时,“未提交”编辑器装饰没有多大价值,更多的是分散注意力。从本里程碑开始,“未提交”编辑器装饰仅在使用键盘或鼠标在代码库中导航时显示。
提交输入光标自定义
在本里程碑中,感谢社区贡献,我们将 editor.cursorStyle 和 editor.cursorWidth 设置添加到了源代码控制输入框遵循的设置列表中。
终端
代理模式下的可靠性
允许代理模式在终端中运行命令的工具具有多项可靠性和兼容性改进。您应该会遇到更少工具卡住或命令完成但没有输出的情况。
其中一个更大的变化是引入了“富”质量的Shell 集成概念,与“基本”和“无”相对。VS Code 附带的 Shell 集成脚本通常都应该启用富 Shell 集成,这在“在终端中运行”工具(以及一般的终端使用)中提供了最佳体验。您可以通过将鼠标悬停在终端选项卡上来查看 Shell 集成质量。
终端 IntelliSense 改进(预览)
增强 `code` CLI 的 IntelliSense
IntelliSense 现在支持 `code`、`code-insiders` 和 `code-tunnel` CLI 的子命令。例如,键入 `code tunnel` 会显示可用的子命令,例如 `help`、`kill` 和 `prune`,每个命令都有描述性信息。
我们还添加了选项建议:
--uninstall-extension
--disable-extension
--install-extension
这些选项显示已安装扩展的列表,以帮助完成命令。
此外,`code --locate-shell-integration-path` 现在提供 Shell 特定的选项,例如 `bash`、`zsh`、`fish` 和 `pwsh`。
全局命令自动刷新
当检测到系统 `bin` 目录发生更改时,终端现在会自动刷新其全局命令列表。这意味着新安装的 CLI 工具(例如,运行 `npm install -g pnpm` 后)将立即显示在补全项中,而无需重新加载窗口。
以前,新工具的补全项不会出现,因为缓存的存在,直到手动重新加载窗口才会显示。
选项值上下文
终端建议现在显示有关预期选项值的上下文信息,帮助您更轻松地完成命令。
Fish shell 的丰富补全项
在上一个版本中,我们添加了 bash 和 zsh 的详细命令补全项。本次迭代,我们将此支持扩展到 fish。补全项详细信息来自 Shell 的文档或内置帮助命令。
例如,在 fish 中键入 `jobs` 会显示用法信息和选项。
建议中的文件类型图标
终端中的建议现在包含不同文件类型的特定图标,使您可以一目了然地更轻松地区分脚本和二进制文件。
内联建议详细信息
内联建议以幽灵文本的形式显示在终端中,并继续显示在建议列表的顶部。在此版本中,我们向这些条目添加了命令详细信息,以便在接受它们之前提供更多上下文。
新的简化和详细选项卡悬停
默认情况下,终端选项卡现在显示的详细信息大大减少。
要查看所有内容,悬停底部有一个显示详细信息按钮。
已签名的 PowerShell Shell 集成
Shell 集成 PowerShell 脚本现已签名,这意味着在 Windows 上使用默认 PowerShell 执行策略 `RemoteSigned` 时,Shell 集成现在应该会自动开始工作。您可以在此处阅读有关Shell 集成优势的更多信息。
终端 Shell 类型
本次迭代,我们完成了终端 Shell API 的最终版本,允许扩展查看用户的当前 Shell 类型。订阅事件 `onDidChangeTerminalState` 可以看到用户终端中 Shell 类型的变化。例如,Shell 可能从 zsh 更改为 bash。
所有可识别的 Shell 列表当前列在此处。
远程开发
Linux 旧版服务器支持已终止
自 1.99 版本起,您无法再连接到这些服务器。如我们在1.97 版本发布中所述,需要额外时间完成迁移到受支持 Linux 发行版的用户可以提供自定义构建的 `glibc` 和 `libstdc++` 作为变通方法。有关此变通方法的更多信息,请参阅常见问题部分。
企业版
macOS 设备管理
VS Code 现在除 Windows 外,还支持 macOS 上的设备管理。这允许系统管理员从集中式管理系统(例如 Microsoft Intune)推送策略。
有关详细信息,请参阅企业支持文档。
对扩展的贡献
Python
更好支持 Pylance 的可编辑安装
Pylance 现在支持解析按 PEP 660 定义的可编辑模式 (`pip install -e .`) 安装的包的导入路径,这在此类场景中提供了改进的 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
任务问题匹配器状态
我们添加了Proposed API,以便扩展可以监视任务的问题匹配器何时开始和完成处理行。使用 taskProblemMatcherStatus
启用它。
将图像发送到 LLM
本次迭代,我们添加了Proposed API,以便扩展可以附加图像并向语言模型发送视觉请求。附件必须是图像的原始、非 base64 编码的二进制数据(Uint8Array
)。最大图像大小为 5MB。
查看此 API 提案问题以查看用法示例并及时了解此 API 的状态。
工程
使用 Marketplace 的新 `/latest` API 检查扩展更新
几个里程碑前,我们在 `vscode-unpkg` 服务中引入了一个新的 API 端点来检查扩展更新。Marketplace 现在支持相同的端点,并且 VS Code 现在正在使用此端点来检查扩展更新。这处于一项实验之后,并将分阶段向用户推出。
感谢
最后但同样重要的是,衷心感谢 VS Code 的贡献者。
问题跟踪
对我们问题跟踪的贡献
- @gjsjohnmurray (John Murray)
- @albertosantini (Alberto Santini)
- @IllusionMH (Andrii Dieiev)
- @RedCMD (RedCMD)
拉取请求
对 vscode
的贡献
- @a-stewart (Anthony Stewart): Add a 2 hour offset to tests to avoid being a day short after the clocks change PR #243194
- @acdzh (Vukk): Fix hasEdits flag's value when updating multiple values in JSONEditingService PR #243876
- @c-claeys (Cristopher Claeys): Increment the request attempt in the chat retry action PR #243471
- @ChaseKnowlden (Chase Knowlden): Add Merge Editor Accessibility help PR #240745
- @dibarbet (David Barbet): Update C# onEnterRules to account for documentation comments PR #242121
- @dsanders11 (David Sanders): Fix a few broken
@link
in vscode.d.ts PR #242407 - @jacekkopecky (Jacek Kopecký): Honor more cursor settings in scm input editor PR #242903
- @joelverhagen (Joel Verhagen): Show support URL and license URL even if extension URL is not set PR #243565
- @kevmo314 (Kevin Wang): Fix comment typo PR #243145
- @liudonghua123 (liudonghua): support explorer.copyPathSeparator PR #184884
- @mattmaniak: Make telemetry info table a little bit narrower and aligned PR #233961
- @notoriousmango (Seong Min Park)
- fix: use the copy command for images with CORS errors in the markdown preview PR #240508
- Fix Incorrect character indentation on settings with line break PR #242074
- @pprchal (Pavel Prchal): Added localization to right-click on icon PR #243679
- @SimonSiefke (Simon Siefke): feature: support font family picker in settings PR #214572
- @tribals (Anthony): Add discovery of PowerShell Core user installation PR #243025
- @tusharsadhwani (Tushar Sadhwani): Make
git show
ref argument unambiguous PR #242483 - @wszgrcy (chen): fix: extension uncaughtException listen Maximum call stack size exceeded PR #244690
- @zyoshoka (zyoshoka): Correct
typescript-basics
extension path PR #243833
对 vscode-css-languageservice
的贡献
- @lilnasy (Arsh): Support
@starting-style
PR #421
对 vscode-custom-data
的贡献
- @rviscomi (Rick Viscomi): Add computed Baseline status PR #111
对 vscode-extension-samples
的贡献
- @ratmice (matt rice): Fix esbuild scripts PR #1154
对 vscode-extension-telemetry
的贡献
- @minestarks (Mine Starks): Remove extra brace from common.platformversion PR #221
对 vscode-js-debug
的贡献
- @erikson84 (Erikson Kaszubowski): fix: ensure backslash in path when setting breakpoints in windows PR #2184
- @xymopen (xymopen_Official): Support usenode as npm script runner PR #2178
对 vscode-mypy
的贡献
- @ivirabyan (Ivan Virabyan): Report only files specified by mypy config PR #352
对 vscode-prompt-tsx
的贡献
- @dsanders11 (David Sanders): docs: fix sendRequest API name in README example PR #159
- @tamuratak (Takashi Tamura)
对 vscode-pull-request-github
的贡献
- @aedm (Gábor Gyebnár): Adds
sanitizedLowercaseIssueTitle
to settings docs PR #6690
对 vscode-python-debugger
的贡献
- @rchiodo (Rich Chiodo): Update debugpy to latest version PR #653
对 vscode-test
的贡献
- @SKaplanOfficial (Stephen Kaplan): fix: avoid 'Invalid extraction directory' when unzipping PR #303
对 language-server-protocol
的贡献
- @MariaSolOs (Maria José Solano): Update range formatting capabilities in metamodel PR #2106
对 python-environment-tools
的贡献
- @CharlesChen0823: bump winreg PR #195
- @elprans (Elvis Pranskevichus)