尝试以扩展 VS Code 中的代理模式!

遥测

Visual Studio Code 会收集遥测数据,用于帮助我们了解如何改进产品。例如,这些使用数据有助于调试问题(如启动时间过慢)以及确定新功能的优先级。虽然我们非常感谢这些数据提供的见解,但我们也知道并非所有人都希望发送使用数据,您可以按照禁用遥测报告中的说明禁用遥测。您也可以阅读我们的隐私声明以了解更多信息。

遥测数据类型

VS Code 和本页面在遥测方面涉及三种不同类型的数据。

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

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

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

禁用遥测报告

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

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

例如,如果您不想向 Microsoft 发送任何遥测数据,可以将用户设置 telemetry.telemetryLevel 设置为 off。这将使 VS Code 从此不再发送任何遥测事件。请注意,在您禁用该设置之前,遥测信息可能已经被收集和发送。

disable telemetry

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

"telemetry.telemetryLevel": "off"

扩展和遥测

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

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

遥测事件的输出通道

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

output panel log telemetry

在跟踪遥测事件时,事件也会被记录到本地文件 telemetry.log 中,您可以使用“开发者: 打开日志文件...”命令并从下拉列表中选择“遥测”来查看该文件。

open telemetry log file

要禁用遥测事件跟踪,请重新加载 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 的用户。它在客户端进行一次哈希,然后在管道端再次哈希,使其无法识别特定用户。在 网页版 VS Code 中,为此情况会生成一个 UUID。
  • none - 数据不需要任何特殊处理。

GDPR 和 VS Code

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

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

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

简而言之,我们努力为所有用户做正确的事,因为这些做法适用于所有地区,而不仅仅是欧洲。

我们预计人们会问的一个问题是,他们是否可以查看我们收集的数据。然而,我们没有可靠的方法来做到这一点,因为 VS Code 没有“登录”体验来唯一地识别用户。我们确实发送信息来帮助我们为诊断目的估算单个用户(这基于桌面上网络适配器 NIC 的哈希值和网页上随机分配的 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 在线服务

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

内置的“TypeScript 和 JavaScript 语言特性”扩展会查询 https://registry.npmjs.org 上的 @types 域。

当您使用“开发者: 切换开发者工具”“开发者: 打开 Webview 开发者工具”时,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 将会提供一个通知。

致扩展作者

请阅读扩展指南遥测文档

后续步骤