大家好,我是农村程序员,独立开发者,行业观察员,前端之虎陈随易。我会在这里分享关于 独立开发
、编程技术
、思考感悟
等内容,欢迎关注。
技术群与交朋友请在个人网站联系我,网站 1️⃣:chensuiyi.me,网站 2️⃣:me.yicode.tech。
如果你觉得本文有用,一键三连 (点赞
、评论
、转发
),就是对我最大的支持~
大家好,VSCode v1.103 终于在2025年8月8日凌晨 2 点发布了,真是千呼万唤始出来啊,追更 VSCode 更新,分享 VSCode 更新是笔者的爱好之一,希望大家一键三连来点鼓励吧,文末有往期 VSCode 更新文章。
话不多说,快来随笔者看看本次的更新内容吧。
TypeScript 5.9
本次更新已集成 TypeScript 5.9.2
。
此次重大更新带来了若干语言改进,包括对 import defer
的支持,以及工具链优化,例如为众多 DOM API 提供了更完善的文档。
Electron 37
在此重要里程碑中,向稳定版本用户推出 Electron 37 更新。
本次更新包含 Chromium 138.0.7204.100
和 Node.js 22.17.0
。
支持 GPT 5 和 Claude 4.1 Opus

想必这个月大家对 Cursor 的降智已经有所耳闻或者忍无可忍了,强如套壳中的 YYDS,也扛不住 AI 的经费在燃烧啊。
也是因此,在 VSCode 团队的推波助澜和大力推广下,最近一个月,国外大量的开发者纷纷回归 VSCode,而 VSCode 也不失所望地在 AI 体验上面稳定发挥,慢慢缩小与行业头牌的差距。
比如 GPT 5 和 Claude 4.1 Opus 这两个大模型刚发布,就可以在 Copilot 中使用了,不过要注意的是,Copilot Pro+用户才可用,39 美元/月。
AI 编辑存档回退

在 AI 对话界面,点击回退按钮,可以将当前的所有改动和聊天记录都回退到上一个状态。
之前的版本聊天记录是不会回退的,现在聊天记录也可以回退了。
工具选择器改进

本次更新,对 AI Chat,AI Agent 要使用的工具面板进行了全面重构,使用了树结构替换原来的单个选择,操作更方便了。
同时工具的配置按钮移到了右上角,减少占用空间,便于操作。
聊天虚拟工具阈值
目前,单次聊天请求中可使用的工具数量上限为 128 个。此前,可通过安装包含大量工具的 MCP 服务器快速达到此限制,此时需手动取消选择部分工具才能继续操作。
本次更新,启用了实验性工具调用模式,当工具数量超过最大限制时生效,工具将自动分组,模型可激活并调用工具组。
配置参数为:github.copilot.chat.virtualTools.threshold
。
终端自动批准优化
上个月,VSCode 推出了终端自动审批的早期设置,此次更新对该功能进行了多项优化。
将 allowList 和 denyList 设置合并到 chat.tools.terminal.autoApprove
设置中。
正则表达式匹配器现在支持标志,这允许忽略大小写,例如在 PowerShell 中,其中大小写通常不重要:
json
{
"chat.tools.terminal.autoApprove": {
// 拒绝任何"Remove-Item"命令,无论大小写
"/^Remove-Item\\b/i": false
}
}
关于子命令匹配的工作原理存在一些混淆,现在已在设置描述中进行了详细说明,但同时也支持根据完整的命令行进行匹配。
json
{
"chat.tools.terminal.autoApprove": {
// 拒绝任何包含对可能是 PowerShell 脚本的引用的命令行
"/\\.ps1\\b/i": { "approve": false, "matchCommandLine": true }
}
}
自动批准的理由现已记录到终端输出通道,计划不久后在用户界面中显示此信息。
目前,自动批准功能仅可在 用户
或 远程
设置中启用,计划在未来的版本中重新启用该功能在 工作区
设置中的使用。
通过任务列表跟踪进度
配置参数:chat.todoListTool.enabled
。

本功能需要通过以上参数手动开启,在聊天界面中,需明确指示 AI 将需求分任务完成。
这是 AI 功能的一大进步,有了这个功能,我们的编程体验和质量都会显著提升。
优化模型管理体验

