VS Code 基于 Bing 的智能设置搜索:架构解析与实战指南
文档教程【免费下载链接】vscode-docsPublic documentation for Visual Studio Code项目地址https://gitcode.com/gh_mirrors/vs/vscode-docs点击查看免费下载导读VS Code 内置 400 项设置加上扩展贡献的自定义设置后数量急剧膨胀用户仅靠关键词匹配常常找不到想要的那一项。本文以 2018 年 VS Code 官方博客《Bing-powered settings search in VS Code》为骨架结合当前仓库中的官方设置文档与扩展清单规范完整剖析这套由 Bing 团队打造的智能设置搜索系统的离线索引、在线检索两大架构以及它在 VS Code 设置编辑器中的实际落地效果。读完本文你将理解为什么搜update能匹配到upgrade相关设置这类智能行为背后的完整工程链路也能掌握设置编辑器搜索与过滤器modified、tag等的实战用法。为什么设置搜索是一个真问题从 GitHub Issues、StackOverflow 问题、推文和 VS Code 团队开展的用户研究中可以看到大量用户反馈找不到某个设置。这并非偶然VS Code 开箱即用就包含400 项设置安装扩展后设置数量会显著增长——每个扩展都可以通过其package.json的contributes.configuration贡献自己的设置项用户自身的拼写错误、以及不知道该用什么搜索词的选词困难进一步放大了匹配难度。正因如此VS Code 团队与 Bing 团队合作在两个月内交付了一套由 Bing 驱动的智能设置搜索体验。它不再只是对设置名称做字面匹配而是能理解用户意图、容忍拼写错误、识别同义表达。官方文档对设置编辑器的定位也印证了这一点在用户与工作区设置文档中搜索框是发现设置的主要入口——打开设置编辑器File Preferences Settings或通过命令面板执行Preferences: Open Settings后在搜索栏输入内容即可实时过滤设置列表并且修改即时生效被修改的设置左侧会显示彩色标记条与编辑器中已修改行的指示方式一致。系统架构总览整条链路分为离线侧采集与索引构建和在线侧查询响应两大部分Bing Ingestion Service离线负责把 VS Code 自身与扩展的设置数据加工成富索引并尽量把工作前置到摄取阶段以缩短查询响应时间Gating Module离线对每次索引入库做质量校验防止索引损坏Search Service Azure Load Balancer在线处理用户查询、检索索引并返回结果。Bing Ingestion Service离线索引构建收集 VS Code 与扩展的设置数据VS Code 自身的设置每次构建时VS Code 会以特殊模式启动把全部配置元数据写入一个 JSON 文件。之所以必须真正启动 VS Code是因为无法静态确定全部配置元数据。该文件对每个设置记录以下信息字段含义name设置名称例如editor.fontSizedescription设置描述type设置类型default默认值enum仅枚举型设置合法取值列表及其说明构建完成后该 JSON 文件被上传到Azure Storage。文件路径中的123000832是唯一构建号由产品版本号加上自上一发布以来的 Git 提交数计算得出c1cd4378...则是该构建对应的 Git commit id。整个过程完全自动化Bing 的Polling Service持续监听 Azure Storage 容器发现新构建后通知 Ingestion Service 开始摄取。扩展的设置Bing 同时持续爬取 VS Code 扩展市场一旦发现新扩展或更新就下载其package.json文件并把其中声明的设置传给 Ingestion Service。与 VS Code 本体不同扩展的全部配置元数据都包含在package.json中无需启动扩展即可读取——这正是扩展清单中contributes.configuration字段的用途详见扩展清单规范。由于链路全自动稳定版发布构建和每日 Insiders 构建都会在几分钟内同步进 Bing 索引新加入的设置几乎实时可被检索到。关于 Insiders 与 Stable 构建的关系可参考入门文档中Should I use Stable or Insiders?一节Stable 每周发布并自动更新Insiders 则是可与之并行的每日预览构建。1. Alternative Words Pipeline同义词流水线用户常常使用与设置名/描述不同但等价的词语。该流水线借助 Bing 搜索数据用户行为、点击、在线排序、页面相似度等信号收集意义相近的词对例如update与upgrade互为 alternative words——搜索其中一个会返回包含另一个词的设置。2. Stemmer and Speller Pipeline词干提取与拼写纠正流水线早期实验表明简单的模糊匹配要么漏掉人类能理解的英文词形变化要么产生过多误报。因此系统从运行在 Bing.com 的完整服务中抽取出 Speller拼写检查器与 Stemmer词干提取器为索引补充常见拼写错误和同一词干的不同词形。例如设置中若包含formatting则formatted、formatter、format都会被纳入索引。3. Natural Language Processing Pipeline自然语言处理流水线让用户能用自然语言描述需求。该流水线收集常见的口语与文本模式并加入索引例如能识别出how to disable css validation中的重要词从而定位到css.validate这一设置。4. Feedback/Ranking Pipeline反馈与排序流水线提供人工反馈机制可手动指定新的词对或对特定查询提升期望结果。反馈上传到服务后几乎立即反映到搜索结果中实现了人机闭环的持续改进。Gating Module入库质量闸门每次索引入库都要经过 gating module其职责是确保索引没有因编程错误而损坏。配套的测试用例验证新索引向后兼容能服务所有 VS Code 构建版本Golden query set金标准查询集返回预期结果。一旦 gating 失败将阻止该次索引入库并立即通知团队。配套的 Dashboard 服务监控整条管道各阶段的健康状态具备告警机制并可回滚到最后一个已知良好状态把故障影响时间降到最低。Search Service在线查询服务运行时用户的查询先打到Azure Load Balancer负载均衡器根据物理就近性或当前负载从多个异地复制的服务器中选一台处理查询该位置的Search Service在索引中完成检索必要时应用人工排序覆盖ranking overrides最后把结果返回 VS Code 客户端。这套多副本 负载均衡的设计保证了查询的响应速度与可用性。与设置编辑器的联动搜索与过滤器实战智能搜索上线后设置编辑器本身的搜索体验也围绕快速定位设置持续演进。根据用户与工作区设置文档搜索栏实时过滤设置输入即见结果搜索栏右侧的漏斗形按钮可快速添加过滤器搜索框也支持撤销/重做kb(undo)/kb(redo)右侧的Clear Settings Search Input按钮可一键清空搜索词或过滤器。可用的常用过滤器输入符号可发现全部过滤器过滤器作用modified只显示与默认值不同、或在 settings JSON 中被显式设置的设置项ext只显示扩展贡献的设置feature按功能子组过滤如feature:explorer显示文件资源管理器相关设置haspolicy只显示受组织策略控制的设置id按设置 ID 查找如id:workbench.activityBar.visiblelang按语言过滤如lang:typescript用于配置语言特定设置tag按系统标签过滤如tag:workspaceTrust、tag:accessibility、tag:advanced高级设置默认从搜索结果中隐藏除非使用tag:advanced或开启workbench.settings.alwaysShowAdvancedSettings扩展安装后会把自己的设置显示在设置编辑器的Extensions区块下按扩展名如gitlens、python搜索可以快速收敛到该扩展贡献的设置见官方设置文档。扩展设置的底层来源即package.json中contributes.configuration声明的配置详见扩展清单规范。效果验证Putting it all together最终这套系统能理解设置查询为大量此前返回空结果的自然语言查询给出答案例如输入类似 format on keypress 的表达能匹配到对应的格式化设置输入 open files on left 这类描述性语句能定位到新文件打开位置相关的设置输入 beautify 这类口语化/产品化名称也能找到对应设置或扩展。如需自己动手验证效果直接在设置编辑器搜索栏输入上述自然语言短语即可观察结果。仓库中的视频文件FormatOnKeypress.mp4、OpenFilesOnLeft.mp4、Beautify.mp4均位于blogs/2018/04/25/记录了这些示例查询在设置编辑器中的实际表现。如果你没有专门的搜索团队来定制这样的服务也可以借助通用认知服务为自有应用添加智能能力例如 Bing Spell Check拼写检查、Language Understanding (LUIS)语言理解、Bing Web Search 与 Bing Custom SearchWeb/自定义搜索。这些能力与本系统采用的词干/拼写/NLP 思路同源可作为自建方案的起步点。测试体系基于 NDCG 的量化评估开发过程中需要一个量化评估结果的框架团队选择了Normalized Discounted Cumulative GainNDCG——给定查询、一组结果及对应打分衡量搜索引擎结果排序质量的标准方法。关键做法手工编写了一批测试用例由于设置会持续新增、扩展设置不断变化又编写了自动生成测试用例的工具取设置名称与描述中的词通过多种变换器模拟用户换用同义词打字出错用自然语言表述等行为并为若干热门扩展的设置也生成了用例每 6 小时运行一次完整测试套件且测试套件可自动更新始终针对最新构建的设置运行期间能自行完成测试设置来自最新构建的自刷新。这套机制既保证系统正常运行也让后端改动时有信心不会损害结果质量。已知边界与演进方向系统当前仍有一些明确边界官方博客如实列出仅索引英文翻译后的设置描述尚未入索引非英文搜索暂不支持部分元数据未索引例如workbench.colorCustomizations的合法取值尚未纳入索引不返回未安装扩展未来希望做到搜索debug python时在本地设置匹配不足时引导用户安装相关扩展命令面板联动考虑将同类技术推广到命令面板搜索等场景行为反馈闭环若大量用户搜索相似查询后选择同一结果可据此自动提升该结果排名基于用户行为的自动反馈回路。用户反馈渠道设置搜索结果的持续改进依赖真实用户反馈。官方建议搜索设置时如果没看到预期结果请提交 Issue使用VS Code Insiders构建时设置编辑器内会出现一个按钮可一键唤起 Issue Reporter自动附带排障所需的全部上下文细节。参考资源Bing 驱动设置搜索官方博客原文用户与工作区设置官方文档设置编辑器、搜索与过滤器扩展清单规范contributes.configuration与设置贡献VS Code 入门Stable 与 Insiders 构建说明组织策略与受控设置赞分享文档教程【免费下载链接】vscode-docsPublic documentation for Visual Studio Code项目地址https://gitcode.com/gh_mirrors/vs/vscode-docs点击查看免费下载相关推荐django-oscar 搜索模块深度解析基于 Haystack 的分面搜索架构与 OSCAR_SEARCH_FACETS 配置实战django oscar 搜索模块深度解析基于 Haystack 的分面搜索架构与 OSCAR_SEARCH_FACETS 配置实战 导读 本文围绕 djan后端电商Deep-Live-Cam 完整实战指南一张照片三步启动实时人脸替换Deep Live Cam 完整实战指南一张照片三步启动实时人脸替换 Deep Live Cam 是一款开源的 实时人脸替换real time face人工智能AI 应用计算机视觉媒体生成xiaobei 智能体通用搜索指南Bing / Baidu / Quark 搜索 URL 构造、时间过滤与实操落点xiaobei 智能体通用搜索指南Bing / Baidu / Quark 搜索 URL 构造、时间过滤与实操落点 本指南围绕 xiaobeiOPC/中小微人工智能AI Agent大模型AI 应用媒体生成上一篇Pigeon 29.x 版本演进全解析从 Flutter 平台通道类型安全到 Native Interop 实验特性下一篇3步实现WPF界面可视化设计告别手写XAML代码的低效时代创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

