VS Code Chat 性能实验室
基准测试聊天渲染性能,并检测会话中的内存泄漏。
文档说明了本地构建、发布版本、GitHub Actions、Playwright、构建产物和诊断文件等数据流,但未明确用户确认、凭据使用、响应内容/遥测数据处理或网络下载的安全边界;--verbose 会输出响应内容,CI 还会删除临时和诊断文件。权限范围未细化,故扣分。
命令、脚本路径、参数、统计方法、退出码和部分失败反馈描述较完整,且提供 CI 工作流证据;但关键脚本、场景定义、配置和锁文件未提供,无法静态复现核心路径。文档还称有 scheduled daily 运行,而给出的 workflow 仅声明 workflow_dispatch,存在一致性疑问。受静态上限及不确定性影响扣分。
目标用户、聊天渲染/流式响应/生命周期变更等触发场景和多类场景边界描述清楚,也支持本地构建、版本和 CI;但未明确不适用范围、平台差异、中文使用说明或中国大陆网络可达性,且核心流程依赖 npm、Playwright、VS Code 下载和 GitHub CLI/Actions。故扣分。
信息分层、快速开始、参数表、场景分类、指标解释、内存泄漏解释、CI 工件和相关技能说明较充分;但缺少安装前置条件、独立依赖说明、版本化策略、变更日志、维护责任人和明确更新路径,且默认基线版本可能随仓库演进而过时。故扣分。
技能明确覆盖性能回归、内存泄漏、基线比较和 CI 门禁,命令示例及输出指标具有直接操作价值;但静态材料未提供代表性实际结果,且完整执行成本高、依赖构建和下载,未经运行无法确认结果可用性。因此按静态校准取上限附近但不超过7分。
技能提供脚本名、工作流、命令、统计方法、原始运行表和工件保留说明,具备一定审计线索;但未提供实际运行结果、测试套件覆盖证据或跨来源 corroboration,且本评估未执行任何命令,故不能超过静态上限5分。
- 执行会下载版本、Electron 和 Playwright 等外部资源,并可能使用 GitHub 凭据;运行前应确认网络、凭据和组织权限范围。
- --verbose 可能暴露模拟响应内容;不要在包含敏感数据的环境中直接使用。
- 文档中的默认基线版本、CI 触发描述与所给 workflow 可能不一致,应以同一修订中的实际脚本和配置核对。
- CI 清理步骤会删除临时目录、构建目录及部分诊断文件;需先确认工件已上传且保留策略满足调查需要。
- 未说明中国大陆网络可达性,npm、Playwright、VS Code 下载及 GitHub 服务可能导致核心流程不可用或变慢。
它能做什么 & 适用场景
chat-perf 是 microsoft/vscode 仓库中的 Agent Skill,专门测试 VS Code 聊天界面的性能和内存增长。它可以通过 Playwright Electron 启动本地开发版、生产构建、已发布版本或其他本地构建,使用模拟 LLM 响应运行多个聊天场景。性能测试支持基线比较、统计显著性判断、堆快照和 CI 摘要;泄漏检查则通过强制 GC 后的堆与 DOM 节点增长斜率进行判断。它适合修改聊天渲染、流式响应或生命周期代码后的验证,但不是通用的 VS Code 全面性能测试工具。
运行 npm run perf:chat,启动 VS Code 并打开聊天面板,通过模拟 LLM 响应测试文本流式输出、工具调用和多轮对话场景;收集首个 token、完成时间、渲染时间、布局、样式重算、强制回流、长任务以及堆和扩展宿主内存等指标;将测试构建与本地路径、版本或保存的 JSON 基线比较,并可生成结果、轨迹、CPU profile、堆快照和 CI Markdown 摘要。运行 npm run perf:chat-leak 时,它在一个会话中连续发送指定数量的消息,在消息之间强制 GC,使用线性回归计算每条消息的堆增长和 DOM 节点增长。
- 修改 chatListRenderer.ts、chatInputPart.ts 或 Markdown 渲染代码后,开发者需要确认聊天渲染没有出现延迟或布局回流回归。
- 调整流式响应管线或 SSE 处理后,工程师需要把本地构建与某个 VS Code 发布版本或另一份本地构建进行对比。
- 修改聊天组件的 disposable 或生命周期逻辑后,维护者需要检查堆和 DOM 节点是否持续增长。
- CI 需要对触及聊天 UI 的拉取请求或定期 main 构建进行性能门禁和泄漏检查。
- 性能结果超过阈值但可能受噪声影响时,工程师需要使用 --resume 增加运行次数,或下载历史 CI 结果定位回归日期。
优缺点一览
- 覆盖内容流、工具调用和多轮用户对话等聊天场景。
- 支持本地开发版、生产构建、发布版本和两个本地构建之间的比较。
- 使用 IQR 异常值剔除、中位数和 Welch t 检验,避免仅凭单次噪声判定回归。
- 同时提供性能回归检查和基于堆、DOM 节点斜率的内存泄漏检查。
- 支持 CI 模式、历史运行摘要、轨迹、CPU profile 和堆快照等诊断产物。
- 性能基线可能需要下载发布版,因此运行需要网络;本地路径基线不会缓存。
- 内存和堆指标对单次请求噪声较大,属于信息性指标,不能单独作为 CI 失败依据。
- 源材料没有给出该 Skill 的独立安装流程,也没有明确列出聊天性能脚本的操作系统支持范围。
- 基准测试需要通过 npm、Playwright Electron 和 VS Code 构建环境运行,不能直接在没有 shell 和文件系统访问的模型 API 中独立执行。
- perf-summary 机器可读产物只保留 1 天,较长期的历史分析需依赖其他 30 天保留的摘要或结果产物。
如何安装
该 Skill 位于 VS Code 源码仓库的 .github/skills/chat-perf/SKILL.md;源材料没有说明独立的安装包或专用安装命令。可先获取仓库:git clone https://github.com/microsoft/vscode.git,然后进入仓库目录使用该 Skill;具体依赖安装步骤未在所给材料中说明。
如何使用
在包含该 Skill 的 VS Code 仓库中执行:npm run perf:chat -- --scenario text-only --runs 3。只测当前构建可执行 npm run perf:chat -- --no-baseline --runs 3;比较两个版本可执行 npm run perf:chat -- --build 1.110.0 --baseline-build 1.115.0 --runs 5;检查泄漏可执行 npm run perf:chat-leak -- --messages 20 --verbose。向 Agent 提出“请运行 chat-perf,比较当前构建与 VS Code 1.115.0,并检查 text-only 场景的显著回归”即可作为触发示例。使用 --gc-object-stats 仅进行 GC 深入分析,不要用于基准测试,因为它会破坏计时指标。