本次更新,对聊天服务提供商 API 进行了全面升级,该 API 负责语言模型访问功能。
用户现在可以选择在模型选择器中显示的模型,从而获得更加个性化和专注的体验。
在未来的几个内,这个功能和 API 将会趋于稳定,同时也会提供给扩展使用,使扩展可以提供自己的模型提供程序,并进一步扩展 自带密钥
功能。
Azure DevOps 远程仓库索引支持
#codebase
工具现已支持与 Azure DevOps 仓库关联的工作区中的远程索引,这使 #codebase
能够几乎瞬间搜索相关代码片段,无需任何初始化。
即使对于包含数万个可索引文件的大型仓库,此功能同样有效,此前,该功能仅支持与 GitHub 关联的仓库。
远程索引会在通过 Git 与 Azure DevOps 关联的工作区中自动使用,请确保已使用用于访问 Azure DevOps 仓库的 Microsoft 账户登录到 VS Code。
官方正在逐步在服务端推出此功能的支持,因此并非所有组织在初期都能使用该功能。根据推出情况的成功程度,计划为尽可能多的组织启用 Azure DevOps 的远程索引功能。
终端和任务工具的运行可靠性和性能得到提升
本次更新,已将终端中用于运行任务和命令的工具从 Copilot 扩展迁移至核心 microsoft/vscode 仓库。
此举使这些工具能够访问更底层且功能更丰富的 API,从而解决许多终端卡顿问题。
此次更新还带来了未来功能实现的便利性,因为我们不再受限于扩展 API 的能力,尤其是需要在聊天视图中自定义 UI 的功能变更。
使用聊天功能时,请注意没有 shell 集成

虽然官方努力让代理模式能够在终端中执行命令而无需 shell 集成,但由于此时终端本质上是一个黑盒,因此体验将始终不如预期。
没有 shell 集成时可能出现的问题包括:无法报告退出代码,以及无法区分命令空闲和提示符空闲,导致输出可能不会报告给代理
。
当使用 run in terminal
工具但未检测到 shell 集成时,会显示一条提示信息,指出此情况并指向相关文档。
任务和终端的输出轮询
代理现在会等待任务和后台终端完成后再继续执行,通过输出轮询的方式进行。
如果某个进程耗时超过 20 秒,系统会提示继续等待或继续执行。
代理将监控该进程最多两分钟,总结当前状态或报告进程是否仍在运行。
这在执行长时或易出错的命令时,能提升聊天中的可靠性。
任务意识提升
此前,代理仅能监控活跃任务。
现在,它能够跟踪并分析活跃任务和已完成任务的输出结果,包括那些失败或已完成运行的任务。
这一改进使故障排查更加高效,并能提供更全面的任务执行历史洞察。
代理对用户创建的终端的感知能力
代理现在能够实时监控工作区中所有用户创建的终端。
这使其能够追踪最近的终端命令并访问终端输出,从而为终端操作辅助和故障排除提供更丰富的上下文信息。
终端内联聊天功能优化

终端内联聊天现在能够更准确地检测当前的活动 shell,即使在子 shell 中工作时 (例如从 PowerShell 或 zsh 中启动 Python 或 Node)。
这种动态 shell 检测功能通过为当前 shell 类型提供更相关的命令建议,提高了内联聊天响应的准确性。
改进的测试运行工具
测试运行工具已重新设计。
现在,它会在聊天界面中实时显示进度,并且工具中的多个问题已修复。
编辑之前的请求
设置参数:chat.editRequests
。

上个版本中,允许用户编辑之前的请求并推出了几个不同的访问入口。
本版本中,已将内联编辑设为默认行为。
点击请求气泡即可开始编辑该请求,可以修改附件、更改模式和型号,并使用修改后的文本重新发送请求。
以最大化方式打开聊天窗口
设置参数:workbench.secondarySideBar.defaultVisibility
。

本次更新,新增了两个额外选项,用于配置次要侧边栏的默认可见性,使其以最大化方式打开:
maximizedInWorkspace
:打开新工作区时以最大化视图打开聊天窗口。maximized
:始终以最大化方式打开聊天视图,包括在空窗口中。
待确认的聊天消息

