Visual Studio Code 1.118
发布日期:2026年4月29日
下载:Windows: x64 Arm64 | Mac: 通用版 Intel Silicon | Linux: deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 1.118 版本。此版本扩展了 Copilot 代理的使用范围,并提高了它们的运行效率。以下是本版本的主要亮点:
-
远程控制:通过 GitHub.com 或移动设备远程跟踪并控制您正在进行的 Copilot CLI 会话。
-
代码库搜索与上下文:在任何工作区使用语义搜索,或跨 GitHub 存储库和组织进行文本搜索,快速找到所需代码。
-
技能专属上下文:隔离技能执行,让主聊天对话保持聚焦,答案更加精准。
-
聊天会话见解:将聊天记录转换为每日站会报告、技巧提示,以及有关过往工作的解答。
-
企业控制:将 AI 功能的使用权限限制在管理员信任的组织范围内。
-
提高 Token 效率:以更低的 Token 使用量处理更多请求,提升性价比。
编码愉快!
代理体验
Visual Studio Code Agents (Insiders)
注意:Visual Studio Code Agents 应用目前处于预览阶段,仅在安装 VS Code Insiders 时可用。
Visual Studio Code Agents 是一款随 VS Code Insiders 一起提供的配套应用。它提供了一个专注于代理的环境,您可以在其中跨存储库运行并行会话,并迭代多步编码任务。我们在 1.115 版本中首次引入了 Agents 应用,并根据用户反馈持续改进。
在本版本中,您可以直接从 VS Code Insiders 标题栏发现 Agents 应用,从而轻松进入以代理为驱动的工作流。我们还发布了专门的 Agents 文档来帮助您入门。
近期功能亮点包括:
-
VS Code 与 Agents 共享状态:Agents 应用与 VS Code Insiders 共享更多状态,从而实现两者间更流畅的切换。这包括身份验证(在 Windows 上)、AI 自定义设置、工作区信任、最近使用的文件夹以及键盘快捷键。
-
Claude 代理:Agents 应用现已支持 Claude 代理,您可以将其与其他代理(如 Copilot CLI 或 Copilot Cloud)协同使用,共同完成编码任务。
-
Web 客户端:通过浏览器访问 insiders.vscode.dev/agents 即可使用 Agents 体验。只要您运行了 Dev Tunnel(通过
code-insiders tunnel),即可在任何机器上使用以代理为驱动的工作流。入门方法:下载 VS Code Insiders,运行code-insiders tunnel设置 Dev Tunnel,然后即可从 Web 连接到它。 -
后台浏览器:集成浏览器在会话间保持状态,因此当您返回会话时不再刷新。这使得在使用集成浏览器预览更改的同时让代理继续工作时,上下文切换更加顺畅。
-
更改布局控制:当代理进行更改时,您可以并排打开差异视图 (Diff view) 与聊天视图,或者在模态窗口中打开以专注于更改内容。使用差异视图工具栏中的布局控件可在不同显示模式之间切换。
-
动态标题栏入口:一键在 VS Code Insiders 和 Agents 应用之间切换。从 VS Code Insiders 标题栏选择 Open in Agents 进入 Agents 应用,或从 Agents 标题栏选择 Open in VS Code 返回 Insiders 编辑器。
您的反馈有助于我们塑造 Agents 体验——请继续通过 在 GitHub 上提交 issue 与我们分享。您还可以查看 现有 issue,了解他人的反馈并在特定话题上贡献您的意见。
Copilot CLI 会话远程控制(实验性)
设置: github.copilot.chat.cli.remote.enabled
以往,要与 Copilot CLI 会话交互,您必须坐在启动会话的机器前。如果您离开时代理暂停等待批准或遇到问题,工作就会停滞。现在通过远程控制,您可以随时随地监控并引导正在进行的 Copilot CLI 会话,无需受限于物理设备。
Copilot CLI 远程控制允许您在另一台设备上(通过 GitHub.com 或 GitHub 移动应用)检查进度、响应批准并引导工作,同时 Copilot CLI 会话会在后台持续运行。
尝试远程控制:
- 启用 github.copilot.chat.cli.remote.enabled 设置。
- 在 Copilot CLI 对话中输入
/remote on即可开始。
您可以随时运行 /remote 查看远程控制状态,或使用 /remote off 禁用远程控制。
同步 Copilot CLI 会话标题
聊天会话标题在聊天列表、聊天编辑器选项卡和标题以及 Copilot CLI 终端界面等不同位置通用,旨在提供统一的会话标识。此前,在 Copilot CLI 会话中重命名可能导致其他界面显示旧标题。
VS Code 现在采用 Copilot SDK 会话标题 API 作为事实来源,并通过单一标题解析器处理会话列表和聊天编辑器标题,以保持显示一致。现在,无论从何处重命名会话,聊天会话列表、编辑器选项卡和终端中的 copilot --resume 均会保持同步。
在终端中通过 Copilot CLI 执行的重命名操作,也将在 VS Code 下次读取会话元数据时同步更新。
Copilot 默认添加为 Git 协作作者
VS Code 现在默认启用 Git AI 协作作者功能。当 Copilot 对您的文件进行更改时,它会自动作为协作作者添加到提交记录中。
您可以使用 git.addAICoAuthor 更改此默认行为。
代码库搜索与上下文
非 GitHub 存储库的语义索引已向所有用户开放
当您问 Copilot “我们在哪里处理用户身份验证?”时,代理必须将您的模糊意图转化为具体相关的文件和符号。纯文本搜索只能匹配字面词汇,因此当代码库使用不同术语时常会错过相关代码。语义索引让代理能够通过含义进行搜索,即便代码中未出现“authentication”一词,也能搜出包含 login、signIn、verifyCredentials 或 OAuth token exchange 等相关术语的文件。这为代理提供了更扎实的回答和编辑基础。
语义索引现已在所有工作区可用。此前该功能仅限于使用 GitHub 或 ADO 存储库的工作区。
语义索引会自动构建并维护。使用 GitHub 或 ADO 存储库的工作区通常可以立即使用语义搜索,而其他工作区可能需要几分钟来构建初始索引。您也可以使用 Build Codebase semantic index 命令显式构建当前工作区的索引。
语义搜索是 Copilot 理解工作区并回答问题的众多工具之一。Copilot 会自动选择最合适的工具,您通常无需干预搜索过程。查看 Copilot 如何理解您的工作区文档,了解有关语义搜索及 Copilot 使用的其他工具的更多详细信息。
跨存储库或组织的 GitHub 文本搜索
当代理需要查找精确字符串、API 名称或错误消息时,语义搜索并不总是最佳选择。此时您需要的是跨已知存储库或整个组织的精确匹配,而非模糊匹配。
为此,Copilot 现包含内置的 githubTextSearch 代理工具,它可以在 GitHub 存储库或整个 GitHub 组织的代码中进行 grep 式搜索。这补充了现有的 githubRepo 工具(用于 GitHub 存储库内的语义搜索)。这些工具结合使用,使代理能以更丰富的方式从当前工作区以外的代码库中学习。
对于搜索和管理 Issue 或 Pull Request 等更高级的 GitHub 功能,建议使用 GitHub MCP 服务器。
技能专属上下文(实验性)
设置: github.copilot.chat.skillTool.enabled
当您使用执行多步工具调用或拉取大量参考资料的技能时,这些辅助内容可能会挤占主聊天上下文,从而降低后续响应的质量。
现在,您可以将技能运行在专属的子代理上下文中,将其执行过程与主对话隔离开来,从而保持主上下文的聚焦,并确保技能响应拥有更高质量。
要在专属子代理上下文中运行技能,请在 SKILL.md 的 frontmatter 中设置 context 属性。
---
name: my-skill
description: My skill description
context: fork
---
该功能为实验性,需要开启 github.copilot.chat.skillTool.enabled 设置。
工作区 .mcp.json 文件与服务器去重
我们增加了对工作区级 .mcp.json 文件的支持以声明 MCP 服务器,与 Copilot CLI 等其他工具保持一致。
此外,我们引入了同名 MCP 服务器去重机制。默认情况下,仅启用最具体的 MCP 服务器,启用新服务器将禁用同名旧服务器。您可以通过在扩展视图中搜索 @mcp @installed 或通过 Chat: Open Customizations 窗口来控制启用的 MCP 服务器。
提高 Token 效率
4月27日,GitHub 宣布 Copilot 将于 2026年6月1日转向 基于用量的计费模式。为帮助您获得最大价值,我们采取了多项措施来提高 Token 效率,同时不影响代理质量。以下大部分改进已生效,若有可选项设置,将在相关章节注明。
提示词缓存效率
在过去几次迭代中,我们改进了系统提示词、工具、对话历史和摘要的缓存重用机制,而未改变代理行为。实际上,这意味着重复上下文的 Token 计费率大幅降低(例如,Anthropic 模型降低约 10 倍),有助于在长会话的多轮代理工作流中降低成本。
策略性缓存断点放置。 我们审计了缓存断点的位置,确保它们被高效利用并放置在稳定边界上:系统提示词末尾、工具末尾、最近一次工具轮次末尾以及对话轮次边界。因此,代理会话一旦开始,超过 93% 的请求内容可从缓存重用,而非作为新输入计费。
缓存稳定的系统提示词与工具列表。 缓存前缀的质量取决于其前置数据。我们重新审视了系统提示词和工具注册路径,以消除请求间的字节漂移。例如,新的 chat.experimental.symbolTools.cacheStable 注册了 vscode_renameSymbol 和 vscode_listCodeUsages,使用静态描述而非随语言加载而变的描述。这样,当语言扩展在会话中途激活时,不会改变请求导致缓存重置。我们还重排了工具列表,使延迟加载与非延迟加载工具排列有序,保证了工具数组在各轮次间的字节一致性。
缓存友好的后台压缩。 会话变长时,我们在后台摘要旧轮次,以便代理在不耗尽上下文的情况下持续工作。模型在需要时仍可查询旧轮次结果。这些后台摘要现在重用了与主代理相同的缓存上下文,使得长轮次会话的效率显著提升。
最近两条消息的断点策略。 在长会话中,旧轮次最终会滑出缓存窗口。我们现在将缓存断点锚定在 系统提示词、工具列表和最后两条消息上。该功能目前处于 github.copilot.chat.anthropic.cacheBreakpoints.lastTwoMessages 设置项之后。
工具搜索工具
工具搜索工具通过将代理工具集拆分为两组来精简请求。一组包含约 30 个核心 始终可用 的工具(覆盖约 88% 的工具调用)。其余工具为 延迟加载:其 Schema 仅在模型显式请求时才载入。当代理需要延迟加载功能时,它会调用 tool_search,执行客户端的嵌入式语义搜索,按需返回最相关的匹配结果。
这确保了每轮都有稳定的缓存前缀,并大幅缩小了每轮的工具占用量,同时代理仍拥有对完整工具集的访问权限。
工具搜索工具已在 Anthropic 模型(Claude Sonnet 4.5+ 和 Opus 4.5+)中默认启用,观察到高达 20% 的 Token 节省。本版本中,我们通过 Responses API 将其推广至支持的 OpenAI 模型(GPT-5.4 和 GPT-5.5),Insiders 的早期结果显示出类似或更好的节约效果。要对 GPT 模型使用此功能,请开启 github.copilot.chat.responsesApi.toolSearchTool.enabled 设置。
用于搜索与执行的新工具
此版本引入了两个新的专用代理工具:Search 和 Execution。两者均由小型专用模型驱动,运行成本更低。经过一个多月的内测,我们观察到了可喜的成果,Token 节省达 20%。
代理搜索工具
代理搜索工具负责代码库探索与上下文检索。当主代理需要上下文时,它会用自然语言描述需求,由搜索工具接手。搜索工具随后运行独立进程,通过 grep、文件搜索、语义搜索和文件读取来检索工作区,并返回最相关结果。
其核心是由一个微型精调语言模型驱动,专为在最少轮次内并行运行多次搜索而设计。这种紧凑的范围在不牺牲检索质量的前提下保持了低延迟和低成本。
该功能将在接下来的一个月内持续推广,向所有 Copilot Chat 用户提供这些节约。
代理执行工具
代理执行工具处理与运行终端命令相关的一切。当代理需要测试或检查构建时,会将任务交给执行工具运行并反馈结果。为了限制范围,该工具仅限运行终端命令,且每次调用限制为 10 个终端调用,防止无限循环。
终端输出往往冗长且嘈杂。任务完成后,执行工具会将输出过滤为编码代理真正需要的内容并仅返回相关部分。将此工作从主模型卸载到更小、更快的模型,可防止冗长的输出占用您的 Token 配额。
聊天性能与历史记录
支持 OpenAI 模型的 WebSockets
对于支持的 OpenAI 模型,聊天请求现可在 Responses API 上使用 WebSocket 模式。VS Code 不再为每一轮打开一个新的 HTTP 请求,而是保持一个持久的 WebSocket 连接,仅发送新输入项及之前的响应 ID。服务器保留对话状态,减少了请求大小并降低了后续轮次的延迟,在涉及大量往返调用的代理工作流中尤为明显。我们的测量显示,使用 WebSockets 可使 OpenAI 模型 速度提升 12%。
当所选模型支持时,WebSocket 模式会自动使用,无需配置。
Chronicle (实验性)
设置: github.copilot.chat.localIndex.enabled
随着对 Copilot 依赖的加深,聊天记录成了工作内容、涉及文件及引用 PR/Issue 的宝贵档案。但这些历史很难回溯:滚动查找昨天的操作或为站会做准备非常缓慢,且无法轻松跨会话提问或分析个人使用模式。
Chronicle 通过将聊天互动记录到本地 SQLite 数据库中解决了这一问题。每次聊天时,它会记录会话元数据(分支、仓库、时间戳)、对话轮次、工具调用所涉及的文件及外部引用(PR、Issue、提交),以便您随时按需搜索和汇总工作。Chronicle 还能分析您的使用习惯,提供如何改进提示词和工具使用的个性化技巧。
Chronicle 暴露了几个命令,您可以在聊天中查询会话历史并获取编码活动见解:
-
/chronicle:standup:根据最近 24 小时的编码会话生成站会报告,按功能/分支分组,包含摘要、文件列表及 PR 链接。 -
/chronicle:tips:分析 7 天的使用情况,提供有关提示词、工具使用和工作流的个性化建议。 -
/chronicle [query]:针对会话历史的自由自然语言查询(例如:“我昨天编辑了哪些文件?”)。
此功能为实验性,需要开启 github.copilot.chat.localIndex.enabled 设置。
信任与安全
批准的账户组织策略
企业现可通过 ChatApprovedAccountOrganizations 设备策略,根据批准的 GitHub 组织成员资格来管控聊天及相关 AI 功能的激活。
该策略帮助组织在各个聊天入口点一致地应用基于 GitHub 账户的策略。聊天功能在以下条件满足前不会激活:(1) 用户登录的 GitHub 账户属于批准的组织成员,且 (2) 基于账户的策略已解析。这种“故障即关闭”的行为对于在 GitHub.com 配置了基于账户策略且需在聊天显示前强制执行资格的企业非常有用。
了解更多关于 企业策略的信息。
沙盒默认读取权限
读取访问权限不再自动对 $HOME 目录下的所有路径开放。此更新加强了沙盒隔离,确保命令仅能访问其显式需要的文件。
在沙盒中运行任何命令前,仅会基于正在执行的命令添加读取权限,且 $HOME 目录下的其他所有路径都将被拒绝访问。访问任何任意路径将因拒绝读取权限而导致失败。
默认情况下,工作区文件夹和沙盒临时文件夹(用于运行时管理沙盒配置)被授予 $HOME 目录下的读取访问权限。
辅助功能
从问题轮播聚焦终端的快捷键
设置: accessibility.verbosity.chatQuestionCarousel
当 Copilot 通过终端交互触发的问题轮播提问时,您现在可以按下 ⌥T (Windows, Linux Alt+T) 快速回到终端。此前,唯一的导航方式是选择 Focus Terminal 按钮。
该按钮的 aria 标签现在也包含了快捷键提示,以便屏幕阅读器用户更容易发现。您可以使用 accessibility.verbosity.chatQuestionCarousel 设置控制是否在轮播 aria 标签中显示导航提示。
编辑器体验
优化 Webview 中大型本地资源的加载
我们优化了 Webview 加载本地资源的方式,以提高速度并减少内存占用。此变更使所有使用 Webview 或自定义编辑器的扩展以及内置 VS Code 功能(如 Notebook 渲染)受益。
VS Code 中的 Webview 使用 Service Worker 从工作区或主机文件系统加载资源。Service Worker 拦截对本地文件的请求,并通过 VS Code 的文件系统调用进行代理。这不仅能从磁盘加载资源,还能从扩展贡献的虚拟文件系统中加载。
此前,对于文件系统请求,VS Code 会将整个文件读入缓冲区并发送给 Webview 的 Service Worker。这对少量小的 JavaScript 和图像文件有效,但当您加载 20 个数十到数百 MB 的视频文件时,此方法便不可行。
现在,我们将文件内容分块流式传输给 Service Worker。这种方法提高了响应速度,并减少了 VS Code 在交给浏览器引擎前必须累积的数据量。
我们通过采用 可传输流 (Transferable Streams) 进一步优化了流式处理。文件流在主 VS Code 渲染进程中创建,并直接由 Webview Service Worker 内部的 new Response(...) 消费。这绕过了之前多层 postMessage 调用带来的开销。
语言
支持 TypeScript 7.0 Beta
我们继续与 TypeScript 团队合作,改进 VS Code 对 TypeScript 7 的支持。TypeScript 7 使用原生代码完全重写,提供了显著更佳的性能。
TypeScript 7.0 beta 持续改进语言特性,并包含许多编辑器体验优化。我们还简化了尝试 TS 7.0 并与当前稳定版 TS 6.0 之间来回切换的操作。
要在 VS Code 中尝试 TS 7.0,只需安装 TypeScript Native preview 扩展。
对扩展的贡献
Chat Customizations Evaluation 扩展
我们新增了一个扩展:Chat Customizations Evaluations(扩展 ID ms-vscode.vscode-chat-customizations-evaluations),旨在帮助分析和改进您的聊天自定义设置,如提示词文件、自定义代理、指令和技能。分析自定义文件后,该扩展会生成检测到的问题诊断信息并提供改进建议。
打开提示词、代理、指令或技能定义文件并选择 Analyze 进行评估。诊断出现后,使用自定义评估修复技能来应用推荐的更改。
远程开发
远程开发扩展允许您使用 Dev Container、通过 SSH 或 Remote Tunnels 的远程机器,或 Windows Subsystem for Linux (WSL) 作为功能完备的开发环境。
Dev Container 锁文件功能默认启用
设置: dev.containers.lockfile
我们默认启用锁文件 devcontainer-lock.json。锁文件在首次安装 Feature 时记录其版本和校验和,并将该 Feature 锁定在该版本和校验和上,以提高抵御供应链攻击的韧性。
当有更新版本可用时,编辑器会在 devcontainer.json 文件的 Dev Container Features 上显示 Code Lens。
Dependabot 支持也已就绪,可自动提交 PR 以更新锁文件。
更多信息,请参阅 Dev Container 规范中的 Dev Container Feature Lockfile。
工程
使用 TypeScript 7 构建速度更快
VS Code 的开发 watch 任务现已使用 TypeScript 7 进行类型检查。这显著缩短了构建和完全类型检查我们代码库的时间。
此前,对主 VS Code 项目约 6,000 个文件进行类型检查需要约 60 秒。TypeScript 7 将全新构建时间缩短至约 10 秒。从启动 watch 构建任务到 VS Code 及所有内置扩展完成构建和类型检查,现在仅需约 30 秒。
已弃用的功能和设置
此版本中的新弃用项
无
即将弃用的功能
- 编辑模式 (Edit Mode) 自 VS Code 1.110 版本起正式弃用。用户可通过 VS Code 设置 chat.editMode.hidden 暂时重新启用。此设置将保持支持至 1.125 版本。从 1.125 版本开始,编辑模式将被完全移除,无法再通过设置启用。
感谢
对我们问题跟踪的贡献
- @gjsjohnmurray (John Murray)
- @RedCMD (RedCMD)
- @IllusionMH (Andrii Dieiev)
- @albertosantini (Alberto Santini)
对 vscode 的贡献
- @AbhitejJohn (Abhitej John):将 skillContentRead 遥测属性重命名为使用 'skill' 前缀 PR #311945
- @andrewkchan (Andrew Chan):辅助窗口 - 修复 setTimeout 泄漏 PR #311824
- @austinngan (Austin Ngan):修复 Markdown 预览滚动反馈循环 (#_303765) PR #312237
- @fishcharlie (Charlie Fish):聊天:在模型选择器中为重复的 BYOK 模型显示提供程序实例名称 PR #312028
- @kevin-m-kent:为 vscode_renameSymbol 和 vscode_listCodeUsages 添加缓存稳定模式(实验性) PR #312568
- @maruthang (Maruthan G)
- 修复:处理终端工具执行中的 heredoc/多行命令 PR #307960
- 修复(聊天):在工具确认中为高度限制的代码块启用滚动条 (#_283242) PR #310975
- 修复:在 ScopedContextKeyService 中 disposeContext 前清除父更改监听器 PR #307593
- @mossgowild (moss):终端工具:检测最后一行输出上的提示词 PR #311765
- @ssg (Sedat Kapanoğlu):添加土耳其语 DOS (CP 857) 编码支持 PR #300114
- @Tyriar (Daniel Imms):将 skip shell 处理移至服务并优化 PR #311892
- @winjo:修复 AutoRepliesPtyServiceContribution 在进程处置时的内存泄漏 PR #312150
- @xingsy97 (xingsy97):contextkey:修复扫描器在大于操作符时返回 '>=' 而非 '>' PR #307059
- @yogeshwaran-c (Yogeshwaran C)
- 修复:使用 setupDelayedHover 实现设置指示器悬停以支持 Ctrl+K I PR #304990
- 为所有调试控制台补全项显示详细字段 PR #310379
对 vscode-pull-request-github 的贡献
- @Will-hxw (Will-hxw):修复(reviewManager):在 hasBranch 调用中使用 pr.base.ref 而非 pr.base.name PR #8698
我们非常感谢大家在新功能准备就绪后立即进行试用,请经常回来查看并了解新功能。
如果您想阅读以前 VS Code 版本的发行说明,请访问 code.visualstudio.com 上的更新页面。