Communitygithub.com

tzwkb/memory-cleanup

Agent Skill — Windows memory cleanup & non-paged pool leak fixes.

兼容平台Claude Code~Codex CLI~Cursor
npx skills add tzwkb/memory-cleanup

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

文档

Memory Cleanup Master — Windows 内存清理大师

核心原则

  1. 扫描激进,禁用保守
    • 扫描:全量抓取进程、服务、计划任务、Run keys、非分页池
    • 禁用:仅禁用已知 bloatware 和无风险项,不碰用户工作进程
  2. 每次修改后立即更新还原脚本
    • 还原脚本固定路径:$env:USERPROFILE\Desktop\memory_restore.ps1
    • 任何禁用/修改操作执行后,同步更新还原脚本,覆盖所有历史改动
    • 还原脚本覆盖:服务(含 NDU)、计划任务、Run keys、注册表(内存压缩、页面文件)
    • 不另外建 restore_services.ps1 等多个还原文件,全部合并到 memory_restore.ps1
  3. 重启前不报最终结果
    • 禁用操作需重启生效,重启前展示的是当前状态

安全分级

级别含义示例
🟢 安全已知无用,禁了不影响功能ASUS bloat, DiagTrack, DoSvc, PnkBstrA, NDU fix
🟡 有影响禁了丢功能,但功能可能不需要WSearch (搜索变慢), SysMain (SSD 无影响), Windows Hello
🔴 禁止用户正在使用或系统核心Claude, WSL, 用户打开的 Python 脚本, RpcSs, DcomLaunch

标准工作流程

Step 1: 扫描

powershell -NoProfile -ExecutionPolicy Bypass -File .claude/skills/memory-cleanup-master/scripts/scan_memory.ps1

输出包括:

  • 总内存/可用内存/使用率
  • 非分页池大小及泄漏警告 (>500MB)
  • NDU 状态
  • WSL VM 内存
  • Top 25 进程按 Private Memory 排序
  • 已知 bloatware 服务列表
  • 未分类的非 MS 自启服务
  • Run Keys
  • 非 MS 计划任务

Step 2: 分析

对照 references/known_bloat.md 分类:

  • 命中已知模式 → 🟢 或 🟡
  • 未分类服务 → 检查 DisplayName 和 PathName,判断是否安全
  • 用户工作进程 → 🔴 排除

Non-paged pool > 500 MB → 优先修复:

  1. 检查 NDU 状态
  2. 如果 NDU 已禁但泄漏仍在 → 查 Wi-Fi/网卡驱动(MediaTek MT7921、Killer 已知泄漏)

Step 3: 向用户呈现

用表格展示:

  • 进程大户(哪些在吃内存)
  • 非分页池状态
  • 可禁服务(按 🟢🟡 分级)
  • 可禁计划任务
  • 可删 Run keys

让用户决定处理哪些。批量指令"全禁"可直接执行全部 🟢 项,🟡 项逐项确认。

Step 4: 执行清理

# 禁用指定服务
powershell -NoProfile -ExecutionPolicy Bypass -File .claude/skills/memory-cleanup-master/scripts/cleanup_memory.ps1 -Services 'ASUS','NVIDIA','QQ' ...

# 禁用 NDU
powershell -NoProfile -ExecutionPolicy Bypass -File .claude/skills/memory-cleanup-master/scripts/cleanup_memory.ps1 -DisableNdu

# 预览模式
powershell -NoProfile -ExecutionPolicy Bypass -File .claude/skills/memory-cleanup-master/scripts/cleanup_memory.ps1 -DryRun -Services 'ASUS'

cleanup_memory.ps1 参数:

  • -Services — 服务名列表,支持类别名(ASUS/NVIDIA/QQ/WPS/Logitech/Other 批量展开)
  • -Tasks — 计划任务名列表
  • -RunKeyNames — Run key 名列表
  • -DisableNdu — 修复 NDU 泄漏
  • -DryRun — 预览模式
  • -RestoreScriptPath — 还原脚本路径

Step 5: 验证

  • 重启后重新扫描,对比禁用前后
  • 确认非分页池回落到 500MB 以下
  • 确认待机内存下降

重启后复查清单

部分服务重启后可能恢复 Auto 状态,需重新扫描确认:

项目检查方式
RadeonSoftware.exe进程列表不应出现
DoSvc常被 Windows 恢复为 Auto
AMD External Events Utility驱动安装可能重新启用
Widgets不应有相关进程
msedgewebview2 扩散不应超过 3 个实例
计划任务不应有新的 Ready 任务
非分页池NDU 已禁 + MT7921 新驱动 → 应 < 500MB

NDU 泄漏修复(高频问题)

Windows Network Data Usage 驱动 Ndu.sys 是非分页池泄漏的首要原因。

症状: 非分页池 1-3+ GB,Task Manager 不归因到任何进程,开机即开始增长。

修复:

reg add "HKLM\SYSTEM\CurrentControlSet\Services\Ndu" /v Start /t REG_DWORD /d 4 /f

重启生效。影响:设置里的流量统计变为空白,网络功能不受影响。

MT7921 Wi-Fi 驱动泄漏(ASUS TUF/ROG 笔记本高频)

MediaTek MT7921 旧版驱动会持续泄漏非分页池。NDU 禁用后仍 >500MB 时优先排查。

检查:

Get-NetAdapter | Where-Object { $_.InterfaceDescription -match 'MT7921' }

当前版本若 < 25.x 则需更新。

修复流程:

  1. 打开 Microsoft Update Catalog
  2. 按 Last Updated 排序,下载最新 .cab 文件
  3. 解包安装:
C:\Windows\System32\expand.exe <cab文件> -F:* C:\MT7921_Driver
pnputil /add-driver C:\MT7921_Driver\mtkwl6ex.inf /install
  1. 重启生效。注意:CAB 解包必须用完整路径 C:\Windows\System32\expand.exe,否则 bash 的 expand 会冲突。

AMD 显卡驱动纯净化(去 Adrenalin)

RadeonSoftware (~250MB) 由 AMD 内核驱动直接拉起,禁服务无用。根治方式:

  1. AMD 官网 下载最新 Adrenalin 驱动 .exe
  2. 运行一次安装器让它解包到 C:\AMD\(出现安装向导后关闭)
  3. 找到 C:\AMD\...\Packages\Drivers\Display\WT6A_INF\*.inf
  4. 注入纯驱动:
pnputil /add-driver C:\AMD\AMD-Software-Installer\Packages\Drivers\Display\WT6A_INF\u*.inf /install
  1. 重启后 RadeonSoftware 不再启动。需要面板时重装完整 Adrenalin 即可。

还原脚本覆盖范围

Desktop/memory_restore.ps1 必须覆盖所有修改类型:

修改类型还原方式
禁用服务 (Set-Service)Set-Service -StartupType Automatic
禁用 NDU (注册表)reg add ... Ndu ... /d 2
启用内存压缩 (注册表)Set-ItemProperty ... EnableCompression -Value 0
页面文件迁移 (CIM)Remove-CimInstance C: + Set-CimInstance E:
禁用计划任务Enable-ScheduledTask -TaskName (含完整路径)
删除 Run keysSet-ItemProperty 恢复原始值

脚本清单

脚本用途
scripts/scan_memory.ps1全量扫描,输出内存全景报告
scripts/cleanup_memory.ps1执行服务/任务/Run key 清理,自动生成还原脚本
scripts/kill_bloat.ps1杀掉已知 bloatware 进程
scripts/kill_search.ps1杀掉 SearchHost / StartMenu / TextInputHost 等惰性进程
scripts/audit_full.ps1深度审计:内存压缩、页面文件、非 MS 服务、启动项、进程树
scripts/squeeze.ps1扫描剩余优化目标(进程 >20MB、webview 父进程、ASUS 复活检测)
scripts/squeeze_kill.ps1批量杀 webview 链 + Widgets + PhoneExperienceHost + 改 FontCache/CDP/透明度
scripts/permanent_disable.ps1Widgets 组策略永久禁用 + Phone Link 卸载 + 重启 explorer
scripts/find_respawns.ps1诊断进程复活源(Run key / 任务 / 服务)
scripts/check_gpu.ps1查询 GPU 型号和驱动版本
scripts/download_amd.ps1下载 AMD 驱动(可能被 CDN 拦)
scripts/install_amd_driver_only.ps1提取 AMD 驱动包,pnputil 注入纯驱动(无 Adrenalin)
scripts/update_driver.ps1检查 MT7921 Wi-Fi 驱动状态
references/known_bloat.md已知 bloatware 模式 + 复活机制说明 + 优化技术参考
Desktop/memory_restore.ps1唯一还原脚本,每次修改后同步更新