为了防止意外关闭正在进行文件修改或响应请求的代理会话的工作区,当尝试退出 VS Code 或关闭其窗口时,如果聊天响应正在进行中,将会显示一个对话框。
操作系统在用户执行操作时的通知
设置参数:chat.notifyWindowOnConfirmation
。

现在利用操作系统原生的通知系统,在聊天会话中需要用户确认时显示提示信息。
启用此功能请设置 chat.notifyWindowOnConfirmation
。
官方计划在未来改进这一体验,以便显示更多信息并允许直接从通知中进行确认。
目前,选择通知会将焦点切换到通知的来源窗口。
聊天中的数学支持

聊天现在支持在回复中渲染数学公式。
此功能由 KaTeX 提供支持,支持内联和块级数学公式。
内联数学公式可通过用单个美元符号包裹标记来编写 ( $...$ )
,而块级数学公式则使用两个美元符号 ( $$...$$ )
。
数学渲染功能可通过设置 chat.math.enabled
启用。
目前该功能默认处于关闭状态,但计划在未来版本中默认启用该功能,具体时间取决于后续测试结果。
Context7 集成用于项目框架搭建
设置参数:github.copilot.chat.newWorkspace.useContext7
。
当你在聊天中使用 #new
为新项目搭建框架时,如果你已经安装了 Context7 MCP
服务器,现在可以确保该项目使用 Context7 的最新文档和 API。
目前该功能默认关闭,可以通过以上参数手动设置开启。
MCP 服务器自动启动和信任
配置参数:chat.mcp.autostart
。

此前,当添加或更新 MCP 服务器配置时,VS Code 会在聊天视图中显示一个蓝色 刷新
图标,允许手动刷新工具列表。
在本次更新中,可以配置 MCP 服务器的自动启动行为,因此无需手动重启 MCP 服务器。
使用 chat.mcp.autostart
设置来控制此行为,还可以通过图标的工具提示更改此设置,并查看将要启动的服务器。
当 MCP 服务器在更新或更改后首次启动时,现在会显示一个对话框,提示信任该服务器。
在自动启动功能启用时,特别需要信任这些服务器,以防止意外执行不需要的命令。
远程 MCP 服务器客户端凭据流
对于希望支持身份验证的远程 MCP 服务器,理想的流程是使用支持动态客户端注册 (DCR) 的身份验证提供程序。
这使客户端 (VS Code) 能够自行注册到该身份验证提供程序,从而实现无缝的身份验证流程。
然而,并非所有身份验证提供商都支持 DCR,因此引入了一种客户端凭据流程,允许提供自己的客户端 ID (以及可选的客户端密钥),这些信息将在通过身份验证提供商的身份验证流程时使用。
以下是该流程的示例:
步骤 1:VS Code 检测到无法使用 DCR,并询问是否要进行客户端凭据流程。

重要提示:此时,您需要访问身份验证提供商的官方网站,并手动创建应用程序注册。在该页面中,您需要填写模态对话框中提到的重定向 URI。
步骤 2:从身份验证提供商的门户网站获取客户端 ID,可能还需要获取客户端密钥。将客户端 ID 输入到出现的输入框中,然后按回车键。

步骤 3:然后输入客户端密钥 (如有),然后按回车键 (如果没有,请留空)。

此时,系统将引导完成常规的身份验证流程,以验证正在使用的 MCP 服务器。
从 "账户" 菜单中移除动态身份验证提供商
自远程 MCP 身份验证功能添加以来,命令面板中新增了一个名为 身份验证:移除动态身份验证提供程序
的命令,该命令可用于移除客户端凭据 (客户端 ID 以及 (如可用) 客户端密钥) 以及与该提供程序关联的所有账户信息。

现在已在 账户
菜单中暴露了此命令,可以在 MCP 服务器账户中找到它。

