2025 年 4 月 (版本 1.100)
发布日期:2025 年 5 月 8 日
下载:Windows:x64 Arm64 | Mac:Universal Intel silicon | Linux:deb rpm tarball Arm snap
欢迎来到 Visual Studio Code 的 2025 年 4 月发布。此版本中有许多您可能会喜欢的更新,一些主要亮点包括
-
聊天
-
聊天性能
-
编辑器体验
如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新页面。Insiders 版:想尽快试用新功能吗?您可以下载每日构建的 Insiders 版本,并在最新更新可用时立即试用。
聊天
提示文件和指令文件
您可以使用基于 Markdown 的指令文件和提示文件,根据您的特定编码实践和技术栈调整 VS Code 中的 AI 体验。我们已统一了这两个相关概念的实现和用法,但它们各自具有不同的目的。
指令文件
设置:chat.instructionsFilesLocations
指令文件(也称为自定义指令或规则)提供了一种在 Markdown 文件中描述 AI 模型的通用指南和上下文的方法,例如代码样式规则或要使用的框架。指令文件不是独立的聊天请求,而是提供可以应用于聊天请求的上下文。
指令文件使用 .instructions.md
文件后缀。它们可以位于用户数据文件夹或工作区中。chat.instructionsFilesLocations 设置列出了包含指令文件的文件夹。
您可以手动将指令附加到特定的聊天请求中,或者它们可以自动添加
-
要手动添加它们,请使用“聊天”视图中的添加上下文按钮,然后选择指令...。或者,也可以从命令面板中使用聊天:附加指令...命令。这将弹出一个选择器,允许您选择现有的指令文件或创建一个新的进行附加。
-
要自动将指令添加到提示中,请在指令文件中添加
applyTo
Front Matter 头部,以指示指令适用于哪些文件。如果聊天请求包含与给定 glob 模式匹配的文件,则会自动附加指令文件。以下示例提供了适用于 TypeScript 文件 (
applyTo: '**/*.ts'
) 的指令--- applyTo: '**/*.ts' --- Place curly braces on separate lines for multi-line blocks: if (condition) { doSomething(); } else { doSomethingElse(); }
您可以使用聊天:新建指令文件...命令创建指令文件。此外,在用户数据文件夹中创建的文件可以通过设置同步服务自动在多台用户机器之间同步。请务必在备份和同步设置...对话框中勾选提示和指令选项。
在我们的文档中了解有关指令文件的更多信息。
提示文件
提示文件描述一个独立的、完整的聊天请求,包括提示文本、聊天模式和要使用的工具。提示文件对于为常见任务创建可重用聊天请求非常有用。例如,您可以添加一个用于创建前端组件的提示文件,或用于执行安全审查。
提示文件使用 .prompt.md
文件后缀。它们可以位于用户数据文件夹或工作区中。chat.promptFilesLocations 设置列出了查找提示文件的文件夹。
有几种方法可以运行提示文件
-
在聊天输入字段中键入
/
,后跟提示文件名。 -
在编辑器中打开提示文件,然后按编辑器工具栏中的“播放”按钮。这使您可以快速迭代提示并运行它,而无需切换回“聊天”视图。
-
从命令面板中使用聊天:运行提示文件...命令。
提示文件可以包含以下 Front Matter 元数据头部,以指示应如何运行它们
mode
:调用提示时使用的聊天模式(ask
、edit
或agent
模式)。tools
:如果mode
是agent
,则列出可用于提示的工具。
以下示例展示了一个用于生成发行说明的提示文件,该文件在代理模式下运行,并且可以使用一组工具
---
mode: 'agent'
tools: ['getCurrentMilestone', 'getReleaseFeatures', 'file_search', 'semantic_search', 'read_file', 'insert_edit_into_file', 'create_file', 'replace_string_in_file', 'fetch_webpage', 'vscode_search_extensions_internal']
---
Generate release notes for the features I worked in the current release and update them in the release notes file. Use [release notes writing instructions file](.github/instructions/release-notes-writing.instructions.md) as a guide.
要创建提示文件,请从命令面板中使用聊天:新建提示文件...命令。
在我们的文档中了解有关提示文件的更多信息。
改进和说明
- 指令和提示文件现在拥有自己的语言 ID,可以在任何打开文档的语言模式对话框中进行配置(分别为“Prompt”和“Instructions”)。例如,这允许在将未命名文档保存为文件之前,将其用作临时提示文件。
- 我们将聊天:使用提示命令重命名为聊天:运行提示。此外,该命令现在会立即运行选定的提示,而不是像以前那样将其作为聊天上下文附加。
- 两种文件类型现在都支持其头部中的
description
元数据,为简短且用户友好的提示摘要提供了通用位置。将来,计划将此头部与applyTo
头部一起用作确定文件是否需要自动包含在聊天请求中的规则(例如,description: '使用 TypeScript 编写的前端组件的代码样式规则。'
)
代理模式编辑速度更快
我们在代理模式下实现了对 OpenAI 的 apply patch 编辑格式(GPT 4.1 和 o4-mini)以及 Anthropic 的 replace string 工具(Claude Sonnet 3.7 和 3.5)的支持。这意味着您可以从显著更快的编辑中受益,尤其是在大型文件中。
对 OpenAI 模型的更新默认在 VS Code Insiders 中启用,并逐步向 Stable 版本推出。Anthropic 的更新对 Stable 和 Insiders 版本的所有用户都可用。
聊天中的基础模型
我们正在逐步将 GPT-4.1 作为 VS Code 聊天中的默认基础模型推出。您可以随时使用“聊天”视图中的模型切换器切换到其他模型。
使用 #githubRepo
工具搜索 GitHub 仓库的代码
想象一下,您需要询问有关 GitHub 仓库的问题,但您没有在编辑器中打开它。例如,您想知道 microsoft/vscode
仓库中某个特定函数是如何实现的。
您现在可以使用 #githubRepo
工具在您有权访问的任何 GitHub 仓库中搜索代码片段。此工具将 user/repo
作为额外输入。例如,“如何在 TS 中实现工厂模式 #githubRepo microsoft/vscode”。
您还可以使用自定义指令来提示何时以及如何使用此工具,如下例所示
---
applyTo: '**'
---
Use the `#githubRepo` tool with `microsoft/vscode` to find relevant code snippets in the VS Code codebase.
Use the `#githubRepo` tool with `microsoft/typescript` to answer questions about how TypeScript is implemented.
如果您想询问您当前正在处理的仓库,您可以使用#codebase
工具。
此外,#githubRepo
工具仅用于搜索相关的代码片段。GitHub MCP 服务器提供了处理 GitHub issue 和 pull request 的工具。了解更多关于在 VS Code 中添加 MCP 服务器的信息。
使用扩展工具查找 Marketplace 扩展
在聊天中使用扩展工具(#extensions
)从 Marketplace 中查找扩展。根据您的聊天提示,该工具会自动调用,或者您可以在提示中显式引用它,例如 #extensions
。该工具会返回与您的查询匹配的扩展列表。您可以直接从结果中安装扩展。
网页抓取工具的改进
上个月,我们推出了抓取工具(#fetch
),用于直接从聊天中检索网页内容,并将其作为提示的上下文包含进去。如果您错过了该发行说明,请查看抓取工具的初次发布发行说明和示例。
在本次迭代中,我们对该工具进行了几项重大更改,包括
- 整个页面作为上下文:我们现在将整个页面作为上下文添加,而不是仅添加一部分。随着上下文窗口的增大,我们能够将整个页面提供给模型。例如,现在可以提出需要尽可能多地利用页面内容的摘要问题。如果您确实填满了上下文窗口,抓取工具会智能地排除页面中不那么相关的部分。这样,您既不会超出上下文窗口限制,又能保留重要部分。
- 标准化的页面格式 (Markdown):以前,我们使用自定义的分层格式格式化抓取的网页,虽然能完成任务,但由于其自定义性质,有时难以理解。我们现在将抓取的网页转换为 Markdown,这是一种标准化的语言。这提高了相关性检测的可靠性,并且大多数语言模型都对 Markdown 非常熟悉,因此它们更容易理解。
我们很想听听您如何使用抓取工具,以及您希望看到它具备哪些功能!
聊天输入改进
我们对聊天输入框进行了一些改进
- 附件:当您在提示文本中使用
#
引用上下文时,它们现在也会显示为附件小圆点。这使得更容易理解发送给语言模型的内容。 - 上下文选择器:我们简化了上下文选择器,使其更容易选择文件、文件夹和其他附件类型。
- 完成按钮:我们听取了您关于“完成”按钮的反馈,并将其移除!不再因意外的会话结束而感到困惑。现在,我们只在您创建新的聊天时启动新会话 (⌃L (Windows, Linux Ctrl+L))。
聊天模式键盘快捷方式
键盘快捷方式 ⌃⌘I (Windows, Linux Ctrl+Alt+I) 仍然仅打开“聊天”视图,但快捷方式 ⇧⌘I (Windows Ctrl+Shift+I, Linux Ctrl+Shift+Alt+I) 现在打开“聊天”视图并切换到代理模式。如果您想为其他聊天模式设置键盘快捷方式,每种模式都有一个命令
workbench.action.chat.openAgent
workbench.action.chat.openEdit
workbench.action.chat.openAsk
代理模式编辑的诊断自动修复
设置:github.copilot.chat.agent.autoFix
如果代理模式下的文件编辑引入了新的错误,代理模式现在可以检测到它们,并自动提出后续编辑建议。这意味着您无需发送后续提示来要求代理模式修复任何错误。您可以使用 github.copilot.chat.agent.autoFix 禁用此行为。
代理模式中撤消和手动编辑的处理
以前,在代理模式会话期间进行手动编辑可能会使模型感到困惑。现在,代理会收到有关您更改的提示,并在必要时重新读取文件,然后再编辑可能已更改的文件。
会话摘要和提示缓存
我们对构建代理模式提示的方式进行了一些更改,以优化提示缓存。提示缓存是一种通过维护提示的稳定前缀来加快模型响应速度的方法。下一个请求可以从该前缀继续,从而使每个请求都更快一点。这在具有大上下文的重复请求系列中特别有效,就像您通常在代理模式中遇到的那样。
当您的对话变长或上下文变得非常大时,您可能会在代理模式会话中看到“已总结的会话历史记录”消息
我们不会将整个对话保留为 FIFO,从而破坏缓存,而是将目前的对话压缩为最重要的信息和当前任务状态的摘要。这保持了提示前缀的稳定,并加快了您的响应速度。
MCP 对可流式 HTTP 的支持
此版本增加了对模型上下文协议服务器的新可流式 HTTP 传输的支持。可流式 HTTP 服务器的配置方式与现有 SSE 服务器相同,并且我们的实现向后兼容 SSE 服务器
{
"servers": {
"my-mcp-server": {
"url": "http://localhost:3000/mcp"
}
}
}
了解更多关于VS Code 中的 MCP 支持。
MCP 对图像输出的支持
我们现在支持生成图像作为其工具输出一部分的 MCP 服务器。
请注意,并非所有语言模型都支持从工具输出读取图像。例如,虽然 GPT-4.1 具有视觉能力,但目前不支持从工具读取图像。
增强了 MCP 服务器的输入、输出和进度显示
我们增强了显示 MCP 服务器工具输入和输出的 UI,并增加了对 MCP 新的进度消息的支持。
主题:Codesong(在 vscode.dev 上预览)
MCP 配置生成使用输入
为了帮助保护您的密钥安全,由MCP:添加服务器命令生成的 AI 辅助配置现在会为任何密钥生成 inputs
,而不是将其内联到生成的配置中。
内联聊天 V2(预览)
我们一直在开发内联聊天 ⌘I (Windows, Linux Ctrl+I) 的改进版本。其主题仍然是“将聊天融入代码”,但在幕后,它使用了与聊天编辑相同的逻辑。这意味着能更好地利用可用上下文和更好的代码编辑策略。您可以通过 inlineChat.enableV2 启用内联聊天 v2。
此外,现在还可以选择启用更轻量级的 UX。通过 inlineChat.hideOnRequest 设置,内联聊天会在请求发出后立即隐藏。然后它会最小化到聊天编辑覆盖层,该覆盖层可以接受或放弃更改,或恢复内联聊天控件。
选择并将 UI 元素附加到聊天(实验性)
设置:chat.sendElementsToChat.enabled
在开发 Web 应用程序时,您可能想就网页的特定 UI 元素向聊天提问。您现在可以使用内置的 Simple Browser 将 UI 元素作为上下文附加到聊天中。
通过内置的 Simple Browser(使用Simple Browser:显示命令启动它)打开任何本地托管的站点后,现在会显示一个新工具栏,您可以在其中选择开始来选择您想要的站点中的任何元素。这将附加所选元素的屏幕截图以及该元素的 HTML 和 CSS。
配置附加到聊天的内容,使用
- chat.sendElementsToChat.attachCSS:启用或禁用附加关联的 CSS
- chat.sendElementsToChat.attachImages:启用或禁用附加所选元素的屏幕截图
此实验性功能默认对所有 Simple Browser 启用,但可以使用 chat.sendElementsToChat.enabled 禁用。
在代理模式下创建和启动任务(实验性)
设置:github.copilot.chat.newWorkspaceCreation.enabled
在上一个版本中,我们引入了 github.copilot.chat.newWorkspaceCreation.enabled(实验性)设置,以启用使用代理模式创建工作区。
现在,在此创建流程结束时,系统会提示您创建并运行一个用于启动您的应用或项目的任务。这简化了项目启动过程,并使任务重用变得容易。
可访问性
合并编辑器改进
合并编辑器现在更易于访问。要了解可用操作,请在合并编辑器中打开可访问性帮助对话框 (⌥F1 (Windows Alt+F1, Linux Shift+Alt+F1))。关键操作包括 Merge Editor: Complete Merge
(⌘Enter (Windows, Linux Ctrl+Enter)) 和 Toggle Between Merge Editor Inputs
(⇧⌘T (Windows, Linux Ctrl+Shift+T))。当前获得焦点的输入现在也会向辅助技术朗读。
下一个编辑建议增强功能
新设置 accessibility.signals.nextEditSuggestion 会在预测建议可用时通知您。通过可访问视图 (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) 审查并接受建议。此外,accessibility.signals.diffLineAdded 和 accessibility.signals.diffLineRemoved 在导航期间提供音频提示,以使差异审查可访问。
从可访问视图审查 Copilot 用户请求
在代理模式下,工具调用或终端命令有时需要用户许可才能运行。请在可访问视图 (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) 中审查这些操作。
独特的可访问性声音
accessibility.signals.save.sound 现在拥有自己独特的声音,不再与 accessibility.signals.terminalCommandSucceeded.sound 共享音频。
编辑器体验
浮动窗口模式
VS Code 中的浮动窗口允许您将编辑器和某些视图从主窗口移出到更小的窗口中,以便进行轻量级多窗口设置。浮动窗口有两种新的模式
- 紧凑模式:我们隐藏某些 UI 元素,为实际内容腾出更多空间
- 始终置顶:窗口会停留在所有其他窗口的顶部,直到您退出此模式
以下是如何将浮动编辑器窗口切换到紧凑模式的示例
我们默认在您在新窗口中创建聊天时使用紧凑模式。结合始终置顶的选项,您可以随时保留聊天视图来提问!
如果您倾向于使用键盘快捷方式执行这些操作,我们引入了新的命令
workbench.action.toggleWindowAlwaysOnTop
:切换始终置顶模式workbench.action.enableWindowAlwaysOnTop
:将浮动窗口设置为始终置顶workbench.action.disableWindowAlwaysOnTop
:将浮动窗口设置为正常workbench.action.toggleCompactAuxiliaryWindow
:切换紧凑模式workbench.action.enableCompactAuxiliaryWindow
:启用紧凑模式workbench.action.disableCompactAuxiliaryWindow
:禁用紧凑模式
注意:即使在紧凑模式下,您也可以创建复杂的编辑器布局并打开其他编辑器。
次侧边栏默认可见性
设置:workbench.secondarySideBar.defaultVisibility
默认情况下,打开新的工作区或窗口时,次侧边栏是隐藏的。通过新设置 workbench.secondarySideBar.defaultVisibility,您可以控制次侧边栏是否在新工作区或窗口中自动打开。您可以选择以下选项:
hidden
:这是默认值,保持次侧边栏隐藏visibleInWorkspace
:如果您打开文件夹或多根工作区,此选项会打开次侧边栏visible
:此选项始终打开次侧边栏
请注意,工作区或窗口打开后,可见性将成为工作区状态并覆盖设置值。如果您关闭次侧边栏,它在该工作区或窗口中将保持关闭状态。
强制进行扩展签名验证
现在所有平台(Windows、macOS 和 Linux)都强制要求进行扩展签名验证。以前,此验证仅在 Windows 和 macOS 上是强制性的。在此版本中,Linux 也开始强制执行扩展签名验证,确保所有扩展在安装前都经过正确验证。
此更改通过阻止安装可能恶意扩展来进一步增强安全性。有关更多信息,请参阅扩展签名。
注意:由于issue #248308,Linux ARM32 版本仍禁用强制扩展签名验证。预计将在下一个版本中解决此问题。
恶意扩展的“了解更多”链接
当某个扩展被识别为恶意扩展时,VS Code 现在提供指向更多信息的链接,解释该扩展被标记的原因。这些“了解更多”链接会将用户连接到包含安全问题详细信息的 GitHub issue 或文档,帮助您更好地了解潜在风险。
阻止在 VS Code Stable 中安装 Copilot Chat 预发布版本
VS Code 现在阻止在 VS Code Stable 中安装 Copilot Chat 扩展的预发布版本。这有助于避免您无意中安装 Copilot Chat 预发布版本并陷入损坏状态的情况。这意味着您只能在 VS Code 的 Insiders 构建版本中安装 Copilot Chat 扩展的预发布版本。
打开视图而不聚焦的命令
现在可以打开视图(树视图和 webview 视图)而不聚焦它们。这对于希望打开视图但不将焦点从当前编辑器移开的扩展和键盘快捷方式非常有用。命令是 your-view-id.open
,它接受一个属性包参数:{ preserveFocus: boolean}
。
带有关键词建议的语义文本搜索(实验性)
设置:github.copilot.chat.search.keywordSuggestions
语义文本搜索现在支持 AI 驱动的关键词建议。启用此功能后,您将开始看到可能帮助您找到所需代码的相关引用或定义。
代码编辑
新的“下一个编辑建议 (NES)”模型
设置:github.copilot.nextEditSuggestions.enabled
我们很高兴推出支持 NES 的新模型,旨在提供更快、更具上下文关联性的代码建议。此更新的模型提供了改进的性能,以更低的延迟提供建议,并提供侵扰性更小且与您近期编辑更密切相关的建议。此更新是我们持续致力于完善 Visual Studio Code 中的 AI 辅助开发工具的一部分。
导入建议
设置:github.copilot.nextEditSuggestions.fixes
下一个编辑建议 (NES) 现在可以自动建议在 JavaScript 和 TypeScript 文件中添加缺失的导入语句。通过设置 github.copilot.nextEditSuggestions.fixes 启用此功能。我们计划在将来的更新中通过支持其他语言的导入来进一步增强此功能。
在 HTML 或 Markdown 中生成 alt 文本
您现在可以在 HTML 和 Markdown 文件中生成或更新现有的 alt 文本。导航到包含嵌入图像的任何行,然后通过 ⌘. (Windows, Linux Ctrl+.) 或选择灯泡图标来触发快速修复。
可变行高
现在可以通过在 IModelDecorationOptions
类型中设置行高值来定义 monaco 编辑器中的可变行高。如果在一行上设置了两个行高,则使用两者中的最大值。
请注意,为简化起见,目前行高仅设置在对应装饰范围的第一行。在下面的屏幕录像中,第 24 行和第 32 行的渲染行高高于默认值。
此功能尚未对扩展可用,经过进一步测试后将推出。
Notebooks
查找和替换历史记录持久化
Notebook 查找控件现在支持查找和替换输入字段的持久历史记录。该历史记录在重新加载后仍然存在,由设置 editor.find.history 和 editor.find.replaceHistory 控制。
拖放单元格输出到聊天
为了增强现有对聊天中使用单元格输出的支持,现在可以将输出拖动到聊天视图中,以实现无缝的附件体验。目前,仅支持图像和文本输出。图像 MIME 类型的输出可以直接拖动,但是为了避免与文本选择冲突,文本输出需要按住 alt 修改键才能启用拖动。我们正在未来的版本中探索用户体验改进。
代理模式下的 Notebook 工具
运行单元格
聊天现在拥有一个运行 Notebook 单元格的 LLM 工具,这使得代理能够根据单元格运行结果执行更新,或者在构建 Notebook 时执行自己的数据探索。
获取内核状态
代理可以使用内核状态工具查找当前内核会话中已执行的单元格,并读取活动变量。
列出/安装包
Jupyter 扩展贡献了将包列出并安装到用作 Notebook 内核的环境中的工具。如果 Python 环境扩展可用,则操作被委托给它;否则,它会尝试使用 pip 包管理器。
源代码管理
暂存更改的快速差异装饰
为了解决一个长期以来的功能请求,在此里程碑中,我们为暂存的更改添加了快速差异编辑器装饰。现在您可以直接从编辑器中查看暂存的更改,而无需打开源代码管理视图。
您可以使用以下主题令牌自定义暂存更改快速差异装饰的颜色:editorGutter.addedSecondaryBackground
、editorGutter.modifiedSecondaryBackground
、editorGutter.deletedSecondaryBackground
。
如果您不想看到暂存更改的快速差异装饰,可以使用编辑器槽上下文菜单中可用的**差异装饰**子菜单将其隐藏。
调试
反汇编视图上下文菜单
感谢社区贡献,我们现在在反汇编视图中有了上下文菜单。
JavaScript 调试器网络视图
最近版本的 Node.js 增强了其网络调试功能。实验性网络视图 将在支持良好的最新版本 Node.js(v22.14.0 及更高版本)上默认启用。
语言
显示 CSS 和 HTML 的浏览器支持
现在,当鼠标悬停在 CSS 属性、HTML 元素或 HTML 属性上时,您将看到该属性或元素在使用 Baseline 在不同浏览器上的支持情况摘要。
.*.env
文件的默认语法高亮
名称格式为 .*.env
的文件现在以 .ini
文件形式进行语法高亮。
JavaScript 和 TypeScript 的可展开悬停(实验性)
设置:typescript.experimental.expandableHover
我们继续迭代 JavaScript 和 TypeScript 的可展开悬停功能。此功能允许您在悬停控件中使用 +
和 -
来显示更多或更少的类型信息。
此功能仍处于实验阶段,但您可以通过启用 typescript.experimental.expandableHover 来尝试。您必须使用 TypeScript 5.9 或更高版本,例如安装 TypeScript nightly 扩展。
远程开发
远程开发扩展允许您使用 开发容器、通过 SSH 或 远程隧道连接的远程机器,或者 适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。
开发容器说明文件
开发容器功能和镜像现在包含描述其工具和配置的说明文件。VS Code 聊天可以自动使用此上下文,从而提高其在开发过程中建议的相关性和准确性。
对扩展的贡献
Python
分支覆盖支持
测试浏览器现在支持 Python 的分支覆盖!请注意,您的 coveragepy
版本必须 >= 7.7 才能使用此功能。您可以通过运行 pip install coverage==7.7
来升级 coverage。
Python 环境快速创建命令
Python 环境扩展已添加对快速创建的支持,使环境创建过程更加顺畅。快速创建通过检测机器上的最新 Python 版本来创建虚拟环境,并只需单击一下即可安装任何工作区依赖项,从而最大限度地减少了您创建新虚拟环境所需的输入。这将为基于 venv 的环境在您的工作区中创建 .venv
,为基于 conda 的环境创建 .conda
。您可以通过命令面板中的**Python: 创建环境**命令访问快速创建。
Python 环境聊天工具
Python 环境扩展(预览版)现在包括两个聊天工具:“获取 Python 环境信息”和“安装 Python 包”。要使用这些工具,您可以直接在提示中引用它们,添加 #pythonGetEnvironmentInfo
#pythonInstallPackage
,或者代理模式会在适用时自动调用工具。这些工具能够根据文件或工作区上下文无缝检测适当的环境信息,并以准确的环境解析来处理包安装。
使用 Pylance 时的颜色拾取器
Pylance 现在可以在编辑器中直接为 Python 文件中识别的颜色值显示交互式颜色样本,从而更轻松地即时可视化和拾取颜色。要试用此功能,您可以启用 python.analysis.enableColorPicker。支持的格式包括 #RGB(如 "#001122")和 #RGBA(如 "#001122FF")。
AI 代码操作:转换格式字符串(实验性)
使用 Pylance 时,有一个新的实验性 AI 代码操作,用于将字符串连接转换为 f-string 或 format()。要试用它,在选择要转换的字符串中的符号时,通过灯泡或者 Ctrl + ./Cmd + . 选择**使用 Copilot 转换为 f-string**或**使用 Copilot 转换为 format() 调用**的代码操作。
此体验通过以下设置启用
"python.analysis.aiCodeActions": {"convertFormatString": true}
然后,一旦定义了新符号,例如类或函数,就可以选择**使用 Copilot 生成符号**代码操作,让 AI 处理实现。如果需要,您可以使用 Pylance 的**移动符号**代码操作将其移动到不同的文件。
GitHub 拉取请求和问题
GitHub Pull Requests 扩展取得了更多进展,该扩展使您能够处理、创建和管理拉取请求和问题。新功能包括:
- 在聊天中询问有关活动拉取请求的问题,例如“解决 #activePullRequest 中的所有评论”。
- 在 Webview 中查看问题,就像查看拉取请求一样。
- 对“拉取请求”、“问题”和“通知”视图进行了优化和对齐。
- 通过启用将问题分配给 Copilot、@-提及 Copilot,并确保其在 UI 中正确显示,为 GitHub 的 Project Padawan 发布做好准备。
查看该扩展 0.110.0 版本的更新日志,了解其他重点内容。
扩展创作
文本编码
我们最终确定了用于在 VS Code 中处理文本编码的 API。
具体而言,此新 API 允许您:
- 获取
TextDocument
的当前encoding
- 使用特定的
encoding
打开TextDocument
- 使用特定的
encoding
将string
编码为Uint8Array
- 使用特定的
encoding
将Uint8Array
解码为string
扩展支持 ESM
NodeJS 扩展宿主现在支持使用 JavaScript 模块 (ESM) 的扩展。它只需在扩展的 package.json
文件中添加 "type": "module"
条目即可。这样,JavaScript 代码就可以使用 import
和 export
语句,包括特殊的模块 import('vscode')
。在此处查找示例:https://github.com/jrieken/vscode-esm-sample-extension。
请注意,ESM 支持尚未用于 Web Worker 扩展宿主。首先需要克服一些技术挑战。我们将在此处发布更新:https://github.com/microsoft/vscode/issues/130367。敬请关注!
建议的 API
图像的工具调用
上一次迭代,我们添加了一个提议的 API,以便扩展可以附加图像并向语言模型发送视觉请求。本次迭代,我们扩展了此 API,以允许工具调用结果也包含图像。
查看此 API 提议问题,以查看用法示例并了解此 API 的最新状态。
扩展贡献的 MCP 服务器
扩展能够使用新的提议的 API 以编程方式向编辑器贡献扩展。这是用户在其设置或 mcp.json
中硬编码每个服务器配置的替代方案。
如果您对此 API 感兴趣,请查看其示例和API 提议问题,以了解此 API 的最新状态。
MCP 工具注解
VS Code 现在将显示配置了适当工具注解的 MCP 服务器的人类可读名称。此外,其注解中标记为 readOnlyHint: true
的工具将被允许运行,而无需用户确认。
值得注意的修复
- 244939 - 个人 Microsoft 帐户很快就会退出登录(几分钟到几小时)
感谢
最后但同样重要的是,衷心感谢 VS Code 的贡献者们。
问题跟踪
对我们问题跟踪的贡献:
- @albertosantini (Alberto Santini)
- @gjsjohnmurray (John Murray)
- @RedCMD (RedCMD)
- @IllusionMH (Andrii Dieiev)
拉取请求
对 vscode
的贡献:
- @ahojukka5 (Jukka Aho): Update chatExecuteActions.ts PR #246494
- @alexweininger (Alex Weininger): fix: handle cancellation errors inside edit session identity provider PR #247450
- @andrewbranch (Andrew Branch): Allow disabling built-in TS/JS extension in favor of tsgo PR #246858
- @BABA983 (BABA): A command to accept all combination PR #225132
- @batsev: Git - validate branch name before creation PR #245029
- @brthom (Ben Thomas): Fix test items sorting in Testing Explorer to use natural file order PR #246352
- @bytemain (Jiacheng)
- fix: correct filtering logic for file-based recommendations PR #245062
- refactor(nls): use then for JSON parsing PR #247013
- @Cecil0o0 (hj): git: make Letter/Text/Color semantically consistency PR #245889
- @eps1lon (Sebastian "Sebbie" Silbermann): Deemphasize old JSX transform PR #246738
- @futurist (James Yang): fix: runCommand type PR #246198
- @gabritto (Gabriela Araujo Britto)
- [typescript-language-features] Re-add expandable hover PR #246899
- [typescript-language-features] make expandable hover true by default PR #247343
- @guiserle (guiserle): config: Resolve variables returned by commands PR #246641
- @huntertran (Tuan Tran Van): Replace single line break with double line break for commit description in git blame hover popup PR #245779
- @johnscollins98 (John Collins): #245665 fix early task exit with empty promptString input PR #246834
- @KapitanOczywisty: Fix html derivative grammar consuming php code, fixes #237262 PR #245076
- @luantranminh (Tran Minh Luan): argv: update description for
add-mcp
PR #246473 - @manabu-nakamura (nakamura)
- tooltip text of close button is internationalized PR #245190
- tooltip text for close button is internationalized (2) PR #245333
- normalize ellipsis PR #246447
- @mdanish-kh (Muhammad Danish): Update WinGet configuration file location & extension PR #242241
- @mkhuzaima (Muhammad Khuzaima Umair): Set DragData when directory is dragged PR #243656
- @mortalYoung (野迂迂): fix: remove necessary async declaration PR #247213
- @nknguyenhc (Nguyen): Goto definition for built-in symbols in HTML script PR #244074
- @noahbowman (Noah): #188711 - Walkthrough Focus-Visible Outline PR #247650
- @pedrofrazaopacheco (Pedro Frazão Pacheco): Fixes microsoft/vscode#240654: Avoid encoding reserved chars in JSON schema URL PR #244934
- @pisv (Vladimir Piskarev): Merge Editor: fix a bug in
LineRange.join(other)
PR #227585 - @RedCMD (RedCMD)
- Fix template.expression brackets #190564 PR #245786
- YAML auto trigger code completion in strings #239679 PR #246939
- @s-rigaud (Samuel Rigaud)
- test: fix typos PR #247259
- fix: vscode-dts typos PR #247263
- fix: toggleApplicationScope typo PR #247264
- @sfaut: Fix PHP f* files functions signatures PR #246964
- @thegecko (Rob Moran): Add disassembly view context menu PR #212500
- @theskcd: [vscode] Decorations from #file is much better and does not break on new line PR #231948
- @tjcork (tjcork): Use parameter expansion to fetch envs for envVarCollections in shellIntegration-bash.sh PR #245264
- @tmm1 (Aman Karmani): tsb: small build improvements PR #237450
- @Victuracor (Victuracor): Fix a typo in extensions/typescript-language-features/package.nls.json PR #245713
- @whistlegraph (jeffrey): fixes issue #662 (enables Pointer Lock Web API) PR #210875
- @wolfgang42 (Wolfgang Faust): feat: markdown-basics snippets: quote all lines PR #246871
- @zobo (Damjan Cvetko): Also replace keys in object within variable substitution PR #245989
对 vscode-css-languageservice
的贡献:
- @AlterNT (NTPS): Support
@scope
PR #434 - @rviscomi (Rick Viscomi): Add Baseline status to hovercards PR #428
对 vscode-js-debug
的贡献:
- @mikaelwaltersson (Mikael Waltersson): Fix expansion of "floating" WASM variables in repl/watch + readMemory when WASM memory is SharedArrayBuffer PR #2199
对 vscode-json-languageservice
的贡献:
- @fengzilong (MO): feat: make newJSONDocument and JSONDocument consistent PR #259
对 vscode-jupyter
的贡献:
- @alexfanqi (Alex Fan): change the scope of excludeUserSitePackages to window PR #16377
- @realDuang (Duang): fix: repair python code escaping path in environment service PR #16518
对 vscode-mypy
的贡献:
- @tdscheper (Tommy Scheper): When cwd config option is ${nearestConfig}, look for all of mypy.ini, .mypy.ini, pyproject.toml, setup.cfg PR #357
对 vscode-notebook-renderers
的贡献:
- @marthacryan (Martha Cryan): Update plotly.js version to 3.0.0 PR #230
对 vscode-pull-request-github
的贡献:
- @kabel (Kevin Abel): Fix merge email confirmation when git config fails PR #6797
- @timrogers (Tim Rogers): When
copilot-swe-agent
is the author of a comment, render with the Copilot identity PR #6794
对 vscode-python-debugger
的贡献:
- @rchiodo (Rich Chiodo): Allow autoReload in attach configurations PR #676
对 vscode-python-environments
的贡献:
- @InSyncWithFoo (InSync): fix: clarify that
showSkipOption
also applies to uninstallations PR #288
对 language-server-protocol
的贡献:
- @hippietrail (Andrew Dunbar): several grammar fixes PR #2123
- @imbant (imbant): Ensure document state synchronization before client requests PR #2017
- @ocfbnj: Add thrift-ls for Thrift PR #2128
- @rtorralba (rtorralba)
对 monaco-editor
的贡献:
- @RoccoC (Rocco Cataldo): Update webpack plugin to support module workers PR #4742