2025 年 8 月 (版本 1.104)
发布日期:2025 年 9 月 11 日
下载:Windows:x64 Arm64 | Mac:通用 Intel Apple 芯片 | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2025 年 8 月发布版。此版本中有许多更新,希望您会喜欢,其中一些主要亮点包括:
-
模型灵活性
-
安全性
-
生产力
如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新页面。
内部版本:想尽快试用新功能吗?
您可以下载每晚的内部版本,并在最新更新可用时立即试用。
下载内部版本
聊天
自动模型选择 (预览)
在此迭代中,我们在聊天中引入了自动模型选择。当您在模型选择器中选择自动模型时,VS Code 会自动选择一个模型,以确保您获得最佳性能并避免速率限制。
自动模型选择目前处于预览阶段,我们将在接下来的几周内将其推广给所有 VS Code 中的 GitHub Copilot 用户,从个人 Copilot 计划开始。
自动模型将在 Claude Sonnet 4、GPT-5、GPT-5 mini 和 GPT-4.1 以及 Gemini Pro 2.5 之间进行选择,除非您的组织已禁用对这些模型的访问。使用自动模型选择时,VS Code 会根据所选模型使用可变模型乘数。如果您是付费用户,自动模型将应用 10% 的请求折扣。
您可以通过将鼠标悬停在聊天视图中的响应上来查看所选模型和模型乘数。
了解有关 VS Code 中自动模型选择的更多信息。
确认敏感文件的编辑
设置:chat.tools.edits.autoApprove
在代理模式下,代理可以自主编辑工作区中的文件。这可能包括意外或恶意修改或删除重要文件(例如配置文件),这可能会对您的机器产生直接的负面副作用。了解有关使用 AI 驱动的开发工具时的安全注意事项的更多信息。
在此版本中,代理现在会在编辑某些文件之前明确请求用户确认。这在使用代理模式时提供了额外的安全层。通过 chat.tools.edits.autoApprove 设置,您可以配置文件模式以指示哪些文件需要确认。
默认情况下,通用系统文件夹、点文件和工作区外的文件将需要确认。
支持 AGENTS.md 文件 (实验性)
AGENTS.md
文件允许您向代理提供上下文和指令。从这个版本开始,当您的工作区根目录中有一个 AGENTS.md
文件时,它会自动作为聊天请求的上下文。这对于使用多个 AI 代理的团队很有用。
默认情况下启用对 AGENTS.md
文件的支持,并且可以使用 chat.useAgentsMdFile 设置进行控制。有关 AGENTS.md
文件的更多信息,请参阅 https://agents.md/。
了解有关根据您的实践和团队工作流自定义 VS Code 中的聊天的更多信息。
改进的已更改文件体验
在此迭代中,已更改文件列表已通过多项生活质量功能进行了重新设计。这些更改应能改善您在代理模式下的体验!
-
默认情况下,已更改文件列表现在是折叠的,以为聊天对话留出更多空间。折叠时,您仍然可以看到已更改文件数以及已添加或删除的行数。
-
当您保留或接受建议的更改时,该文件将从已更改文件列表中删除。
-
当您使用“源代码管理”视图暂存或提交文件时,这将自动接受建议的文件更改。
-
列表中的每个项目现在都显示每个文件的更改(添加或删除的行)。
在提示文件中使用自定义聊天模式
提示文件是 Markdown 文件,您可以在其中编写可重用的聊天提示。要运行提示文件,请在聊天输入字段中键入 /
,然后键入提示文件名,或者在编辑器中打开提示文件时使用“播放”按钮。
您可以指定用于运行提示文件的聊天模式。以前,您只能在提示文件中使用内置聊天模式,如 agent
、edit
或 ask
。现在,您还可以在提示文件中引用自定义聊天模式。
了解有关使用提示文件、聊天模式和自定义指令自定义 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 有几个内置工具集,如 edit
或 search
。
工具选择器现在显示每个工具集中的工具,您可以单独启用或禁用每个工具。您可以通过“聊天”视图中的“配置工具...
”按钮访问工具选择器。
配置聊天中使用的字体
设置:chat.fontFamily, chat.fontSize
VS Code 允许您选择在编辑器中使用的字体,但“聊天”视图缺乏该可配置性。我们现在添加了两个新设置,用于配置聊天消息的字体系列 (chat.fontFamily) 和字体大小 (chat.fontSize)。
注意:列表内容目前尚未遵循这些设置,但我们正在努力在即将发布的版本中解决此问题。
与编码代理协作 (实验性)
通过编码代理,您可以将任务委托给 AI 代理在后台进行处理。您可以让多个此类代理并行工作。我们正在不断改进聊天会话体验,以帮助您更有效地与编码代理协作。
聊天会话视图
设置:chat.agentSessionsViewLocation
“聊天会话”视图提供了一个统一视图,用于管理本地和贡献的聊天会话。我们显著增强了“聊天会话”视图,您现在可以在其中执行所有关键操作,从而更轻松地迭代和完成您的编码任务。
- 状态栏跟踪:直接从状态栏监视多个编码代理的进度。
- 多会话支持:从同一视图启动和管理多个聊天会话。
- 扩展上下文菜单:访问更多操作以高效地与您的编码代理交互。
- 丰富描述:启用丰富描述后,每个列表条目现在都包含详细上下文,以帮助您快速找到相关信息。
GitHub 编码代理集成
我们改进了 GitHub 编码代理与聊天会话的集成,以提供更流畅、更直观的体验。
- 聊天编辑器操作:直接从聊天编辑器轻松查看或应用代码更改,并签出拉取请求。
- 无缝过渡:以改进的连续性从本地聊天切换到 GitHub 代理任务。
- 更好的会话渲染:卡片和工具渲染的各种改进,以提供更好的视觉清晰度。
- 性能提升:更快的会话加载,以获得更灵敏的体验。
委托给编码代理
我们继续扩展将 VS Code 中的本地任务委托给 Copilot 编码代理的方式
-
使用编码代理修复待办事项
以
TODO
开头的注释现在显示一个“代码操作”,可以快速启动编码代理会话。 -
从聊天中委托 (githubPullRequests.codingAgent.uiIntegration)
当您在聊天中执行“委托给编码代理”操作时,现在会将包括文件引用在内的其他上下文转发到 GitHub 编码代理。这使您能够在将任务移交给编码代理完成之前精确规划任务。将打开一个新的聊天编辑器,实时显示编码代理的进度。
主题:Sharp Solarized (在 vscode.dev 上预览)
使用 Google 社交登录
现在,使用 Google 帐户登录或注册 GitHub Copilot 的选项已正式推出,并将推广给 VS Code 中的所有用户。
您可以在 GitHub 博客公告文章中找到有关此内容的更多信息。
终端自动批准
设置:chat.tools.terminal.enableAutoApprove
自动批准终端命令可以大大简化代理交互,但它也伴随着安全风险。此版本引入了对终端自动批准的几项改进,以增强可用性和安全性。
-
您现在可以使用 chat.tools.terminal.enableAutoApprove 设置启用或禁用终端自动批准。此设置也可以由组织通过设备管理进行设置。
-
在实际启用终端自动批准之前,您需要通过聊天视图中的下拉菜单明确选择启用。
-
从“聊天”视图中,您可以方便地为正在运行的命令添加自动批准规则,或打开配置设置
主题:Sapphire (在 vscode.dev 上预览)
这为命令提供了一些基本支持,可以在更合适的地方建议子命令,例如建议
npm test
规则而不是npm
。 -
为了提高自动批准命令的透明度,我们在“聊天”视图中显示已应用的规则,还使您能够配置该规则
-
我们改进了默认设置以提供安全性并减少干扰。您可以通过打开
settings.json
文件,然后输入chat.tools.terminal.autoApprove
并通过 Tab 键完成它来查看该设置的默认值。 -
包含反斜杠或正斜杠字符的非正则表达式规则现在被视为路径,不仅批准该精确路径,还允许两种斜杠类型和
./
前缀。使用 PowerShell 时,所有规则都强制为不区分大小写。 -
当代理模式想要使用
curl
、wget
、Invoke-RestMethod
或Invoke-WebRequest
从互联网拉取内容时,我们现在会显示警告,因为这是提示注入攻击的常见向量。
在我们的文档中了解有关终端自动批准的更多信息。
全局自动批准
自 v1.99 以来,全局自动批准一直是实验性设置。我们观察到用户在启用此设置时没有深入考虑后果。此外,一些用户认为启用 chat.tools.autoApprove 设置是启用终端自动批准的先决条件,但事实并非如此。
为了消除这些误解并进一步保护我们的用户,现在首次尝试使用全局自动批准时会出现一个令人毛骨悚然的警告,以便用户可以轻松退出并禁用该设置
该设置也已更改为更清晰的 chat.tools.global.autoApprove,没有任何自动迁移,因此所有用户(意外或有意)都需要再次明确设置它。
默认启用数学渲染
聊天响应中的数学方程渲染现在已普遍可用并默认启用。您可以使用 chat.math.enabled 设置禁用此功能。
此功能由 KaTeX 提供支持,并支持行内和块级数学方程。行内数学方程可以通过用单个美元符号 ($...$
) 包裹标记来编写,而块级数学方程使用两个美元符号 ($$...$$
)。
聊天视图默认可见性
设置:workbench.secondarySideBar.defaultVisibility
当您首次打开工作区时,带有“聊天”视图的“辅助侧边栏”默认可见,邀请您立即提出问题或开始代理会话。您可以使用 workbench.secondarySideBar.defaultVisibility 设置或通过“聊天”视图本身的下拉菜单配置此行为
改进的任务支持
-
输入请求检测
当您在代理模式下运行任务或终端命令时,代理现在会检测进程何时请求用户输入,并提示您在聊天中响应。如果您在提示出现时在终端中键入,提示将自动隐藏。如果提供了选项和描述(例如
[Y] Yes [N] No
),这些选项和描述将显示在确认提示中。 -
带有问题匹配器的任务的错误检测
对于使用问题匹配器的任务,代理现在会根据问题匹配器结果收集并显示错误,而不是依赖语言模型来评估输出。问题以下拉菜单的形式显示在聊天进度消息中,允许您直接导航到问题位置。这确保仅在与当前任务执行相关时才报告错误。
-
复合任务支持
代理模式现在支持运行复合任务。当您运行复合任务时,代理会显示每个依赖任务的进度和输出,包括任何用户输入提示。这使得更复杂的工作流和多步任务执行的更好可见性成为可能。
在下面的示例中,运行了 VS Code - Build 任务。评估每个依赖任务的输出,并在响应和进度消息下拉菜单中向用户显示问题。
改进的终端支持
-
将更多终端工具移至核心
与上个版本中的
runInTerminal
工具一样,terminalSelection
和terminalLastCommand
工具已从扩展移至核心,这应该会提供一般的可靠性改进。 -
可配置的终端工具 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,用于禁用和隐藏 GitHub Copilot 提供的内置 AI 功能,包括聊天、代码完成和下一步编辑建议。
该设置相对于我们以前的解决方案具有以下优势:
- 除非您明确禁用,否则会在您的设备之间同步
- 如果安装了 Copilot 扩展,则禁用它们
- 按配置文件或按工作区配置设置,可以轻松选择性地禁用 AI 功能
“隐藏 AI 功能”命令已重命名以反映此更改,现在将在设置编辑器中显示此新设置。
注意:以前隐藏 AI 功能的用户将继续看到 AI 功能被隐藏。如果您想在设备之间同步您的选择,可以额外更新该设置。
MCP
支持服务器指令
VS Code 现在会读取 MCP 服务器指令并将其包含在其基本提示中。
默认禁用 MCP 自动发现
VS Code 支持自动发现安装在其他应用程序(如 Claude Code)中的 MCP 服务器。随着 VS Code 中 MCP 支持的成熟,自动发现现在默认禁用,但您可以使用 chat.mcp.discovery.enabled 设置重新启用它。
启用 MCP
以前控制 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 上的窗口边框颜色支持
我们很高兴在 Windows 上添加了一个新设置 window.border,使您能够在 VS Code 窗口周围显示彩色边框。该设置具有以下选项:
default
:遵循颜色主题设置,回退到 Windows 设置system
:仅遵循 Windows 设置(窗口标题强调色)off
:禁用边框颜色<color>
:以 Hex、RGB、RGBA、HSL、HSLA 格式表示的特定颜色
您可以按工作区配置颜色,从而更容易区分哪个窗口中打开了哪个工作区。
当您将 window.border 配置为 default
时,主题能够使用 window.activeBorder
和 window.inactiveBorder
颜色键为活动和非活动窗口设置边框颜色。您可以从 workbench.colorCustomizations 设置进一步覆盖这些颜色。
管理扩展帐户首选项
我们已在命令面板中添加了“帐户:管理扩展帐户首选项”命令。调用时,它会显示一个有权访问身份验证帐户的扩展列表,并允许您更改这些扩展使用的帐户。您甚至可以直接从列表中登录新帐户。
这基于我们一年前添加的帐户管理功能。
编辑器选项卡索引
设置:workbench.editor.showTabIndex
您现在可以在选项卡标签中渲染编辑器选项卡的索引。当您打开许多选项卡并希望使用键盘快捷键在它们之间快速导航时,这会很有帮助。使用 workbench.editor.showTabIndex 设置启用此功能。
编辑器选项卡栏滚动条可见性
设置:workbench.editor.titleScrollbarVisibility
workbench.editor.titleScrollbarVisibility 允许您控制编辑器选项卡栏中的滚动条何时可见。默认值 auto
仅当选项卡溢出且鼠标悬停在选项卡上时才显示滚动条。您也可以将其设置为 visible
以在选项卡溢出时始终显示滚动条,或设置为 hidden
以从不显示它。
问题报告器改进
通过内置问题报告器报告 VS Code 或扩展中的问题时,您现在可以通过报告按钮上的下拉菜单选择“在 GitHub 上创建”或“在 GitHub 上预览”。如果按钮没有显示下拉菜单,并且只显示“创建”或“预览”,这很可能意味着您仍在加载扩展数据,或者需要确保您已登录具有正确范围的 GitHub 帐户。
Notebook
改进的 NES 建议 (实验性)
设置:github.copilot.chat.notebook.enhancedNextEditSuggestions.enabled
我们正在试验改进笔记本的下一步编辑建议的质量。目前,语言模型在生成建议时可以访问活动单元格的内容。启用 github.copilot.chat.notebook.enhancedNextEditSuggestions.enabled 设置后,语言模型可以访问整个笔记本,从而能够生成更准确、更高质量的下一步编辑建议。
源代码管理
预览和迁移 Git 工作区更改
您现在可以通过右键单击工作区文件以在“源代码管理更改”视图中打开上下文菜单并选择“与工作区比较”来预览工作区文件与当前工作区之间的差异。
审查更改后,您可以使用命令面板中的“迁移工作区更改...”命令 () 将工作区中的所有更改合并到当前工作区中。这使得跨多个工作区工作并有选择地将更改带回主存储库变得容易。
了解有关 VS Code 中的 Git 工作区的更多信息。
终端
终端窗口发现性和完善
一个常见请求是允许在单独的窗口中打开终端。此功能已存在一年半左右,但其可发现性一直不佳。在此迭代中,我们为此功能添加了多个入口点
- 新命令 ⌃⇧⌥` (Windows、Linux Ctrl+Shift+Alt+`)。
- 空编辑器和选项卡井菜单现在有一个“新终端”条目。
- 新终端下拉菜单已重新排列,现在有一个“新终端窗口”条目。
- 顶级终端菜单现在有一个“新终端窗口”条目。
我们还完善了这些新终端窗口在紧凑模式下打开的体验。如果您向窗口添加新选项卡,它会自动退出紧凑模式。
终端编辑器中的终端操作
终端视图中可用的操作(新终端下拉菜单、清除终端等)现在也适用于编辑器区域和终端窗口中的终端。
就像在终端视图中一样,您可以右键单击操作区域将其移出溢出菜单。
终端 IntelliSense 改进 (预览)
此版本中终端 IntelliSense 将获得多项改进
- 多项性能改进,这些改进不成比例地影响 Windows 上的体验。
- 由于移除了在 Windows 上不可用的
sed
依赖项,git
完成现在在 Windows 上更可靠。 git
完成现在具有熟悉的图标来表示提交、分支、远程、储藏和标签。- 添加了大量完成规范:
adb
、basename
、bundle
、clear
、cut
、date
、dd
、diff
、dig
、dirname
、docker-compose
、docker
、dotnet
、env
、export
、fdisk
、fmt
、fold
、gh
、go
、htop
、id
、jq
、ln
、lsblk
、lsof
、mount
、nl
、od
、paste
、ping
、pkill
、readlink
、rsync
、ruby
、ruff
、sed
、seq
、shred
、sort
、source
、split
、stat
、su
、sudo
、tac
、tar
、tee
、time
、tr
、traceroute
、tree
、truncate
、uniq
、unzip
、wc
、where
、whereis
、which
、who
、xargs
、xxd
、yo
、zip
终端粘性滚动改进
我们现在默认启用了终端粘性滚动。我们进行了一些改进以获得更好的体验,例如使用分页器时改进了行为。终端粘性滚动现在与 editor.tabFocusMode 设置兼容。
语言
JavaScript 和 TypeScript
审查使用情况数据后,我们决定删除内置的 bower.json
IntelliSense。Bower 自 2017 年以来已弃用,我们的内置支持使用率低且未积极维护。
Bower 建议用户迁移到 npm
或 yarn
。对 VS Code 中 Bower 的持续支持可以通过扩展提供。
Python
Python 环境扩展对 Pipenv 的支持
现在可以像在 Python 扩展中一样发现和选择 Pipenv 环境。此外,它们会出现在 Python 侧边栏的“环境管理器”视图中,在那里它们与其他环境类型一起分组和显示。
配置环境变量注入
当启用 Python 环境扩展时,新设置 python.useEnvFile 控制是否将 .env
文件中的环境变量和 python.envFile 设置注入到终端中。
Python 环境扩展改进
作为稳定用户受控推出的一部分,Python 环境扩展继续收到错误修复和改进。要在推出期间使用 Python 环境扩展,请确保已安装该扩展,并将以下内容添加到您的 VS Code settings.json
文件中:"python.useEnvironmentsExtension": true
。
Pylance 提供 AI 驱动的悬停摘要 (实验性)
当使用 Pylance 的最新预发布版本时,Python 现在提供了一项新的实验性 AI 悬停摘要功能。当您启用 python.analysis.aiHoverSummaries 设置后,您可以即时获得对尚无文档的符号的有用摘要。这使得理解不熟悉的代码更容易,并提高了您探索 Python 项目时的生产力。AI 悬停摘要目前可供 GitHub Copilot Pro、Pro+ 和 Enterprise 用户使用。
我们期待很快将此实验性体验带到稳定扩展版本。
运行代码片段工具
Pylance 运行代码片段工具不再依赖于 python -c "code"
等终端命令或创建临时文件来执行,而是使 GitHub Copilot 能够完全在内存中执行 Python 片段。它会自动使用为您的工作区配置的正确 Python 解释器,并消除了终端执行时有时出现的 Shell 转义和引用中的常见问题。
其突出优点之一是它提供清晰、格式良好的输出,stdout 和 stderr 交错以提高清晰度。这使得它在与 GitHub Copilot 一起使用代理模式时非常适合测试小块代码、运行快速脚本、验证 Python 表达式或检查导入,所有这些都在您的工作区上下文中进行。
要试用它,请确保使用 Pylance 扩展的最新预发布版本。然后,您可以通过“聊天”视图中的“添加上下文...”>“工具”菜单选择 pylancerunCodeSnippet
工具。
注意:与所有 AI 生成的代码一样,请确保在允许执行此工具之前检查生成的代码。审查代码的逻辑和意图可确保其符合您的项目目标并保持安全性和正确性。
Pylance IntelliSense 在所有 Python 文档中启用
python.analysis.supportAllPythonDocuments
设置已从最新的 Pylance 预发布版本中移除,Pylance IntelliSense 现在默认在所有 Python 文档中启用,包括终端和差异视图。这意味着您可以在 VS Code 中处理 Python 的任何地方获得丰富的代码完成、悬停和代码导航。
激活钩子
Python 激活钩子现在可以从 Shell 集成脚本中运行,而无需 Python 环境扩展修改您的 Shell 配置文件。当 python-envs.terminal.autoActivationType 设置为 shellStartup
时,这提供了更可靠的终端激活,并且更重要的是,确保 Copilot 终端按预期激活。
对扩展的贡献
GitHub 拉取请求
GitHub 拉取请求扩展取得了更多进展,该扩展使您能够处理、创建和管理拉取请求和问题。新功能包括:
- 侧边栏内容在狭窄窗口上折叠
- 重新加载后恢复拉取请求和问题 webviews
- 新的“TODO”代码操作允许您直接委托给 Copilot 编码代理
- 子模块可以使用 githubPullRequests.ignoreSubmodules 忽略
查看扩展 0.118.0 版本的更新日志,了解该版本中的所有内容。
扩展开发
扩展启动的终端的 shellIntegrationNonce
现在可以将 shellIntegrationNonce
传递给 TerminalOptions
和 ExtensionTerminalOptions
中的 createTerminal
。这使扩展能够控制 nonce,该 nonce 用于验证 Shell 集成转义序列中的命令。
语言模型聊天提供程序 API
在此迭代中,我们最终确定了 LanguageModelChatProviders
API。这使扩展能够贡献一个或多个语言模型,无论是云托管的还是本地的。通过安装扩展,用户可以通过聊天中的模型选择器选择这些模型。
已经有多个扩展利用此 API 来使用附加模型扩展 VS Code 中的聊天,包括 VS Code 的 AI 工具包、Cerebras 推理和 Hugging Face。
您可以在我们的语言模型聊天提供程序扩展指南或我们的扩展示例中了解如何利用此 API。
注意:通过此 API 提供的模型目前仅适用于个人 GitHub Copilot 计划的用户。
提议的 API
身份验证:支持 getSession
中的 WWW-Authenticate
质询
HTTP 的一个成熟模式是,对 API 的请求可以返回 401 Unauthorized 状态码,并带有 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)。如果您已经经过 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 规范中对此有一个提案。
辅助侧边栏中的视图容器
扩展可以将视图容器贡献给 activitybar
和 panel
。我们现在也添加了对贡献给 secondarySidebar
的支持。这目前在 contribSecondarySideBar
提议的 API 之后。我们希望尽快最终确定此 API。
工程
探索 VS Code 内部开发循环中的 Playwright 和 Playwright MCP
代理模式和 VS Code 的其他 AI 功能已成为 VS Code 团队构建 VS Code 本身的核心工具(无双关语)。我们希望探索如何进一步应用这些功能,以使 VS Code 的内部开发循环变得更好。为此,我们一直在尝试扩展我们现有的冒烟测试自动化项目,该项目使用Playwright,以创建一个 MCP 服务器,该服务器可以驱动 VS Code 的本地实例。这允许我们现有的代理流,该流侧重于从构建/测试时工件(编译、linter、测试等)接收上下文,现在还可以与 VS Code 的实时实例交互……验证更改在运行时是否具有所需的效果。
这项工作的第一部分可以在 vscode 仓库的test/mcp 文件夹中找到。如果您有兴趣试用它,入门非常容易
- 遵循贡献指南以运行 Code OSS 的本地版本
- 然后,您可以使用我们微不足道的(目前)提示文件,在代理模式下提出问题
/playwright your question here
。
这仍然是早期探索,但我们对这为我们在内部开发循环中进一步使用 AI 带来的可能性感到兴奋。基础工作已经奠定,我们将在此基础上进行迭代,使其对团队更加健壮和有用。
这项工作最近在 VS Code Insiders 播客中得到了专题报道,我们在其中讨论了此探索背后的动机和一些技术细节。您可以收听VS Code Insiders 播客的这一集。
值得注意的修复
- vscode#151902 - 终端:选择时复制 + 1.68 中的新高亮在 CMD+F 上复制前一个术语
- vscode#222075 - 使用分页器进行向下翻页时,终端粘性滚动可能会显示一帧
- xtermjs/xterm.js#5390 - 修复退出 alt 缓冲区后滚动条瞬移问题
感谢
最后但同样重要的是,向 VS Code 的贡献者们致以衷心的感谢。
问题跟踪
对我们问题跟踪的贡献
- @gjsjohnmurray (John Murray)
- @RedCMD (RedCMD)
- @IllusionMH (Andrii Dieiev)
- @albertosantini (Alberto Santini)
拉取请求
对 vscode
的贡献
- @a-ariff (Ariff):文档:修复开发容器部分中的语法 PR #264162
- @alexkozy (Alexey)
- 修复:debugToolBar.ts 中的微小内存泄漏 PR #259349
- 修复:注册 WorkerTextModelSyncClient PR #259442
- @alexvoedi (Alexander Vödisch):修复 linkedEditing 失步问题 PR #242993
- @bluedog13
- 修复 OAuth 重定向 URI 格式以符合 Microsoft 的 URL 标准 PR #260446
- 修复 OAuth2 资源参数符合 RFC 8707 PR #261815
- @CGNonofr (Loïc Mangeonjean):修复 firefox 上主题未与外部窗口同步的问题 PR #259839
- @Da-nie-elT:使用
Object.hasOwn()
更新 for-in 循环代码片段 PR #262682 - @DoctorKrolic:将
.slnx
添加到xml
语言扩展列表 PR #259049 - @DrSergei (Druzhkov Sergei):修复监视窗口中的内存引用处理 PR #259753
- @gjsjohnmurray (John Murray)
- 将
Go to Test
添加到覆盖源快速选择 PR #259600 - 设置测试覆盖率工具栏快速选择上的正确活动条目 PR #259639
- 测试结果:仅提供带有 uri 的
Go to Test
(修复 #260443)PR #260508
- 将
- @hihry (Himanshu Ravindra Iwanati):修复:“恢复到上一个检查点”悬停文本的大小写 PR #259572
- @j3iiifn:提示文件名不能包含数字 PR #261704
- @joelverhagen (Joel Verhagen)
- 允许将规范包名称和版本从安装流程返回 PR #259081
- 支持 MCP 辅助安装返回 server.json PR #259634
- 当 MCP 辅助安装失败时添加对帮助链接的支持 PR #260215
- @kenherring (Ken Herring):terminal.copyOnSelection 和 terminalFindWidget - 聚焦时不复制选择 PR #254065
- @kplates (kplates):功能:从文件搜索中包含/排除文件类型 PR #254285
- @LeftPhalange (Ethan Bovard):使用 DIFF_OPEN_SIDE 命令向命令面板添加“打开活动差异侧”选项 PR #261699
- @remcohaszing (Remco Haszing)
- 修复 MonacoEnvironment 的全局访问 PR #248075
- 在 Markdown 代码块中突出显示更多语言 PR #263550
- @rwoll (Ross Wollman)
- 等待代理循环在自动化中完成 PR #262370
- 支持自动化中的模型切换 PR #262420
- 修复:在 chat.open 命令中解析命令 PR #263458
workbench.action.chat.export
可选接受路径 PR #263507- 修复:基于 promise 确认响应 PR #263894
- 回滚“修复:基于 promise 确认响应 (#_263894)” PR #264047
- @SimonSiefke (Simon Siefke)
- 修复:模式输入小部件中的内存泄漏 PR #258152
- 修复:代码镜头控制器中的内存泄漏 PR #263136
- 修复:辅助功能信号调度器中的内存泄漏 PR #263147
- 修复:QuickDiffModel 中的内存泄漏 PR #265007
- @swordjjjkkk (Truman):在 VSCode 中显示选项卡索引 PR #209196
- @terreng (Terren):实现新选项以控制标题滚动条可见性 PR #246161
- @timheuer (Tim Heuer):为测试覆盖率视图添加全部折叠功能 PR #258906
- @tmm1 (Aman Karmani)
- 修复一些拼写错误 PR #259747
- terminalProcessManager:修复一次性泄漏 PR #261710
- storage:使用 upsert 语法优化 sqlite 插入 PR #261999
- @Tritlo (Matthías Páll Gissurarson):extHostMcp:接受 SSE/JSON 处理的 Content-Type 参数 PR #262787
- @ttttotem (ttttotem):修复“单击前两个字符之间时光标跳到第 0 列”的问题 PR #265131
- @JBlitzar (JBlitzar):连接到现有实例时使用
app.dock.hide
PR #259352
对 vscode-copilot-chat
的贡献
- @24anisha:将 SKU 数据添加到 GitHub 遥测 PR #819
- @devm33 (Devraj Mehta):将 logprobs 字段设为可选 PR #325
- @iann0036 (Ian Mckay):修复:“GitHub”的大小写调整 PR #631
- @joelverhagen (Joel Verhagen)
- @jwangxx (James Wang)
- @lipido (Daniel Glez-Peña):改进代理测试覆盖率 PR #614
- @m4dc4p:更新 getErrors (GetErrors / problems) 工具 PR #394
- @rwoll (Ross Wollman)
- @shaunm-msft (Shaun Miller)
- @sridharavinash (Avinash Sridhar):向对话模型消息添加模式 PR #517
- @yemohyleyemohyle:向 MSFT 内部遥测添加消息长度事件 PR #473
- @zhichli (Zhichao Li)
对 vscode-eslint
的贡献
- @AmarMuric04 (AmarMuric)
- @davidtaylorhq (David Taylor):添加对 Ember 的 glimmer-ts/glimmer-js 格式的探测支持 PR #2069
对 vscode-extension-samples
的贡献
- @Sepush (Artea):重构(lsp-embedded-request-forwarding):清理无用代码 PR #1196
对 vscode-js-debug
的贡献
- @LittleLittleCloud (Xiaoyun Zhang):修复:在 constructInspectorWSUri 函数中处理 localhost 主机名 PR #2260
对 vscode-jupyter
的贡献
- @hunterhogan (Hunter Hogan):package.nls.json 中的拼写错误 PR #16890
- @krassowski (Michał Krassowski):添加对自定义 CDN URL 的支持 PR #16885
对 vscode-languageserver-node
的贡献
- @MariaSolOs (Maria José Solano):向
textDocument/colorPresentation
添加功能信息 PR #1660
对 vscode-markdown-languageservice
的贡献
- @remcohaszing (Remco Haszing):更新 @vscode/l10n 到版本 0.0.18 PR #199
对 vscode-markdown-tm-grammar
的贡献
- @c-schuhmann (Christian Schuhmann):添加对 SAP ABAP 语法的支持 PR #176
- @esmasth (Siddharth Sharma):添加对 YANG 代码围栏的支持 PR #169
- @Morikko (Eric Masseran):在 markdown 代码块中添加 restructuredtext 支持 PR #178
- @remcohaszing (Remco Haszing)
对 vscode-pull-request-github
的贡献
- @krassowski (Michał Krassowski):修复拼写错误“will be replace”→“will be replaced” PR #7540
对 vscode-python-environments
的贡献
- @almarouk (Abdelrahman AL MAROUK):修复:通过路径存在性检查增强 conda 可执行文件检索 PR #677
- @sjsikora (Sam Sikora):错误修复:更严格的 pip list 包解析 PR #698
对 vscode-vsce
的贡献
- @tgrospic (Tomislav Grospić):通过使用字符串形式的 prepublish 命令避免 Node.js DEP0190 警告 PR #1188
对 debug-adapter-protocol
的贡献
- @jborean93 (Jordan Borean):添加 Ansible 实现 PR #552
对 language-server-protocol
的贡献
- @aartaka (Artyom Bologov):将 cl-lsp (Common Lisp) 添加到实现列表 PR #2179
- @anakin4747 (Anakin Childerhose):添加 kconfig-language-server PR #2177
- @asukaminato0721 (Asuka Minato):添加 ty PR #2175
- @MariaSolOs (Maria José Solano):向
textDocument/colorPresentation
添加功能信息 PR #2173 - @notpeter (Peter Tripp)
- @ribru17 (Riley Bruins):修复 3.18 元模型版本 PR #2180
- @skewb1k:更正懒属性描述中的语法和一致性 PR #2170
对 node-jsonc-parser
的贡献
- @operagxsasha:文档:编辑了徽章测试的链接 PR #98
- @pimterry (Tim Perry):向解析器错误添加 startLine 和 startCharacter PR #102
对 python-environment-tools
的贡献
- @almarouk (Abdelrahman AL MAROUK):修复 conda env 跟踪消息 PR #241
我们非常感谢大家在新功能准备就绪后立即尝试,因此请经常回来查看并了解最新功能。
如果您想阅读以前的 VS Code 版本的发布说明,请访问 code.visualstudio.com 上的更新。