星上交换技术全解析:从电路交换到MPLS的体制选型与工程实践

星上交换技术全解析:从电路交换到MPLS的体制选型与工程实践

简介:星上路由交换与处理技术课件聚焦卫星通信中信息高效传输的核心环节,面向通信工程相关专业学生及卫星网络研发人员。课件共65页,系统梳理星上交换的基本概念、微波射频与基带两种实现方式,并对比电路交换、分组交换、ATM交换、…

2026/10/15 0:47:22 阅读更多 →
工业电源路径设计:eFuse与MCU协同实现智能保护

工业电源路径设计:eFuse与MCU协同实现智能保护

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:47:21 阅读更多 →
Spark 2.2 新闻实时分析系统实战:稳定扛住高并发流量

Spark 2.2 新闻实时分析系统实战:稳定扛住高并发流量

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 21:32:21 阅读更多 →

最新新闻

在河北开发直播 APP,怎么挑选靠谱的软件公司?

在河北开发直播 APP,怎么挑选靠谱的软件公司?

河北不少创业者、企业都想搭建自己的直播 APP,带货直播、付费课程、娱乐打赏、私域直播等需求越来越多。但直播属于音视频高并发项目,技术门槛远高于普通商城和管理系统。很多本地软件公司只会做简单小程序,并不具备流媒体开发经验&#xff0…