或者在菜单的根目录下,如果你还没有任何 MCP 服务器账户。
对 resource_link 和结构化输出支持
VSCode 现已全面支持最新版本的 MCP 规范 (版本 2025-06-18
),并支持在工具结果中显示 resource_link
标签和结构化输出。
可访问的聊天提示
当代理提示用户输入时,例如是否继续等待一个进程,聊天提示现在可供屏幕阅读器访问。
当提示出现时,会收到提醒,可以使用键盘导航至该提示,并在可访问视图中查看消息。
控制聊天编辑时的文件打开操作
一个新的设置,accessibility.openChatEditedFiles
,允许选择在聊天中编辑文件时是否自动打开这些文件。
启用此设置可更精细地控制编辑器中显示的文件。
查看所有和之前的编辑命令
查看所有编辑
和 查看上一编辑
命令现已在整个编辑器中可用,便于查看代理所做的更改。
这些命令在禁用 accessibility.openChatEditedFiles
时特别有用,可在不打开每个文件的情况下跟踪编辑内容。
侧边栏可见性通知
当主侧边栏或次侧边栏显示或隐藏时,ARIA 公告现在会通知您此更改。
这通过确保屏幕阅读器用户了解侧边栏可见性更新,从而提升了可访问性。
使用 Playwright 进行无障碍测试
本次更新,为编辑器添加了基于 Playwright 的自动化无障碍测试。
这些测试有助于持续验证 VSCode 是否符合无障碍标准和最佳实践,从而为所有用户提供更好的使用体验。
设置搜索建议
设置编辑器搜索框中的 AI 搜索结果切换按钮 (以闪烁图标显示
) 现已向所有用户开放。
当 AI 搜索结果已加载并可用时,该切换按钮处于启用状态。
点击该按钮可在 AI 搜索结果与非 AI 搜索结果之间切换。
AI 设置的搜索结果是基于语义相似性而非字符串匹配。

例如,当你搜索 增加文字大小
时,editor.fontSize
会作为 AI 设置的搜索结果显示。
编辑器选项卡上下文菜单

本次更新,整理了编辑器选项卡的上下文菜单,将与拆分和移动相关的选项归类到一个子菜单中。
AI 使用统计进度条
设置参数:editor.aiStats.enabled
。

本次新增了一项实验性功能,用于显示基础 AI 统计信息。
配置 editor.aiStats.enabled
选项启用此功能,该功能默认处于关闭状态。
此功能会按项目显示 AI 插入的字符与手动输入的字符所占的百分比。
同时,它还会记录在当前天内接受的内联和下一编辑建议的数量。
Notebook 内置 Agent 聊天工具

笔记本内联聊天控件现已支持使用完整的笔记本代理工具集,从而实现更多高级功能,例如运行单元格和将包安装到内核中。
要在笔记本中启用代理工具,需要启用新的实验性设置 inlineChat.notebookAgent
。
目前,这还需要启用内联聊天 v2 的设置 inlineChat.enableV2
。
在使用 uv 创建的虚拟环境中安装依赖项

现在支持在使用 uv 创建的虚拟环境中运行 Jupyter Notebooks
时自动安装所需的依赖项。
Git 工作目录支持
为了解决一个长期存在的用户需求,在本次更新中新增了 Git 工作目录支持。
工作目录允许同时检出多个分支,从而轻松测试更改或在不同分支间并行工作,而无需切换上下文。


当打开包含 Git 仓库的文件夹或工作区时,现在会自动检测工作树并将其显示在 源代码控制仓库
视图中。
可以通过命令面板或 源代码控制仓库
视图中提供的命令,在新的或当前窗口中查看、创建、删除和打开工作树。
可以通过切换 git.detectWorktrees
设置来禁用此功能。
仓库视图

源代码控制仓库视图显示了当前文件夹/工作区中发现的所有源代码控制提供程序。
在此版本中,更新了视图的渲染方式,以便直观区分仓库、子模块和工作树。
同时,还显示了仓库、子模块和工作树之间的父子关系。
终端提示中的文档支持
配置参数:
- Python 终端 shell 集成已启用:
python.terminal.shellIntegration.enabled
。 - Python 分析支持所有 Python 文档:
python.analysis.supportAllPythonDocuments
。

