VS Code 性能调查工作流
自动化复现 VS Code 场景并采集性能与内存证据。
文档明确披露会在真实机器上启动完整 VS Code、复用可能含认证秘密的用户配置,并要求使用临时工作区、避免破坏性提示和保留清理边界;但默认工作区仍可能是仓库根目录,持久化配置和真实 Copilot/LLM 工具调用带来外部副作用,缺少统一的逐项用户确认、权限隔离和完整回滚机制,因此扣分。
流程包含无快照冒烟、截图、summary.json、错误字段、状态检查、显式清理和异常诊断建议,主路径较连贯;但本次仅静态阅读,未验证脚本、依赖、选择器或跨平台行为,且引用的辅助 skill 和脚本实现未全部提供,因此不超过静态上限并扣分。
适用场景、非适用场景、输入参数、Chat 与非 Chat 分支及输出工件较明确;但非 Chat 场景仍要求用户补充关键要素,依赖本地 Code OSS、Playwright、Electron、npm 下载和 Copilot 认证,未说明中文交互或中国大陆网络可达性,因此扣分。
文档结构清晰,采用渐进式流程,提供命令示例、配置说明、安全提示、故障排查、目录约定和限制;仓库材料提供 MIT 许可、Microsoft 归属和版本信息,但 skill 本身没有明确维护负责人、变更日志、版本策略或更新路径,且 README 与 SKILL 对持久化用户配置的建议存在不一致,因此扣分。
目标结果包括可复现运行、截图、summary.json、堆快照及后续分析交接,核心性能调查价值明确;但结果依赖真实环境执行和后续 heap-snapshot-analysis,静态材料未证明代表性输出可成功生成,且“修复并运行所有测试”的范围可能超出单次调查,因此按静态上限扣分。
仓库包含聊天性能和内存泄漏 CI 工作流,提供一定的第三方可审计执行证据;但这些工作流并未明确覆盖该 SKILL.md 的全部关键路径,未提供本次 revision 下的实际运行结果或独立复现记录,因此不超过静态上限并扣分。
- 运行会启动真实 VS Code,并可能向真实 Copilot/LLM 发送提示或执行工具调用;必须使用隔离、可丢弃的工作区和明确的用户确认。
- 持久化用户配置可能包含认证秘密;不要上传、共享或在未关闭 Code 进程时复制配置目录。
- 默认工作区和“修复产品代码、运行所有测试”的指令可能扩大影响范围,应在执行前明确目标路径、修改范围和回滚方案。
- 核心依赖 npm、Playwright、Electron 下载及 Copilot 认证;材料未证明中国大陆网络环境下可稳定访问。
它能做什么 & 适用场景
此技能用于驱动 Code OSS 重复执行 VS Code 场景,并收集性能、内存和界面验证证据。它可以运行内置的 Chat 内存冒烟测试,采样渲染器堆内存,生成截图、summary.json 和指定的堆快照。完成采集后,它将结果交给通用的堆快照分析技能进行对象分组、比较和保留路径分析。该流程适合需要先证明场景确实执行,再调查内存增长或泄漏的 VS Code 工程任务。
定义预热动作、重复迭代和可安全采样的静止点;通过 Node.js 运行内置的 chat-memory-smoke.mts 或基于它创建场景运行器;启动 Code OSS 并通过 CDP 与 Playwright 连接;发送 Chat 提示、等待响应、采集渲染器堆内存并保存截图;写入 summary.json、堆样本和可选的 .heapsnapshot 文件;检查错误、响应数量、响应文本、快照标签和截图;在需要时将快照交给 heap-snapshot-analysis 进行比较和保留路径分析。
- 当 VS Code 用户怀疑重复执行 Chat 对话会导致内存持续增长时,运行多轮 Chat 场景并比较预热后的堆快照。
- 当工程师需要验证某个非 Chat VS Code 工作流是否泄漏时,在 scratchpad 中创建一次性运行器,先用无快照模式确认场景可靠,再采集目标快照。
- 当自动化流程可能卡在登录、信任提示、进度行或错误 UI 状态时,使用 Playwright 连接现有 Code 窗口,查看快照和工作区内截图。
- 当产品代码完成疑似泄漏修复后,使用相同场景和相同快照标签重跑,并比较迭代阶段的内存趋势和快照差异。
优缺点一览
- 包含可直接运行的 Chat 内存冒烟测试运行器,并支持无快照健康检查和指定标签的目标快照。
- 强调先通过 summary.json 和截图验证场景,再进行堆快照分析,减少分析错误 UI 状态的风险。
- 支持持久用户配置、临时用户配置和从种子配置复制登录状态。
- 覆盖从场景设计、自动化开发、快照采集到修复后复测的完整调查流程。
- 仓库源代码采用 MIT 许可证。
- 运行器会在真实机器上启动完整的 Code OSS;Chat 提示会发送给真实 LLM,代理触发的终端命令和文件编辑也可能真实执行。
- Chat 场景通常需要 Copilot 身份验证,并且需要谨慎管理可能包含认证信息的用户数据目录。
- 技能只明确提供 Chat 运行器;非 Chat 场景需要用户或代理自行在 scratchpad 中编写运行器。
- 源材料没有说明独立的安装注册流程、客户端适配流程或专门的技能测试套件。
- frontmatter 使用 Bash(npx @playwright/cli:*) 这类工具许可声明,迁移到其他客户端可能需要调整。
如何安装
源材料未提供独立的技能安装器或客户端注册步骤。可先获取仓库:
git clone https://github.com/microsoft/vscode.git
cd vscode
技能文件位于 .github/skills/auto-perf-optimize/SKILL.md。将该技能目录按所用 Agent Skills 客户端的技能目录规则提供给客户端;具体注册方式在源材料中未说明。
如何使用
在仓库根目录运行 Chat 冒烟测试,例如:
node .github/skills/auto-perf-optimize/scripts/chat-memory-smoke.mts --iterations 3 --no-heap-snapshots
需要指定预热后快照时,可运行:
node .github/skills/auto-perf-optimize/scripts/chat-memory-smoke.mts --iterations 8 --heap-snapshot-label 03-iteration-01 --heap-snapshot-label 03-iteration-08
向代理提出“启动 VS Code,重复执行这个场景并调查是否存在内存增长”之类的请求即可触发相应流程。非 Chat 场景需要明确开始动作、一次迭代的定义、UI 稳定信号,以及使用持久配置还是临时配置。分析已有快照时不要使用此技能,应直接使用 heap-snapshot-analysis。