开发与工程 ✓ Microsoft · 官方 memory-leakdisposable-managementevent-listenerstypescriptdom-handlerslifecycle-managementtest-validation

内存泄漏审计

系统检查事件监听器、生命周期回调和可释放资源中的泄漏风险。

FollowSkills 评估 · FSRS-2.0
不推荐
52/ 100 五分制 2.6 / 5
信任安全17 / 25 · 3.4/5

技能仅提供代码审查建议,不要求凭据、网络访问或高权限操作,且总体遵循资源释放和生命周期隔离原则,因此基础信任较高。但未说明用户确认、敏感数据处理、变更回滚或外部副作用;PR编号和验证声明在所给材料中未被直接核验,故扣分。

可靠稳定8 / 20 · 2.0/5

六步检查、代码示例和验证清单结构清晰,package.json及工作流显示相关聊天泄漏检查脚本和CI存在。但技能本身未定义异常输入、无法判断框架语义、测试失败或依赖不可用时的诊断反馈,部分规则使用绝对表述,且静态阅读无法复现关键路径,故限制在10分以下。

适用触发10 / 15 · 3.3/5

触发场景明确,覆盖事件监听器、生命周期、重复调用、池化对象和测试。可是未清楚界定非适用场景、输入输出格式、审查边界或不同实现语义;未提供中文使用支持说明,但核心功能不依赖海外服务,因此仅部分扣分。

规范维护7 / 15 · 2.3/5

文档采用前置触发条件、分步清单、示例和速查表,渐进披露较好;仓库材料提供MIT许可证、版本和官方维护背景。但技能没有安装或依赖说明、维护负责人、更新路径、变更记录、FAQ及已知限制,故为中等分数。

有效结果6 / 15 · 2.0/5

规则可直接用于人工定位常见 disposable 泄漏,并给出 MutableDisposable、Event.once 和 DisposableStore 等修复方向;仓库还显示存在聊天内存泄漏脚本和CI入口。可是没有规定审查输出或补丁格式,规则需要结合具体代码判断,且静态材料未证明代表性结果可直接使用,故扣分。

证据核验4 / 10 · 2.0/5

技能列出PR编号、代码模式和若干仓库脚本名称,相关工作流对聊天内存泄漏提供了可审计的CI定义。仍缺少与本技能关键六类路径对应的提交测试、固定证据或独立复现结果,且本次未执行任何验证,因此只能给有限分数。

证据充分度: 评估于 2026年7月20日 审查版本 5b3e1be7be9e
使用前请注意
  • 不要把“永远不要使用”类规则机械套用到所有上下文;需核对对象生命周期、事件实现和调用方所有权。
  • 技能引用的PR验证声明未在本次材料中独立核验,不能视为已证明的测试结果。
  • “检查监听器数量”和聊天泄漏脚本需要具体仓库环境、依赖和构建条件,静态审查不能替代实际验证。
  • 未规定审查结果格式、失败诊断或回滚流程,使用者仍需自行设计这些步骤。
查看完整评分方法 →

它能做什么 & 适用场景

这是一个面向 VS Code 代码审查与修复的内存泄漏审计技能,重点处理事件监听器、DOM 处理器、生命周期回调和 disposable 管理。它按六个步骤检查 DOM 事件、一次性事件、重复调用、模型生命周期、资源池对象和测试泄漏验证。核心模式包括 addDisposableListener、Event.once、MutableDisposable、DisposableStore 和 onWillDispose。它适合需要审查或修复相关泄漏问题的开发者,但 SKILL.md 没有提供独立安装流程或可执行脚本。

指导代理审查代码中的 DOM 事件注册、一次性事件、重复调用方法中的监听器、与模型生命周期绑定的 DisposableStore、资源池对象的释放范围以及测试套件的 disposable 泄漏检查。它要求识别 raw .onload、.onclick、addEventListener()、不恰当的 this._register() 和缺少模型清理等模式,并建议使用对应的 disposable 模式修复。修复后可检查重复操作前后的监听器数量、对象数量是否稳定,并在聊天场景下运行 npm run perf:chat-leak --messages 20 --verbose 进行额外验证。

  1. 开发者审查会重复执行的搜索、切换或初始化方法,担心每次调用都会增加事件监听器。
  2. 开发者修复报告中指出的 DOM 处理器或扩展图标组件监听器数量持续增长问题。
  3. 开发者实现 onWillDispose、onDidClose 等模型生命周期逻辑,需要确保相关资源随模型销毁。
  4. 开发者维护列表或树等资源池工厂,必须让每个池化对象独立释放其监听器。
  5. 开发者编写创建 disposable 对象的测试套件,需要加入自动泄漏检测。

优缺点一览

优点
  • 提供按顺序执行的六步审计清单,覆盖 DOM 事件、一次性事件、重复调用、模型生命周期、资源池和测试。
  • 给出可直接对照的错误与正确 TypeScript 示例。
  • 明确覆盖 addDisposableListener、Event.once、MutableDisposable、DisposableStore 和 onWillDispose 等具体模式。
  • 包含监听器数量、对象数量和聊天堆增长等修复后验证方法。
局限
  • 内容聚焦 VS Code 风格的 disposable 和事件模式,未证明适用于其他框架或运行时。
  • 没有独立脚本、测试套件或自动化审计工具;主要依赖代理进行代码审查。
  • 独立安装方式未在源材料中说明。
  • 聊天泄漏验证依赖 npm 命令和未提供内容的 chat-perf 技能,且只针对聊天场景。

如何安装

该技能位于 microsoft/vscode 仓库的 .github/skills/memory-leak-audit/SKILL.md。源材料只说明它属于包含 61 个技能的仓库集合,未提供单独安装命令或独立发布包;需要使用支持 Agent Skills 的客户端加载该 SKILL.md。仓库整体采用 MIT 许可证。

如何使用

在代码审查或修复任务中明确提出:"审计这段代码的内存泄漏和 disposable 问题,重点检查事件监听器、DOM 处理器、重复调用、模型生命周期和测试清理。" 让代理按六步清单检查,并在修复后验证监听器和对象数量是否随重复操作稳定。若任务涉及聊天泄漏,可要求运行 npm run perf:chat-leak --messages 20 --verbose;该技能说明此检查依赖 chat-perf 技能。

常见问题

这个技能会自动扫描整个仓库并生成报告吗?
源材料没有提供自动扫描脚本或报告格式。它提供的是供代理执行的审计规则、代码示例和验证步骤。
它适合哪些代码?
它明确适合涉及事件监听器、DOM 处理器、生命周期回调、重复调用方法、模型生命周期和 disposable 对象的 VS Code 代码。
使用它需要网络访问吗?
SKILL.md 没有要求网络访问。聊天泄漏验证通过 npm run perf:chat-leak 执行,但源材料没有说明该命令需要网络。
它能保证修复后不再有内存泄漏吗?
不能。它要求检查监听器和对象数量是否稳定,并在测试或聊天场景中进行验证,但没有提供形式化保证。

同仓库的其他 Skills

均来自 microsoft/vscode

开发与工程 ✓ Microsoft · 官方

工具重命名兼容性检查

防止内置工具重命名破坏现有提示词与工具配置。

开发与工程 ✓ Microsoft · 官方

Copilot Chat OpenTelemetry 埋点指南

为 Copilot Chat 统一设计和维护 OpenTelemetry 埋点。

开发与工程 ✓ Microsoft · 官方

VS Code 配置策略维护助手

规范 VS Code 企业配置策略的注册、导出与验证。

设计与前端 ✓ Microsoft · 官方

VS Code 设计哲学

用价值、原则和设计动作,把“看起来不对”转化为可执行的界面改进。

开发与工程 ✓ Microsoft · 官方

Agent 主机端到端测试助手

用严格的回放夹具维护 VS Code Agent 主机端到端测试。

开发与工程 ✓ Microsoft · 官方

VS Code 集成浏览器架构指南

帮助开发者安全理解和修改 VS Code 集成浏览器的跨进程架构。

开发与工程 ✓ Microsoft · 官方

VS Code Agents 窗口会话架构

帮助代理安全实现和修复 VS Code Agents 窗口功能。

开发与工程 ✓ Microsoft · 官方

智能提交助手

根据仓库惯例生成提交信息并安全提交代码变更。

开发与工程 ✓ Microsoft · 官方

Agent Host 日志分析

定位 Agent Host 导出日志中的会话、传输与主机问题。

开发与工程 ✓ Microsoft · 官方

VS Code 单元测试助手

在 VS Code 源码仓库中按文件、测试名称或匹配模式运行单元测试。

开发与工程 ✓ Microsoft · 官方

VS Code Agent 定制助手

帮助创建、修复和排查 VS Code Agent 定制文件及其加载问题。

开发与工程 ✓ Microsoft · 官方

Code OSS 启动与调试

为 VS Code 源码构建提供隔离启动、Playwright 自动化和多进程调试端口。

开发与工程 ✓ Microsoft · 官方

VS Code 无障碍开发助手

为 VS Code 交互式功能提供可执行的无障碍实现规范。

设计与前端 ✓ Microsoft · 官方

VS Code CSS 布局规范

用 VS Code 规范构建稳健的 CSS 布局与文本截断体验

开发与工程 ✓ Microsoft · 官方

VS Code Chat 性能实验室

基准测试聊天渲染性能,并检测会话中的内存泄漏。

开发与工程 ✓ Microsoft · 官方

组件夹具与截图测试

帮助你为 VS Code 组件创建稳定、可主题化的截图测试夹具。

开发与工程 ✓ Microsoft · 官方

VS Code 冒烟测试助手

运行、筛选并调试 VS Code 端到端冒烟测试。

开发与工程 ✓ Microsoft · 官方

VS Code 崩溃转储符号化

将原生 VS Code 崩溃转储转换为带方法名的可读回溯。

开发与工程 ✓ Microsoft · 官方

VS Code 本地 Web 工作台

在本地 vscode.dev 中验证 VS Code 工作台和 Agents 窗口改动。

开发与工程 ✓ Microsoft · 官方

反馈执行器

读取当前会话反馈并落实对应代码修改。

相关 Skills