终端建议功能现已支持语言服务器 (LSP),并新增了内联文档,与编辑器中的显示效果类似。
从 Python REPL 开始,在输入命令时将自动获得有用的描述和使用详情。
语音输入
现在,终端已支持自然语言输入,包括通过 Gemini 和 Claude 扩展启用的终端,已重新引入了终端中的语音输入功能。
可以通过执行以下终端命令来开始或停止语音输入:
终端:开始语音输入
终端:停止语音输入
改进的壳体集成诊断

Shell 集成是集成终端中许多功能的基础,例如粘性滚动、快速修复以及代理模式对终端内部运行状况的理解能力。
本次更新对终端悬停并选择 显示详细信息
时的诊断功能进行了优化。
现在,可以看到检测到的 shell 类型和当前工作目录。
对 Python 3.13 及更高版本的 Shell 集成支持

现在支持在使用 Python 3.13 或更高版本时集成 shell。
启用后,PyREPL 将自动禁用以确保兼容性。
如果希望继续使用 PyREPL,可以禁用 shell 集成。
Python 环境扩展改进
Python 环境扩展在向稳定用户分阶段推送的过程中,持续收到了 bug 修复和功能改进。
若要在分阶段推送期间使用 Python 环境扩展,请确保该扩展已安装,并向 VS Code 的 settings.json 文件中添加以下内容:"python.useEnvironmentsExtension": true
可扩展悬停效果适用于 JavaScript 和 TypeScript
将鼠标悬停在 JavaScript 或 TypeScript 中的一个符号上时,VSCode 会尝试显示该符号最相关的 IntelliSense 类型信息。
类型可能非常复杂,因此面临的挑战之一是找到在显示足够详细信息以确保实用性与避免信息过载之间的平衡。
很难制定一个通用的解决方案,而且希望显示的类型详细程度可能会根据正在处理的内容而有所不同。
这就是为什么在这次迭代中,新增了用户界面,让我们能够更灵活地控制类型在悬停时的显示方式。
当我们将鼠标悬停在符号上时,现在可以点击悬停控件左侧的小型 + 图标,将悬停中的接口和复杂类型展开为其组成部分。
例如,可以通过此功能直接在悬停中查看接口的属性:

悬停提示可以多次展开,每次展开都会递归展开上一级展开的类型。
如果展开过多,只需点击 - 图标即可返回上一级。
请注意,并非所有类型都支持展开,仍需对展开的范围设置一定限制。
GitHub 提交请求
GitHub Pull Requests 扩展程序取得了更多进展,该扩展程序使我们能够处理、创建和管理拉取请求及问题。
拉取请求头部清理

在拉取请求描述的标题栏中简化了按钮栏。
复制操作现已移至拉取请求链接的右键上下文菜单中。
在聊天中显示编码代理的 PR
设置参数:githubPullRequests.codingAgent.uiIntegration
。

当启动一个编码代理会话 (通过 #copilotCodingAgent
或使用 委托给编码代理
操作) 时,拉取请求会在聊天视图中以卡片形式显示。
启用 githubPullRequests.codingAgent.uiIntegration
设置,以在聊天视图中启用新的 委托给代码代理
按钮,适用于已启用该代理的仓库。
编码代理聊天
在上一版本的 Copilot 编码助手集成基础上,现在可以从专用的聊天编辑器中管理编码助手会话。
这使我们能够跟踪编码助手的进度、提供后续指令,并在专用的聊天编辑器中查看助手的响应。
使用 #copilotCodingAgent
工具或通过 UI 控件启动编码代理会话。

在附带的聊天编辑器中跟踪编码代理的进度。

直接在聊天中提供后续操作指引。

聊天会话视图
配置参数:chat.agentSessionsViewLocation
。

启用 chat.agentSessionsViewLocation
设置以尝试此实验性功能。
当设置为 view 时,将在 VSCode 侧边栏中看到一个新的 聊天会话
视图。
此视图允许管理和与本地聊天会话以及编码代理会话进行交互。

当设置为 showChatsMenu
时,编码代理的聊天会话将与本地聊天历史记录并列显示。

