遥测

Visual Studio Code 会收集遥测数据,用于帮助了解如何改进产品。例如,这些使用数据有助于调试诸如启动缓慢等问题,并为新功能的优先级排序提供参考。我们还会使用这些数据在向所有用户发布新功能之前,先向部分用户推出新功能

尽管我们很重视这些数据提供的见解,但也理解并非每个人都希望发送使用数据。您可以按照禁用遥测报告中的说明禁用遥测功能。您还可以阅读我们的隐私声明以了解更多信息。

遥测数据类型

就遥测而言,VS Code 和本页面指出了三种不同类型的数据。

崩溃报告 (Crash Reports) - 当 VS Code 崩溃时,崩溃报告会收集诊断信息并将其发送给 Microsoft,以帮助了解崩溃发生的原因以及未来需要进行哪些更改来防止此类崩溃。

错误遥测 (Error Telemetry) - 错误遥测会收集有关未导致应用程序崩溃但属于意外情况的错误信息。

使用数据 (Usage Data) - 使用数据会收集有关 VS Code 中功能的表现和使用方式的信息,这有助于我们确定未来产品改进的优先级。

禁用遥测报告

通过 telemetry.telemetryLevel 在 VS Code 中打开 在 VS Code Insiders 中打开 此设置由组织级别管理。请联系您的管理员进行更改。 用户设置,您可以通过单个设置控制我们发送的不同类型的遥测数据。下表显示了 telemetry.telemetryLevel 在 VS Code 中打开 在 VS Code Insiders 中打开 此设置由组织级别管理。请联系您的管理员进行更改。 的每个值所发送的数据类型。

崩溃报告 错误遥测 使用数据
all
error -
crash - -
off - - -

例如,如果您不想向 Microsoft 发送任何遥测数据,可以将 telemetry.telemetryLevel 在 VS Code 中打开 在 VS Code Insiders 中打开 此设置由组织级别管理。请联系您的管理员进行更改。 用户设置设为 off。这将从今以后静默所有来自 VS Code 的遥测事件。请注意,在您禁用该设置之前,可能已经收集并发送了一些遥测信息。

Screenshot showing the Settings editor with telemetry disabled.

如果您使用 JSON 编辑器进行设置,请添加以下行

"telemetry.telemetryLevel": "off"
重要

要参与 A/B 实验并抢先体验新功能,您必须通过将 telemetry.telemetryLevel 在 VS Code 中打开 在 VS Code Insiders 中打开 此设置由组织级别管理。请联系您的管理员进行更改。 设置为 all 来启用使用数据。

功能可用性与遥测

VS Code 使用 A/B 实验系统在向所有用户正式发布新功能之前,先向部分用户推出。这有助于我们在向所有人推广之前,验证新功能在不同用户群体中是否按预期工作。通过参与实验,您不仅帮助我们提高了 VS Code 的质量,还可以通过早期反馈影响产品的未来方向。

为了启用此实验系统,VS Code 使用使用数据遥测来确定哪些用户应该接收新功能,并验证该功能的使用情况。如果您通过将 telemetry.telemetryLevel 在 VS Code 中打开 在 VS Code Insiders 中打开 此设置由组织级别管理。请联系您的管理员进行更改。 设置为 errorcrashoff 来禁用使用数据遥测,我们将无法评估该功能的使用情况,因此实验功能将对您禁用。结果,您获得新功能的时间可能会被推迟,直到该功能正式向公众发布。

扩展与遥测

VS Code 允许您通过安装 Microsoft 或第三方扩展来添加功能。这些扩展可能会收集其自身的使用数据,并且不受 telemetry.telemetryLevel 在 VS Code 中打开 在 VS Code Insiders 中打开 此设置由组织级别管理。请联系您的管理员进行更改。 设置的控制。请参阅特定扩展的文档,以了解其遥测报告机制以及是否可以禁用。

扩展作者可以参考“面向扩展作者”章节,以获取有关在其扩展中实施遥测最佳实践的指南。

