用途:在添加、审阅或排查 VS Code 发布说明中的交互式 Try This 体验(含命令、视图、编辑器示例、Chat 草稿、引导流程)时使用。权威贡献者合约位于 src/vs/workbench/contrib/onboarding/README.md,实施前应先阅读。
主要能力与用法:
- 分级体验:按侵入程度选择 Try it(隔离数据)、Guide me(打开并高亮真实控件)、Help me get ready(用户需先完成前置条件)、Use my context(绑定精确编辑器/会话/控件)、Explain only(不安全或不可行时仅说明)。
- 明确归属与副作用:确定用户应达到的状态、行为归属组件、可能改变的内容、必须由用户显式执行的动作、缺失前置条件、多控件可见情况、是否跨入 Agents 窗口、是否受 Chat/提供商/模型/策略门控、取消后如何抑制异步效应。优先使用功能自有贡献和命令。
- 展示形式:命令用 command;打开视图用 openView;只读文本或对比用 editorSample;需精确实例用功能自有启动展示;引导多个控件用 guided presentation。仅在内置类型无法安全表达时新增自有展示。
- 信任边界:发布说明只含一个稳定注册的 tryout ID,可执行行为由已安装产品代码拥有;未知、格式错误、不可用或过期 ID 必须失败关闭;命令保留正常前置条件、确认、权限和撤销;异步准备后及执行前重新检查可用性;外部 vscode://tryout/<id> 链接仅含注册 ID 且始终要求产品确认,默认允许外部启动,可设 allowExternalLaunch: false。禁止自动信任工作区、启用设置、安装扩展、接受确认、选择模型/提供商、提交 Chat 输入或修改用户资源。
- 目标作用域:通过功能自有适配器经所有者正常 API 解析控件,不得查询其他组件类或 DOM;唯一目标可用于至多一个匹配控件;编辑器、Chat 控件、拆分窗格等多实例需运行作用域,越界或过期作用域应失败关闭。
- 前置条件与 AI/Agents 示例:使用 createOnboardingClickStep、createOnboardingContextStep 或普通 spotlight 步骤;Chat 示例需 isAI: true,准备隔离草稿或绑定精确已有控件,禁止调用 acceptInput,保留其他草稿和运行会话,重新检查提供商、模型、模式、扩展、授权、工作区和托管策略,取消后抑制延迟附件或状态变更;涉及模型、权限、策略或托管设置变更时调用 policy-and-managed-settings 技能;Agents 窗口用 targetWindow: 'agents',保持共享 ID 与元数据、实现归属 Sessions 贡献,遵循 vs/sessions → vs/workbench 分层,依赖请求作用域原生交接,新请求须取代并处置活动运行。
- 专项指引:交互式 tryout 调用 accessibility;改视觉或 spotlight 行为调用 design-philosophy;集成浏览器目标调用 integrated-browser;Agents 窗口实现调用 sessions;AI 控件/权限/模型/提供商/托管设置调用 policy-and-managed-settings;新增监听器、目标注册、重复渲染或异步生命周期调用 memory-leak-audit。复用现有 spotlight 展示,不新建发布说明专用覆盖层。
- 发布说明标记:用 Developer: Copy Feature Example Link 生成反引号简写,第一个参数为注册 tryout ID,第二个为字面显示文本,如
try(myFeature.guide,Try My Feature);正文说明打开内容、用户操作、不会改变的内容、前置条件或不可用回退。 - 测试与验证:覆盖注册、准备、取消、设置、引导目标、作用域目标、命令失败关闭、Chat 不发送不替换草稿且精确绑定控件、Agents 交接、集成浏览器遮挡、未知或格式错误链接保持惰性。参考 onboardingTryoutService.test.ts、onboardingTryoutActions.test.ts、guidedTryoutPresentation.test.ts、spotlightPresentation.test.ts、onboardingTryoutWindow.test.ts。运行聚焦单元测试、限定 ESLint、必要时 npm run valid-layers-check 和 npm run typecheck-client,尽量运行 npm run build-fast,验证真实 UI 流程并清理临时文件。完成报告应说明 tryout ID 与交互级别、所选展示、允许与避免的副作用、目标作用域策略、前置条件与回退、变更文件、测试与构建、剩余人工验证。
限制:资料未提供具体定价、平台或完整代码示例;若 Markdown 含命令载荷、提示、路径或参数,或 tryout 深入其他功能 DOM、多实例控件使用第一个可见目标、AI 示例提交输入或静默选择模型、设置静默改配置、取消返回成功或允许延迟效应、Agents 请求被持久化、自定义覆盖层重复 Spotlight、功能本地文档复制 onboarding 贡献者指南时,应停止并重新设计。