Visual Studio Code 1.120
发布日期:2026 年 5 月 13 日
下载:Windows: x64 Arm64 | Mac: 通用版 Intel Apple Silicon | Linux: deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 1.120 版本。此版本将“智能体 (Agents)”窗口引入稳定版,改进了 BYOK(自带密钥)模型的可视性和控制能力,并提升了 Markdown 的使用体验及智能体安全性。以下是本版本的主要亮点。
-
稳定版中的智能体窗口:通过全新的“智能体”窗口,以“智能体优先”的方式处理所有项目。
-
BYOK 改进:跟踪并优化 Token 使用量,并配置 BYOK 模型的思考深度。
-
Markdown 改进:通过 diff 的 Markdown 预览,直观查看 Markdown 内容而非语法代码。
-
命令风险评估:在终端命令运行前评估其风险。
-
Token 优化:通过压缩大型终端输出,减少上下文窗口占用。
编码愉快!
代理
使用“智能体”窗口(预览版)跨项目编排任务
虽然 VS Code 已被数百万开发者用于智能体驱动的编码,但其编辑器布局主要针对单任务、单工作区的流程进行了优化。为了让我们(以及我们的用户!)能够跨多个项目使用多个智能体工作,我们创建了一种新的窗口类型:智能体 (Agents)。
全新的“智能体”窗口是你所熟悉的编辑器的辅助工具:它专为智能体驱动的开发而构建,提供了一个专用空间来跨多个项目探索、迭代和审阅任务,并支持在不同任务间无缝切换。由于 VS Code 旨在为开发者提供选择权和灵活性,“智能体”窗口允许你选择自己的智能体工具链,在远程机器上运行智能体,并根据需要配置环境,包括颜色主题、快捷键和扩展。
在过去几个版本中,“智能体”窗口已作为 VS Code Insiders 的一部分提供。从本版本开始,它正式作为预览功能进入 VS Code 稳定版。
你可以通过多种方式打开“智能体”窗口,包括点击 VS Code 标题栏中的“在智能体窗口中打开 (Open in Agents)”按钮。要了解更多关于其工作原理及功能的信息,请访问智能体窗口文档。
有哪些新功能?
如果你已经在 Insiders 中使用过“智能体”窗口,感谢你的支持!我们一直在根据你的反馈进行改进,本周推出了以下更新:
- 偏好设置在会话间持久保存:当你创建新会话时,系统会保留你在智能体工具链和隔离模式等下拉菜单中的最后选择。
- 更轻松地放弃更改:你可以直接从“更改 (Changes)”面板中丢弃编辑内容。
- 在会话中同步上游更改:文件面板上的同步按钮允许你查看基础分支的上游更改,并在智能体开始工作前将其拉取。
- 更确定性的更改交互:由于采用了确定性处理,“更改”面板中的操作现在可以更快完成。
- 默认查看已完成会话的所有更改:当你打开标记为“已完成”的会话时,系统会自动呈现智能体所做的全部修改供你快速查看。
- 在近期会话间导航:使用标题栏左上角的箭头按钮,无需离开窗口即可在近期会话间跳转。
- 按窗口覆盖设置:智能体窗口现在共享你所有的 VS Code 设置,当你需要不同的行为时,可以专门针对智能体窗口覆盖特定设置。
你的反馈对完善智能体功能至关重要。请在 GitHub 上提交问题 或浏览 现有问题。
扩展性
仅提供静态内容(如主题、语法高亮、语言支持和快捷键)的扩展会自动在智能体窗口中激活。我们还测试了 Marketplace 中排名前 100 的扩展,部分扩展在默认 VS Code 配置文件中安装后也能正常激活。
对于其他扩展,你可以通过 ID 使用 extensions.supportAgentsWindow 设置来启用它们。通过此方式启用的任何扩展都需要先安装在你的默认 VS Code 配置文件中。
"extensions.supportAgentsWindow": {
"myextension.id": true
}
虽然我们仍在完善扩展支持,但我们期待与扩展开发者合作,共同探讨在智能体窗口中启用扩展所带来的价值,以及扩展应如何在此环境中表现。无论你是想构思利用跨项目智能体运行的新场景,还是分享你现有扩展在智能体窗口中的行为反馈,我们都非常乐意通过 GitHub 问题 与你协作。
自动发现 Copilot CLI 插件
通过 GitHub Copilot CLI 安装的智能体插件现在会被 VS Code 自动识别,因此执行一次 copilot plugin install 即可同时在两端生效。此前,你需要分别在 VS Code 中安装插件,或将其路径添加到 chat.plugins.paths 设置中。
语言模型
通过 BYOK(自带密钥),你可以使用来自 Anthropic、OpenAI 等提供商的个人 API 密钥,从而利用自己的计费方案或模型托管选项。详情请参见 BYOK 文档。
查看 BYOK 模型的 Token 使用量
管理模型的上下文窗口是获得良好效果并控制成本的关键。模型可能会丢失对话中的重要细节,且 Token 使用量过高会增加成本。此版本增强了 BYOK 模型 Token 使用量的可见性,帮助你监控上下文窗口状态。
此前,当你使用自带 API 密钥(Anthropic、OpenAI 等)与模型聊天时,控制面板显示的 Token 使用量始终为 0,因为 Token 统计仅对内置模型有效。
现在,聊天视图中的上下文窗口控件可以显示 BYOK 模型的准确 Token 使用量和占比。