遥测事件的输出通道

要查看 VS Code 发送的遥测事件,请从命令面板()运行 Developer: Show Telemetry 命令。此命令会启用遥测事件跟踪,并打开输出面板中的 Telemetry 输出通道(⇧⌘U (Windows Ctrl+Shift+U, Linux Ctrl+K Ctrl+H))。随着遥测事件的发送,输出通道会显示事件详细信息。

output panel log telemetry

在跟踪遥测事件时,这些事件还会记录到本地文件 telemetry.log 中,您可以使用 Developer: Open Log... 命令并从下拉菜单中选择 Telemetry 来查看该文件。

open telemetry log file

要禁用遥测事件跟踪,请重新加载 VS Code 窗口(执行 Developer: Reload Window 命令)。

查看所有遥测事件

如果您想查看 VS Code 可能发送的所有遥测事件,可以使用 CLI 中的 --telemetry 标志。这将生成一个 JSON 报告,您可以在 VS Code 中查看该报告。这些报告是按版本生成的,除非扩展作者在其构建根目录中添加了 telemetry.json 文件,否则不包含扩展遥测信息。

例如,运行 code --telemetry > telemetry.json && code telemetry.json 将在当前工作目录中创建一个 telemetry.json 文件,然后在其 VS Code 中打开。由于遥测报告的长度限制,您不能像这样使用管道输出:code --telemetry | code -

以下章节详细介绍了用于分类遥测数据的事件元数据,描述了其用途,并指出了任何特殊处理方式。

事件分类

classification 字段描述了数据的类型。

  • SystemMetaData - 由 VS Code 生成的非个人身份识别值。
  • CallstackOrException - 程序执行失败引起的错误。这些包含已清除用户路径的堆栈跟踪。
  • PublicNonPersonalData - 公众可用的用户生成数据,例如已发布的扩展 ID。
  • EndUserPseudonymizedInformation - 用于标识唯一用户但无法识别用户身份的哈希值。例如,MAC 地址的哈希值。

事件用途

purpose 字段描述了收集该数据的原因。

  • PerformanceAndHealth - 确保 VS Code 产品和服务保持健康且运行快速。
  • FeatureInsight - 了解功能使用情况,确定继续投入开发的领域。
  • BusinessInsight - 用于做出与 VS Code、Microsoft 和 GitHub 业务相关的决策。

事件端点

endpoint 字段描述了数据被发送到哪个数据处理程序。这通常适用于需要额外清理和安全措施以保护用户隐私的特殊数据。

  • GoogleAnalyticsId - 用于我们的网站进行 Google Analytics 分析和页面浏览量跟踪。这些数据的处理比我们的一般数据更为敏感。
  • MacAddressHash - 用于识别 VS Code 用户。此信息在客户端进行一次哈希处理,然后在管道端再次进行哈希处理,从而无法识别特定用户。在 Web 版 VS Code 上,此场景会生成一个 UUID。
  • none - 数据不需要任何特殊处理。

针对代理交互的 OpenTelemetry 支持

VS Code 中的 Copilot Chat 可以通过 OpenTelemetry (OTel) 导出跟踪、指标和事件,为您提供代理交互、LLM 调用、工具执行和 Token 使用情况的实时可视化。您可以将这些遥测数据与任何兼容 OTel 的后端结合使用。

了解更多关于如何使用 OpenTelemetry 监控代理交互的信息。

GDPR 和 VS Code

除了支持《通用数据保护条例》(GDPR) 外,VS Code 团队还非常重视隐私问题。这既是 Microsoft 作为一家公司的承诺,也是 VS Code 团队内部的具体实践。

为了确保符合 GDPR,我们对 VS Code 进行了多项更新,包括:

  • 通过在产品中为所有现有和新用户放置通知,使用户更容易选择退出遥测收集。
  • 审查和分类我们发送的遥测数据(记录在我们的开源代码库中)。
  • 确保我们针对收集的任何数据(例如崩溃转储)制定了有效的数据保留政策。

