Electron 可视化内存性能分析
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c734898/electron-memory-perf。
技能介绍
问题背景
Electron 应用里内存飙升、截图/画布/IPC 大包拖慢界面,往往发生在某一业务链路里,而不是整个仓库均匀泄漏。全项目盲目加 console.log 或一次性 hook 所有进程,日志噪声大、难以归因,事后也很难用 rg 干净撤掉插桩。
技能如何工作
本技能默认只分析你点名的模块(例如全屏防护、某条 IPC、单个 Worker 或启动空闲内存),流程大致是:
- 先读代码,用业务语言梳理入口、IPC、
BrowserWindow/WebContentsView、渲染页、子进程与清理路径。 - 只对这条链路实际用到的能力打点(如
canvas、Blob、native addon、desktopCapturer、大 payload IPC 等)。 - 在既有日志体系(
electron-log、userData等)上追加单行 JSON,统一带可检索标记AI-PERF,便于后续删除。 - 给出复现后的分析命令,并用
scripts/electron-perf-report.cjs从日志生成中文 HTML 报告,把进程指标映射回业务动作。
报告侧会包含业务流程、所用能力清单,以及基于能力的内存归因说明;指标展示优先中文标签,并保留英文字段供工程师检索。
适用边界
- 日志路径若无法从代码可靠推断,技能会停下来向你确认,而不是猜路径。
- 插桩范围以你批准的模块为准;除非你明确要求,不会对全仓库铺开。
- 诊断前应参考技能附带的
references/instrumentation.md与references/interpretation.md,避免脱离实现细节做泛泛结论。
使用场景
- 截图或录屏模块在反复调用 `desktopCapturer` 后进程 RSS 持续上涨,需要按业务链路打点并出中文 HTML 报告
- 某条 IPC 频繁传递大图或序列化对象,要在收发两侧记录 payload 大小与耗时后再复现一次问题
- 启动后未打开业务窗口时空闲内存偏高,需要对加载窗口数、定时器与快照做分段采集
- 全屏防护或窗口嵌入(`WebContentsView`)切换前后 GPU/进程工作集异常,需限定模块插桩而非全仓扫描
适合人员
- 维护 Electron 客户端的工程师,需要在发版前把某功能模块的内存归因说清楚
- 负责截图/画布编辑器的桌面端开发,要量化 `canvas`/`Blob` 解码与清理是否按预期执行
- 排查 IPC 与大 payload 的性能 owner,希望日志带 `AI-PERF` 标记且事后可一键检索删除
- 带非研发同学看结论的技术负责人,需要业务流程章节与中文指标标签的可读报告