内存泄漏审计
系统检查事件监听器、生命周期回调和可释放资源中的泄漏风险。
技能仅提供代码审查建议,不要求凭据、网络访问或高权限操作,且总体遵循资源释放和生命周期隔离原则,因此基础信任较高。但未说明用户确认、敏感数据处理、变更回滚或外部副作用;PR编号和验证声明在所给材料中未被直接核验,故扣分。
六步检查、代码示例和验证清单结构清晰,package.json及工作流显示相关聊天泄漏检查脚本和CI存在。但技能本身未定义异常输入、无法判断框架语义、测试失败或依赖不可用时的诊断反馈,部分规则使用绝对表述,且静态阅读无法复现关键路径,故限制在10分以下。
触发场景明确,覆盖事件监听器、生命周期、重复调用、池化对象和测试。可是未清楚界定非适用场景、输入输出格式、审查边界或不同实现语义;未提供中文使用支持说明,但核心功能不依赖海外服务,因此仅部分扣分。
文档采用前置触发条件、分步清单、示例和速查表,渐进披露较好;仓库材料提供MIT许可证、版本和官方维护背景。但技能没有安装或依赖说明、维护负责人、更新路径、变更记录、FAQ及已知限制,故为中等分数。
规则可直接用于人工定位常见 disposable 泄漏,并给出 MutableDisposable、Event.once 和 DisposableStore 等修复方向;仓库还显示存在聊天内存泄漏脚本和CI入口。可是没有规定审查输出或补丁格式,规则需要结合具体代码判断,且静态材料未证明代表性结果可直接使用,故扣分。
技能列出PR编号、代码模式和若干仓库脚本名称,相关工作流对聊天内存泄漏提供了可审计的CI定义。仍缺少与本技能关键六类路径对应的提交测试、固定证据或独立复现结果,且本次未执行任何验证,因此只能给有限分数。
- 不要把“永远不要使用”类规则机械套用到所有上下文;需核对对象生命周期、事件实现和调用方所有权。
- 技能引用的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 进行额外验证。
- 开发者审查会重复执行的搜索、切换或初始化方法,担心每次调用都会增加事件监听器。
- 开发者修复报告中指出的 DOM 处理器或扩展图标组件监听器数量持续增长问题。
- 开发者实现 onWillDispose、onDidClose 等模型生命周期逻辑,需要确保相关资源随模型销毁。
- 开发者维护列表或树等资源池工厂,必须让每个池化对象独立释放其监听器。
- 开发者编写创建 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 技能。