简而言之,我们一直在努力为所有用户做正确的事情,因为这些实践适用于所有地理区域,而不仅仅是欧洲。

我们预计人们会询问能否查看我们收集的数据。然而,我们目前没有可靠的方法来实现这一点,因为 VS Code 没有能够唯一识别用户的“登录”体验。我们确实发送了有助于我们在诊断目的上近似确定单个用户的信息(基于桌面端网络适配器 NIC 的哈希值和 Web 端随机分配的 UUID),但这不能保证是唯一的。例如,虚拟机 (VM) 经常轮换 NIC ID 或从池中分配。这种技术足以帮助我们解决问题,但不足以让我们能够“提供您的数据”。

随着我们对 GDPR 和用户期望的了解加深,我们预计我们的方法也会不断演进。我们非常感谢用户发送给我们的数据,因为它非常有价值,也使 VS Code 成为大家更好的产品。再次重申,如果您担心隐私,我们提供了禁用遥测发送的功能,正如禁用遥测报告中所述。

您可以访问Visual Studio 系列 GDPR 数据主体请求,获取有关 Visual Studio 系列如何应对 GDPR 的更多信息。

管理在线服务

除了崩溃报告和遥测外,VS Code 还将在线服务用于各种其他目的,例如下载产品更新、查找/安装/更新扩展、设置同步,或在设置编辑器中提供自然语言搜索。您可以选择开启或关闭使用这些服务的功能。

请注意,关闭这些功能并不会使 VS Code 进入离线模式。例如,如果您在 扩展 视图中搜索扩展,VS Code 仍然会搜索在线的 VS Code 市场。这些设置确保了除非您主动请求,否则 VS Code 不会与在线服务通信。

文件 > 首选项 > 设置 进入,并输入标签 @tag:usesOnlineServices。这将显示所有控制在线服务使用的设置,您可以单独开启或关闭它们。

online settings filter

注意:VS Code 扩展也可能使用在线服务,并且可能不提供配置这些在线服务的设置,或者在搜索 @tag:usesOnlineServices 时其设置可能不会显示出来。请查阅特定扩展的文档以了解其在线服务的使用情况。

VS Code 使用的非 Microsoft 在线服务

内置的 npm support for VS Code 扩展会向 https://registry.npmjs.orghttps://registry.bower.io 发送请求。

内置的 TypeScript and JavaScript Language Features 扩展会查询 https://registry.npmjs.org@types 域。

当您使用 Developer: Toggle Developer ToolsDeveloper: Open Webview Developer Tools 时,VS Code 可能会与 Google 服务器通信以获取启动开发者工具所需的数据。

扩展建议

VS Code 会根据您的文件类型、工作区和环境提供扩展建议。文件类型建议是预先计算的或动态的。工作区和环境建议始终是预先计算的。

如果您想知道为什么推荐某个扩展,请打开该扩展的详细信息页面。您可以在页面标题中找到推荐原因。

extension recommendation based on files

预计算的建议

VS Code 会收集有关哪些扩展在哪些文件类型和工作区/文件夹中被激活的遥测数据。特定文件夹是通过计算每个文件夹的 Git 远程仓库的哈希值来标识的。

我们利用这些信息来预计算匿名建议。预计算建议是规定了在什么条件下应该推荐某个扩展的指令。例如,当我们观察到扩展 A 和 B 之间存在有趣的关联时,一条指令可能是:如果用户安装了扩展 A 但没有安装 B,则推荐扩展 B。

部分预计算建议作为产品的一部分发布,而额外的预计算建议会在运行时从 Microsoft 在线服务获取。VS Code 会独立评估并执行预计算建议,而无需向任何在线服务发送任何用户信息。

动态建议

当您打开一种 VS Code 没有预计算建议的文件类型时,它会向扩展市场查询声明支持该文件类型的扩展。如果查询返回了您尚未安装的扩展,VS Code 将提供通知。

面向扩展作者

请阅读扩展指南遥测文档

© . This site is unofficial and not affiliated with Microsoft.