配置 BYOK 推理模型的思考深度
具有推理能力的语言模型允许你配置其“思考深度 (thinking effort)”,这是一种权衡响应质量与速度/成本的方式。你可以在思考深度文档中了解详情。
在此版本中,你现在可以直接从聊天视图的模型选择器中为 BYOK 推理模型配置思考深度。所选深度会在每次请求时发送给模型,让你能够根据需求在延迟、成本和答案质量之间进行平衡。

适用范围:通过兼容 OpenAI 的端点(OpenAI、xAI (Grok)、OpenRouter 以及自定义 OpenAI / Azure OpenAI 部署)提供的 BYOK 推理模型。Anthropic 模型此前已支持此功能,现在的控件在各提供商之间保持一致。
按提供商组织的模型选择器
聊天视图中的模型选择器现在按提供商对模型进行分组,当你从多个来源获取模型时,可以更轻松地找到所需模型。你也可以按名称搜索模型。
最近使用的模型现在会在模型名称旁以灰色字体显示提供商名称,以便你快速区分来自不同提供商的同名模型。
你可以在聊天输入框中输入 /models 快速访问模型列表。
聊天
终端工具输出压缩(预览)
设置: chat.tools.compressOutput.enabled
来自 git diff、ls -l 和 npm install 等命令的过长终端输出可能会占用模型上下文窗口的很大一部分,从而减少了代码空间和智能体的推理空间。
当你启用 chat.tools.compressOutput.enabled 设置后,VS Code 会在将命令输出发送给模型之前对其进行后处理。diff 中的大型未更改块会被折叠,锁文件和快照差异会被丢弃,ls -l 会简化为条目名称,npm install 的进度条、弃用警告和审计总结会被移除。
任何压缩后的输出前都会加上一个简短的横幅,以便模型知道哪些过滤器被触发,以及如果需要原始文本时如何禁用压缩。
终端命令风险评估(实验性)
设置: chat.tools.riskAssessment.enabled
为了帮助你快速判断是否需要仔细查看某条命令,终端命令确认提示现在包含一个风险徽章,并附带 AI 生成的关于该命令功能的说明。
每个徽章显示以下三个级别之一,并附带针对特定命令的一句话总结:
- 安全 (Safe)(绿色):读取文件或打印输出,不进行任何修改。
- 注意 (Caution)(橙色):修改工作区、安装包或通过网络发送数据。
- 请仔细审阅 (Review carefully)(红色):执行可能难以或无法撤销的操作,例如强制推送到远程仓库或删除工作区外的文件。

Claude 和 Copilot CLI 的计划模式控件
设置: chat.planWidget.inlineEditor.enabled
当你配合 Claude 智能体或 Copilot CLI 使用计划模式时,VS Code 会显示一个内联计划控件,允许你在智能体开始执行前审阅和调整计划。此版本对此流程进行了多项改进:
- 内联编辑计划:编辑计划现在在控件内部的内联编辑器中进行,而无需打开单独的编辑器标签页,这样你可以在不丢失上下文的情况下迭代计划。
- 更清晰的反馈模式:当你对计划提供反馈时,控件会显示更清晰的指示,明确你正处于反馈模式,并展示你目前已添加的反馈。
- 禁用内联编辑器:通过配置 chat.planWidget.inlineEditor.enabled 设置,你可以选择退出内联编辑体验,回退到在常规编辑器标签页中进行编辑。
语言
Markdown diff 预览(预览)
当你从源代码管理 (Source Control) 视图打开 Markdown 文件时,可以使用 VS Code 渲染后的 Markdown 预览而非原始源码来查看差异 (diff)。

