ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

VS Code 基于 Bing 的智能设置搜索:架构解析与实战指南

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),仅供参考
返回列表