现已发布!阅读关于 12 月份的新功能和修复。

遥测

Visual Studio Code 会收集遥测数据,用于帮助了解如何改进产品。例如,这些使用数据有助于调试启动缓慢等问题,并确定新功能的优先级。我们还使用这些数据向一部分用户 发布新功能,然后再将其普遍提供。

我们非常感谢这些数据提供的见解,但也知道并非所有人都愿意发送使用数据,您可以通过 禁用遥测报告 中的说明来禁用遥测。您还可以阅读我们的 隐私声明 以了解更多信息。

遥测数据类型

VS Code 和本页面指的是遥测相关的三种不同类型的数据。

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

错误遥测 - 错误遥测收集有关未导致应用程序崩溃但出现意外情况的错误的信息。

使用数据 - 使用数据收集有关 VS Code 中功能的使用情况和性能的信息,这有助于我们确定未来产品改进的优先级。

禁用遥测报告

通过 telemetry.telemetryLevel 用户设置,您可以使用单个设置来控制我们发送的不同类型的遥测数据。下表显示了 telemetry.telemetryLevel 的每个值所发送的不同类型的数据。

崩溃报告 错误遥测 使用数据
全部
error -
崩溃 - -
off - - -

例如,如果您不想向 Microsoft 发送任何遥测数据,可以将 telemetry.telemetryLevel 用户设置设置为 off。这将停止 VS Code 发送所有遥测事件。请注意,在禁用设置之前可能已收集并发送了遥测信息。

Screenshot showing the Settings editor with telemetry disabled.

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

"telemetry.telemetryLevel": "off"
重要

要参与 A/B 实验并提前使用新功能,您必须通过将 telemetry.telemetryLevel 设置为 all 来启用使用数据。

功能可用性和遥测

VS Code 使用 A/B 实验系统在将新功能普遍提供给所有用户之前,先向一部分用户发布这些功能。这有助于我们在将新功能推广给所有人之前,验证其在各种用户中的运行情况是否符合预期。通过参与实验,您可以帮助我们提高 VS Code 的质量,并通过早期反馈塑造产品的未来。

要启用此实验系统,VS Code 会使用使用遥测数据来确定哪些用户应接收新功能以及验证功能的使用方式。如果您通过将 telemetry.telemetryLevel 设置为 errorcrashoff 来禁用使用数据遥测,我们将无法评估该功能的使用情况,因此该功能对您将禁用实验。结果是,新功能对您的推广可能会延迟,直到该功能普遍可用。

扩展和遥测

VS Code 允许您通过安装 Microsoft 和第三方扩展来向产品添加功能。这些扩展可能正在收集自己的使用数据,并且不受 telemetry.telemetryLevel 设置的控制。请查阅特定扩展的文档,了解其遥测报告以及是否可以禁用。

扩展作者可以参考 “面向扩展作者” 部分,了解在其扩展中实现遥测最佳实践的指南。

遥测事件的输出通道

要查看 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 用户。这会在客户端哈希一次,然后在管道端再次哈希,以使其无法识别特定用户。在 VS Code for the Web 上,会为此生成一个 UUID。
  • none - 数据不需要任何特殊处理。

GDPR 和 VS Code

除了支持《通用数据保护条例》(GDPR) 外,VS Code 团队还非常重视隐私。这对 Microsoft 公司和 VS Code 团队本身都如此。

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

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

总之,我们已努力做到对所有用户都正确行事,因为这些做法适用于所有地区,而不仅仅是欧洲。

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

我们预计随着我们对 GDPR 和用户期望的更多了解,我们的方法将不断发展。我们非常感谢用户发送给我们的数据,因为这些数据非常有价值,并且因为这些数据,VS Code 成为对每个人都更好的产品。而且,如果您担心隐私,我们提供了禁用发送遥测的能力,如 禁用遥测报告 中所述。

您可以在 Visual Studio Family Data Subject Requests for the GDPR 中找到有关 Visual Studio 系列如何处理 GDPR 的更多信息。

管理在线服务

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

请注意,关闭这些功能并不会将 VS Code 置于离线模式。例如,如果您在“扩展”视图中搜索扩展,VS Code 仍然会搜索在线 VS Code Marketplace。这些设置确保 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.