2026/10/15 0:47:40 阅读更多 →
Python requests实现人人网自动登录:Cookie、验证码与会话管理全攻略

Python requests实现人人网自动登录:Cookie、验证码与会话管理全攻略

简介:这份人人网(校内)自动登录的Java实现,面向需要模拟登录校内平台的开发者、测试人员或学生。由于网上流传的登录代码多针对旧版校内接口,往往无法直接套用,作者梳理了当前人人网登录流程并编写出简易可…

2026/10/15 0:47:40 阅读更多 →
软件开发想要少踩坑,产品经理才是项目的 “翻译官” 和总设计师

软件开发想要少踩坑,产品经理才是项目的 “翻译官” 和总设计师

很多人做软件定制,关注点只放在程序员、代码、服务器上,觉得只要有开发就能把项目做出来,常常忽略产品经理这个角色。等到项目推进一半,才发现功能逻辑混乱、需求来回改动、做出来的产品和自己预想完全不符,返工不断、…

2026/10/15 0:47:40 阅读更多 →
QML与C++交互:上下文属性、类型注册与单例详解

QML与C++交互:上下文属性、类型注册与单例详解

1. 先想清楚一个问题:QML和C为什么要互相打交道接触Qt QML开发的人应该都有这种感觉:QML写界面确实快,声明式语法、属性绑定、动画、状态切换,一套组合拳下来,界面代码量比传统Widget写法少一大截。但界面做得再漂亮&a…

2026/10/15 0:47:40 阅读更多 →
SpringBoot文件上传临时目录失效异常解析与解决方案

SpringBoot文件上传临时目录失效异常解析与解决方案

1. 问题背景与核心需求拆解文件上传这个功能,几乎每个后端项目都会碰到。不管是用户头像、Excel批量导入、还是附件管理,只要涉及文件从客户端传到服务端,就绕不开multipart/form-data这套机制。SpringBoot 默认集成了 StandardServletMultip…

2026/10/15 0:47:40 阅读更多 →
区间DP解“拿糖果”:从贪心误区到最优策略实战解析

区间DP解“拿糖果”:从贪心误区到最优策略实战解析

说实话,我第一次看到“拿糖果”这道题的时候,差点把它当成热身题给秒了。题面本身非常朴素:有 n 堆糖果排成一行,每堆糖果数量用一个整数数组表示,两个人轮流从最左端或最右端拿走一整堆,直到全部取完&…

2026/10/15 0:46:40 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →