遥测
Visual Studio Code 收集遥测数据,这些数据用于帮助了解如何改进产品。例如,此使用数据有助于调试慢启动时间等问题,并确定新功能的优先级。虽然我们感谢这些数据提供的见解,但我们也知道并非所有人都希望发送使用数据,并且您可以按照禁用遥测报告中的说明禁用遥测。您还可以阅读我们的隐私声明以了解更多信息。
遥测数据类型
VS Code 和本页引用了三种不同的遥测相关数据类型。
崩溃报告 - 崩溃报告在 VS Code 崩溃时收集诊断信息,并将其发送给 Microsoft,以帮助了解崩溃发生的原因以及需要进行哪些更改来防止将来发生崩溃。
错误遥测 - 错误遥测收集有关未导致应用程序崩溃但属于意外错误的事件的信息。
使用数据 - 使用数据收集有关 VS Code 中功能使用方式和性能的信息,这有助于我们确定未来产品改进的优先级。
禁用遥测报告
使用 telemetry.telemetryLevel 用户设置,您可以通过一个设置控制我们发送的不同类型的遥测数据。下表列出了 telemetry.telemetryLevel 的每个值所发送的不同数据类型。
崩溃报告 | 错误遥测 | 使用数据 | |
---|---|---|---|
全部 | ✓ | ✓ | ✓ |
错误 | ✓ | ✓ | - |
崩溃 | ✓ | - | - |
关闭 | - | - | - |
例如,如果您不想向 Microsoft 发送任何遥测数据,可以将 telemetry.telemetryLevel 用户设置为 off
。这将禁用 VS Code 未来所有遥测事件的发送。请注意,在您禁用设置之前,可能已经收集并发送了遥测信息。
如果您使用 JSON 编辑器来编辑设置,请添加以下行
"telemetry.telemetryLevel": "off"
扩展与遥测
VS Code 允许您通过安装 Microsoft 和第三方扩展来向产品添加功能。这些扩展可能会收集自己的使用数据,并且不受 telemetry.telemetryLevel 设置的控制。请查阅特定扩展的文档,以了解其遥测报告以及是否可以禁用。
扩展作者可以参考“致扩展作者”部分,获取在其扩展中实施遥测最佳实践的指南。
遥测事件输出通道
要查看 VS Code 中发送的遥测事件,请从命令面板 () 运行开发人员:显示遥测命令。此命令启用遥测事件跟踪,并在输出面板 (⇧⌘U (Windows Ctrl+Shift+U, Linux Ctrl+K Ctrl+H)) 中打开遥测输出通道。随着遥测事件的发送,输出通道会显示事件详细信息。
跟踪遥测事件时,事件也会记录到本地文件 telemetry.log
中,您可以使用开发人员:打开日志...命令并从下拉列表中选择遥测来查看该文件。
要禁用遥测事件跟踪,请重新加载 VS Code 窗口 (开发人员:重新加载窗口命令)。
查看所有遥测事件
如果您想查看 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
- 数据不需要任何特殊处理。
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 Marketplace。这些设置确保 VS Code 不会在您未请求的情况下与在线服务通信。
从文件 > 首选项 > 设置,然后输入标签 @tag:usesOnlineServices
。这将显示所有控制在线服务使用情况的设置,您可以单独开启或关闭它们。
注意:VS Code 扩展也可能使用在线服务,并且可能不提供用于配置这些在线服务使用情况的设置,或者它们可能未注册其设置,以便在搜索
@tag:usesOnlineServices
时显示。请查阅特定扩展的文档,以了解其在线服务的使用情况。
VS Code 使用的非 Microsoft 在线服务
内置的 npm 对 VS Code 的支持扩展会向 https://registry.npmjs.org
和 https://registry.bower.io
发送请求。
内置的 TypeScript 和 JavaScript 语言功能扩展会在 https://registry.npmjs.org
查询 @types
域。
当您使用开发人员:切换开发人员工具或开发人员:打开 Webview 开发人员工具时,VS Code 可能会与 Google 服务器通信以获取启动开发人员工具所需的数据。
扩展推荐
VS Code 会根据您的文件类型、工作区和环境提供扩展建议。文件类型建议是预先计算的或动态的。工作区和环境建议始终是预先计算的。
如果您想知道推荐某个扩展的原因,请打开该扩展的详细信息页面。您可以在页面标题中找到推荐原因。
预先计算的建议
VS Code 收集有关哪些文件类型和哪些工作区/文件夹激活了哪些扩展的遥测数据。通过计算每个文件夹的 Git 远程的哈希值来识别特定文件夹。
我们使用此信息预先计算匿名建议。预先计算的建议是说明在哪些条件下应该推荐某个扩展的指令。例如,当我们看到两个扩展 A 和 B 之间存在有趣的关联时,一个指令可能是:如果用户安装了扩展 A 但未安装扩展 B,则推荐扩展 B。
一些预先计算的建议作为产品的一部分发布,而其他预先计算的建议则在运行时从在线 Microsoft 服务获取。VS Code 独立评估和执行预先计算的建议,而不向任何在线服务发送任何用户信息。
动态建议
当您打开 VS Code 没有预先计算的建议的文件类型时,它会向扩展市场请求声明支持此文件类型的扩展。如果查询返回您未安装的扩展,VS Code 将提供通知。
致扩展作者
请阅读扩展指南遥测文档。
后续步骤
- 集中管理遥测日志级别 - 了解如何为您的组织设置遥测日志级别。
- Visual Studio Code 常见问题解答 - 查看常见问题解答以了解更多信息。
- 用户和工作区设置 - 阅读有关自定义 VS Code 的可用选项。
- 键绑定 - 您可以轻松修改常用的键盘快捷方式。