此集成需要最新版本的 GitHub Pull Request 扩展以及一个支持 Copilot 编码助手的已打开仓库。如需更多信息,请参阅 VS Code 中关于如何使用编码助手的新文档。
扩展开发:终端激活事件
扩展程序现在支持两种新的激活事件:
onTerminal
:当任何终端被打开时触发。onTerminalShellIntegration
:当终端启用富文本 shell 集成时触发。
可以使用 shellType 指定要针对的特定终端。
例如,当 Bash 终端启用了终端集成时,onTerminalShellIntegration:bash
将会生效。
在聊天响应中渲染自定义网页视图
聊天输出渲染器 API 允许扩展程序将聊天响应扩展到文本和图像之外。
借助该 API,扩展程序可以使用网页视图在聊天输出中渲染任意 HTML 内容。
典型用例包括自定义可视化效果、内联预览,甚至交互式控件。

聊天输出渲染器扩展示例演示了如何使用此 API 在聊天响应中渲染 Mermaid 图表。

真正酷炫的地方不在于 VSCode 能够渲染 Mermaid 图表,而是这种渲染功能完全可以通过扩展实现。
借助这一功能,可以在聊天界面中对自定义输出进行迭代。
以下是 API 的简要工作流程:
- 注册一个语言模型工具,该工具可在响应中返回自定义数据,使用 MIME 类型来识别此数据。
- 为该 MIME 类型注册一个聊天输出渲染器。
- 当语言模型调用该工具时,调用聊天输出渲染器将其渲染为网页视图并返回给响应。
此 API 具有极大的潜力,能够实现一些令人惊叹的新聊天体验。
聊天会话提供商 API
新的聊天会话提供程序 API 提案使扩展程序能够将自己的聊天后端集成到 VS Code 的原生聊天界面中。
使用该 API,扩展程序可以打开新的聊天会话、填充该会话的聊天记录,并响应新的用户提示。
此 API 仍处于早期开发阶段,未来可能会有变动。
不过,官方已经开始使用它来支持新的 GitHub 编码助手会话流程,该流程可从 GitHub 加载聊天内容,并允许与由 GitHub 全面控制的助手进行聊天。
任务执行终端
扩展程序开发者现在可以通过新的 taskExecution.terminal
属性访问与正在运行的任务关联的终端。
这使得开发者更容易识别与特定任务关联的终端,并通过编程方式与之交互。
SecretStorage 密钥 () API
如果你曾经想获取扩展程序在 SecretStorage 中存储的键列表,现在你可以通过新提出的 keys()
API 实现:
js
export async function activate(context: ExtensionContext) {
await context.secrets.store('mySecret', 'superSecretValue');
await context.secrets.store('mySecret2', 'superSecretValue2');
const keys = await context.secrets.keys();
console.log('All secret keys:', keys); // returns ['mySecret', 'mySecret2']
}
注意:此更改依赖于提供 Secret Storage 替代实现的任何组件的更改,特别是已采用新 API 的
https://vscode.dev
,以及即将采用新 API 的https://github.dev
。在不支持此 API 的环境中,该 API 将抛出异常。
微软包更新
packages.microsoft.com
已更新其签名密钥,因此使用较新发行版的 Linux 用户在安装 VS Code 时应不再看到与密钥相关的警告或错误。
基于 Debian 的发行版会自动获取新密钥,而其他发行版的用户可能需要在导入新密钥前手动删除旧密钥。
往期文章:
- VSCode v1.88 发布,更新记录
- VSCode v1.92 发布,性能提升
- VSCode v1.96 发布,AI 功能大幅提升
- VSCode v1.97 发布,功能直追 Cursor
- VSCode v1.98 发布,AI 功能大幅增强
- VSCode v1.99 发布,王者归来,Agent 和 MCP 正式推出
- VSCode v1.100 发布,AI 大幅增强,浮动窗口,扩展支持 ESM,env 默认高亮
- VSCode v1.101 发布,MCP 极大增强关联万物,基于 VSCode 的操作系统雏形已初见端倪
- VSCode v1.102 发布,AI 体验大幅提升
最后给大家分享一下我的主打产品,VSCode 编程神器 fnMap (函数地图),欢迎大家体验。
安装地址:sourl.cn/zmnsPf