这使得识别有意义的更改(例如更新的标题、新章节、修改后的图片或重构的列表)变得非常容易,无需逐行人工解析 Markdown 语法。
Markdown diff 预览同时支持并排差异视图和内联视图。

要尝试此功能,请从源代码管理中打开 Markdown diff(或任何其他差异编辑器),并使用重新打开编辑器方式... (Reopen Editor With...) 切换到 Markdown 预览 diff 视图。你也可以使用 workbench.diffEditorAssociations 设置默认以 Markdown 预览方式打开差异。
"workbench.diffEditorAssociations": {
"*.md": "vscode.markdown.preview.editor"
}
此功能仍处于预览阶段,可能会遇到问题。我们认为它对于审阅智能体生成的文档更改或 Pull Request 特别有用。
Markdown 预览默认设置更改
VS Code 内置的 Markdown 预览功能已存在一段时间,部分原始功能不再像以前那样必要。本次迭代中,我们决定默认禁用其中两项功能:
-
markdown.preview.doubleClickToSwitchToEditor :在预览中双击切换回源码编辑器。用户常反映这会造成困扰,因为他们希望使用双击进行选择。我们现在有了“重新打开编辑器方式”等功能,基本上取代了此功能。
-
markdown.preview.markEditorSelection :标记编辑器中当前选定的行。我们认为这对现代开发工作流来说用处不大。
如果你更喜欢之前的行为,可以重新启用这些设置。
Markdown 路径补全和校验对 HTML id 的支持
我们的内置 Markdown 路径补全 和 链接校验 现在可以识别 Markdown 文件中 HTML 元素的 id 属性。
<div id="install-guide">...</div>
See the [installation steps](#_install-guide) for details.
这些 ID 的链接现在会出现在补全建议中。

它们也用于链接校验。

Markdown 表格智能选择
Markdown 表格现在支持基本的智能选择。使用扩展选择 (Expand Selection) (⌃⇧⌘→) 将选择从单元格扩展到行,再扩展到完整表格;使用缩小选择 (Shrink Selection) (⌃⇧⌘←) 进行反向操作。
提议的 API
自定义编辑器 diff
新的 customEditorDiffs 提案 API 允许自定义编辑器使用专用的差异 UI 来渲染差异。这正是新的 Markdown diff 预览 功能背后的驱动力,对于底层源代码的文本差异没有意义的场景,它开启了更佳的对比体验。
自定义编辑器提供商可以通过在 CustomReadonlyEditorProvider 或 CustomTextEditorProvider 上实现以下一个或两个方法来加入该功能:
-
resolveCustomEditorInlineDiff(documents, webviewPanel, token):在单个 webview 中渲染差异,扩展程序可以访问原始文档和修改后的文档。 -
resolveCustomEditorSideBySideDiff(documents, webviewPanels, token):使用两个 webview(每侧一个)渲染差异,由 VS Code 协调布局和滚动同步。
结合 diffEditorPriority,扩展现在可以完全控制其自定义编辑器是否处理 diff 以及如何呈现这些 diff。请参见 issue #138525 跟进并提供反馈。
分离自定义编辑器的 diff 和合并优先级
自定义编辑器扩展现在可以为编辑、差异对比和合并文件类型设置不同的默认优先级。customEditors 贡献点除了现有的 priority 之外,新增了两个可选字段:diffEditorPriority 和 mergeEditorPriority。
"contributes": {
"customEditors": [
{
"viewType": "myExtension.editor",
"displayName": "My Custom Editor",
"selector": [
{ "filenamePattern": "*.custom" }
],
"priority": "default",
"diffEditorPriority": "option",
"mergeEditorPriority": "option"
}
]
}
上述贡献使得打开 *.custom 文件时使用自定义编辑器,但从源代码管理打开差异时使用常规文本差异视图。
此 API 仍处于提案阶段。请尝试使用并在 issue #292379 中分享你的反馈。
文档差异 (Document diff)
新的 documentDiff 提案 API 通过 workspace.getTextDiff(original, modified, options?) 将 VS Code 的内置差异算法暴露给扩展程序。它返回一个按行差异的可迭代流,以及一个包含摘要信息(完全一致、可能不完整以及可选的移动检测)的 complete Promise。每个变更中都包含了字符级的范围。
这对于自定义 diff 编辑器(参见 自定义编辑器 diff)特别有用,它们可以直接渲染与内置编辑器完全一致的差异,而无需实现自己的算法。
const diff = vscode.workspace.getTextDiff(originalDoc, modifiedDoc, {
ignoreTrimWhitespace: true,
computeMoves: false
});
for await (const change of diff.changes) {
// change.originalRange, change.modifiedRange, change.innerChanges
}
const { identical, mayBeIncomplete, moves } = await diff.complete;
跟踪进度并在 issue #315174 中提供反馈。
对扩展的贡献
GitHub 拉取请求
GitHub Pull Requests 扩展取得了更多进展,该扩展使您能够处理、创建和管理拉取请求和问题。新功能包括:
- 支持通过复制/粘贴和上传按钮将图片上传到 Pull Request 评论。
- 在工作树 (worktree) 中检出 Pull Request 时,文件夹名称更具描述性。
"githubIssues.issueBranchTitle"现在支持${issueType}模板变量。
查看该扩展 0.144.0 版本的更新日志,了解该发布的所有内容。
已弃用的功能和设置
此版本中的新弃用项
即将弃用的功能
值得注意的修复
- microsoft/vscode #314545 在集成浏览器的 localhost 目标中包含 All-Interfaces 链接。
感谢
对我们问题跟踪的贡献
- @gjsjohnmurray (John Murray)
- @RedCMD (RedCMD)
- @IllusionMH (Andrii Dieiev)
- @albertosantini (Alberto Santini)
对 vscode 的贡献
- @damonxue (DamonXue): 右键点击非激活编辑器标签页时,“添加到聊天”不生效 PR #315197
- @davidwengier (David Wengier): 更新 Razor 仓库的仓库和路径 PR #313011
- @Dmitriusan: 修复子文件中的 gitignore 取消忽略规则未能覆盖父级/全局规则的问题 PR #300613
- @EhabY (Ehab Younes): 通过 Keepalive 超时检测死连接 PR #310131
- @JeffreyCA
- 更新 Azure Developer CLI (azd) 的 Fig 规范 PR #308613
- 集成终端 - 修复陈旧的 OSC 8 链接悬停工具提示问题 PR #309539
- @kevin-m-kent
- 在 response.* 事件和子智能体循环中发出 parentRequestId PR #314309
- 为聊天请求添加 X-Interaction-Type 头部和 requestKind 遥测属性 PR #312262
- 发布稳定版符号工具描述 PR #315686
- @Larsjep (Lars Jeppesen): 修复 https://github.com/microsoft/vscode/issues/291188 PR #314713
- @n-gist (n-gist): 确保 TreeDataProvider.getChildren() 的返回值不会被 vscode 修改 PR #306955
- @Pengkun-ZHU (pzhu): Pzhu/feature 自定义暂停时间 PR #298934
- @pranavvaid-ac
- 在延迟锚点解析后更新聊天内联引用 PR #314281
- 使用 tree-sitter 回退改进链接符号锚点 PR #314864
- @ruryu (ruryu): fix(agentHost): await dbClose 以解决不稳定的会话数据库测试 PR #313810
- @ShehabSherif0 (Shehab Sherif): 修复作用域检测中不正确的 inspect 属性使用 PR #301472
- @SimonSiefke (Simon Siefke): fix: utilityProcessWorkerMainService 中的内存泄漏 PR #294005
- @Tyriar (Daniel Imms)
- 将歧义选项放入接口 PR #313953
- 移除未使用的 export const PR #315244
- @yemohyleyemohyle: Yemohyle/响应成功 GDPR 拦截 PR #315128
- @yogeshwaran-c (Yogeshwaran C): 从终端 quickpick 过滤匹配中剥离 codicons PR #313197
对 vscode-pull-request-github 的贡献
- @MaxDNG (Maxime Guitet): 修复:重新设置拉取目录子项的父级,确保复选框正确刷新 PR #8679
我们非常感谢大家在新功能准备就绪后立即进行试用,请经常回来查看并了解新功能。
如果您想阅读以前 VS Code 版本的发行说明,请访问 code.visualstudio.com 上的更新页面。