遥测
Visual Studio Code 会收集遥测数据,用于帮助我们了解如何改进产品。例如,这些使用数据有助于调试问题(如启动时间缓慢)以及确定新功能的优先级。虽然我们非常感谢这些数据提供的洞见,但我们也知道并非每个人都希望发送使用数据,你可以按照禁用遥测报告中的说明禁用遥测。你也可以阅读我们的隐私声明以了解更多信息。
遥测数据的类型
VS Code 和本页面在遥测方面提及三种不同类型的数据。
崩溃报告 - 崩溃报告在 VS Code 崩溃时收集诊断信息,并将其发送给微软,以帮助了解崩溃发生的原因以及需要进行哪些更改以防止未来再次发生崩溃。
错误遥测 - 错误遥测收集有关那些未导致应用程序崩溃但属于意外错误的错误信息。
使用数据 - 使用数据收集有关功能在 VS Code 中如何被使用和表现的信息,这有助于我们确定未来产品改进的优先级。
禁用遥测报告
通过 telemetry.telemetryLevel 用户设置,你可以通过一个设置控制我们发送的不同类型的遥测数据。下表列出了 telemetry.telemetryLevel 的每个值所发送的不同数据类型:
崩溃报告 | 错误遥测 | 使用数据 | |
---|---|---|---|
all | ✓ | ✓ | ✓ |
error | ✓ | ✓ | - |
crash | ✓ | - | - |
off | - | - | - |
例如,如果你不想向微软发送任何遥测数据,可以将 telemetry.telemetryLevel 用户设置设为 off
。这将使 VS Code 未来不再发送任何遥测事件。请注意,在你禁用该设置之前,遥测信息可能已经被收集和发送。
如果您使用 JSON 编辑器进行设置,请添加以下行
"telemetry.telemetryLevel": "off"
扩展和遥测
VS Code 允许你通过安装微软和第三方的扩展来为产品添加功能。这些扩展可能会收集它们自己的使用数据,并且不受 telemetry.telemetryLevel 设置的控制。请查阅特定扩展的文档,了解其遥测报告以及是否可以禁用。
扩展作者可以参考“扩展作者须知”部分,以获取在其扩展中实现遥测最佳实践的指导。
遥测事件的输出通道
要在 VS Code 中审查正在发送的遥测事件,请从命令面板()运行 Developer: Show Telemetry 命令。此命令会启用遥测事件的跟踪,并在输出面板(⇧⌘U (Windows Ctrl+Shift+U, Linux Ctrl+K Ctrl+H))中打开 Telemetry 输出通道。当遥测事件被发送时,输出通道会显示事件的详细信息。
跟踪遥测事件时,事件也会被记录到本地文件 telemetry.log
中,你可以使用 Developer: Open Log... 命令并从下拉菜单中选择 Telemetry 来查看该文件。
要禁用遥测事件跟踪,请重新加载 VS Code 窗口(Developer: Reload Window 命令)。
查看所有遥测事件
如果你想查看 VS Code 可能发送的所有遥测事件,可以在命令行界面中使用 --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、微软和 GitHub 的业务做出决策。
事件端点
endpoint
字段描述了数据被发送到哪个数据处理程序。这通常适用于需要额外清理和安全措施以保护用户隐私的特殊数据。
GoogleAnalyticsId
- 在我们的网站上用于 Google Analytics 和跟踪页面浏览量。这些数据会比我们的常规数据更敏感地处理。MacAddressHash
- 用于识别 VS Code 的用户。它在客户端进行一次哈希,然后在管道端再次哈希,以使其无法识别特定用户。在 VS Code for the Web 上,为此情况会生成一个 UUID。none
- 数据不需要任何特殊处理。
GDPR 和 VS Code
除了支持《通用数据保护条例》(GDPR)外,VS Code 团队非常重视隐私。这既是微软作为一家公司的立场,也是 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
。这将显示所有控制在线服务使用的设置,你可以单独打开或关闭它们。
注意:VS Code 扩展也可能使用在线服务,并且可能不提供配置这些在线服务使用的设置,或者它们可能没有注册其设置以在搜索
@tag:usesOnlineServices
时显示。请查阅特定扩展的文档,了解其在线服务的使用情况。
VS Code 使用的非微软在线服务
内置的 npm support for VS Code 扩展会向 https://registry.npmjs.org
和 https://registry.bower.io
发送请求。
内置的 TypeScript and JavaScript Language Features 扩展会在 https://registry.npmjs.org
查询 @types
域。
当你使用 Developer: Toggle Developer Tools 或 Developer: Open Webview Developer Tools 时,VS Code 可能会与 Google 服务器通信,以获取启动开发者工具所需的数据。
扩展建议
VS Code 会根据你的文件类型、工作区和环境提供扩展推荐。文件类型推荐可以是预计算的或动态的。工作区和环境推荐总是预计算的。
如果你想知道为什么某个扩展被推荐,请打开该扩展的详情页面。你可以在页面标题中找到推荐原因。
预计算的推荐
VS Code 收集关于哪些扩展针对哪些文件类型和哪些工作区/文件夹被激活的遥测数据。特定的文件夹通过计算其每个 Git 远程仓库的哈希值来识别。
我们使用这些信息来预计算匿名的推荐。预计算的推荐是一些指令,详细说明了在何种条件下应推荐某个扩展。例如,当我们看到两个扩展 A 和 B 之间存在有趣的关联时,一条指令可能是:如果用户安装了扩展 A 但未安装 B,则推荐扩展 B。
一些预计算的推荐作为产品的一部分发布,而额外的预计算推荐则在运行时从一个在线的微软服务获取。VS Code 独立评估和执行预计算的推荐,不会向任何在线服务发送任何用户信息。
动态推荐
当你打开一个 VS Code 没有任何预计算推荐的文件类型时,它会向扩展市场查询声明支持此文件类型的扩展。如果查询返回了你未安装的扩展,VS Code 将会提供一个通知。
扩展作者须知
请阅读扩展指南的遥测文档。
后续步骤
- 集中管理遥测日志级别 - 了解如何为你的组织设置遥测日志级别。
- Visual Studio Code 常见问题解答 - 查阅常见问题解答以了解更多信息。
- 用户和工作区设置 - 阅读有关自定义 VS Code 的可用选项。
- 按键绑定 - 你可以轻松修改常用的键盘快捷键。