什么是 Visual Studio Code 实验?

15
今天我惊讶地发现,在VSCode的工作台设置下有一个名为“启用实验”的选项,默认情况下是打开状态。
该设置的描述是“从Microsoft在线服务获取运行实验”,对我来说似乎相当模糊。我尝试通过谷歌搜索,但并没有找到明确的答案。
那么,有人知道这些“实验”是什么,最好把它关闭吗?

/usr/share/code/resources/app目录下有一个名为product.json的文件。在该文件中,我搜索了experimentsworkbench。我找到了"experimentsUrl",并在几行下面找到了"checksums": {"vs/workbench/workbench.main.js", ...}。不幸的是,我无法确定这是否与您在问题中提到的设置有关。但也许其他人可以... - Joey
这是文档中的内容:https://code.visualstudio.com/docs/supporting/FAQ#_how-to-disable-experiments - Sterex
2个回答

15
这是使用开源软件的好例子之一,因为Visual Studio Code的源代码已发布在https://github.com/Microsoft/vscode上。我们可以尝试搜索代码的使用情况。
首先,我们可以尝试搜索字符串Enable Experiments。并查看该选项绑定到哪个操作。从那里,我看到文件src/vs/workbench/contrib/experiments/node/experimentService.ts正在使用它。具体来说,在第173行尝试加载实验。
if (!product.experimentsUrl || this.configurationService.getValue('workbench.enableExperiments') === false) {

我们可以看到,代码会检查“实验URL”。这可以在@Joey在评论中提到的product.json文件中看到。在我的情况下,文本看起来像这样。
"experimentsUrl": "https://az764295.vo.msecnd.net/experiments/vscode-experiments.json",

从那里,我们可以通过向该URL发送GET请求来查看JSON文件的内容。然后,它返回这个(至少在我发出请求的时候)

{
    "experiments": [
        {
            "id": "cdias.searchForAzure",
            "enabled": true,
            "action": {
                "type": "ExtensionSearchResults",
                "properties": {
                    "searchText": "azure",
                    "preferredResults": [
                        "ms-vscode.vscode-node-azure-pack",
                        "ms-azuretools.vscode-azureappservice",
                        "ms-azuretools.vscode-azurestorage",
                        "ms-azuretools.vscode-cosmosdb"
                    ]
                }
            }
        }
    ]
}

根据回应,我可以看到,如果我使用“azure”关键词进行搜索,它会尝试更改我的搜索结果。我尝试过,并且搜索结果显示了4个项目位于搜索结果的顶部。

enter image description here

关于是否禁用它,为了保险起见(如果你不想让它改变你使用 vscode 的体验),我认为你会想要禁用它。但是,我不认为微软会做出疯狂的事情。

1
我不认为微软会做出疯狂的事情 - 嗯,... - AcK

4
我刚刚注意到这个问题,也很好奇。通过查阅VS Code发布说明,我在2018年7月找到了一个相关的参考。 workbench.enableExperiments被列为VS Code“离线模式”的设置之一:https://code.visualstudio.com/updates/v1_26#_offline-mode 离线模式的描述表明,此设置用于“A / B实验”:

为了支持这种离线模式,我们添加了新的设置来关闭功能,例如自动扩展更新检查、查询A / B实验的设置以及获取自动完成的在线数据。

正如其他人所提到的,VS Code的源代码显示在experimentService.ts中使用了此设置:https://github.com/microsoft/vscode/blob/93bb67d7efb669b4d1a7e40cd299bfefe5e85574/src/vs/workbench/contrib/experiments/common/experimentService.ts 如果您查看experimentService.ts代码,它获取的内容似乎与扩展推荐、新功能通知和类似的事物有关。因此,看起来实验服务是为了获取数据,以对用户的功能和扩展推荐进行A/B测试。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接