输出模板

扫描报告

========== Memory Scan Report ==========
Total RAM: 15.2 GB | Available: 2.1 GB | Usage: 86%
Non-Paged Pool: 1680 MB *** WARNING: >500MB ***
NDU: auto  *** FIX REQUIRED ***
WSL VM Memory: 4100 MB

--- Top 10 Processes ---
(full list)

--- Known Bloatware (X services) ---
| Service | Category | Risk |
(full list)

--- Run Keys (Y entries) ---
(full list)
========== End Report ==========

清理建议表

类别风险说明
......🟢/🟡...

清理后汇总

操作数量
禁用服务N
禁用任务N
删除 Run keyN
注册表修复N
预计释放~X GB
还原脚本Desktop/memory_restore.ps1

进程复活机制与根治手段

本节记录已遇到的顽固进程及复活原理。

进程复活机制根治手段
RadeonSoftware (~250MB)AMD 显卡内核驱动 (amdwddmg.sys) 直接拉起用户态控制面板。AMD External Events Utility 服务禁了也没用,驱动层无视服务状态安装 AMD 驱动时选 Driver Only(pnputil 注入纯驱动 INF),不装 Adrenalin 控制面板
asus_framework (~90MB ×4)ArmourySocketServer.exe 是父进程守护者。asus_framework 是 Electron 应用,ArmourySocketServer 监控并复活它先杀 ArmourySocketServer 再杀 asus_framework;禁用 \ASUS\ArmourySocketServer 计划任务
msedgewebview2 (可达 500MB+)Widgets / SearchHost 各启动一个父 webview,父 webview 再链式启动多个子 webview禁用 Widgets(组策略 HKLM\SOFTWARE\Policies\Microsoft\Dsh);SearchHost 无解(任务栏搜索)
Widgets (~17MB + webview 链)Windows Shell 体验主机按用户交互触发启动组策略注册表 AllowNewsAndInterests=0,永久禁用
PhoneExperienceHost (~48MB)预装 Phone Link App,用户登录时自动后台启动卸载 AppxPackage: Remove-AppxPackage *YourPhone*
SearchHost (~47MB)任务栏搜索框,用户任何任务栏交互都会重启无法根治。杀了随时点搜索框即复活
StartMenuExperienceHost (~67MB)开始菜单,点击即重启同上
TextInputHost (~28MB)文本输入/触摸键盘,焦点到文本框即重启同上

PowerShell 调用规范

严禁 -Command 传含 $_ / $_. / $( 的代码,bash 会吃掉这些变量。

# ❌ 错误:bash 把 $_ 解析为自己的特殊变量
powershell -Command "Get-Process | Where-Object { $_.Name -match 'foo' }"

# ✅ 正确:脚本文件,PowerShell 直接解析
powershell -File script.ps1

如果逻辑简单,可用 -Command 但避免 $_{} 内的 $。需要复杂过滤时,一律写成 .ps1 脚本文件再 -File 执行

CDN 下载限制

AMD(Akamai)和 ASUS(阿里云 CDN)的驱动下载链接从终端直接下载会被 403/拦截:

来源CDNcurlwgetIWRBITS
AMD drivers.amd.comAkamai❌ 403❌ 403❌ 403❌ 403
ASUS dlcdnets.asus.com阿里云未测

唯一可靠方式: Start-Process <url> 打开浏览器,用户手工点下载按钮。下载完成后脚本接管后续操作。

优化大招(优先级从高到低)

优先级操作预期收益风险
🔴 最高启用内存压缩等效 +2-3 GB零(Windows 10/11 默认就该开)
🔴 最高NDU 禁用修复非分页池泄漏主因极低(流量统计变空白)
🟡 高杀 RadeonSoftware~250 MB无面板调不了独显直连等
🟡 高页面文件 HDD→SSDIO 性能提升零(纯收益)
🟢 中msedgewebview2 清理100-500 MB相关 App 的 Web 界面失效
🟢 中禁用 Widgets~20 MB + webview 链看不到资讯卡片
🟢 中卸载 Phone Link~50 MB不能 PC 接手机
🔵 低禁用计划任务/服务50-200 MB各组件更新/功能丢失

相关技能