Windows 后台进程诊断与安全清理工具(鼠鼠cleaner)
一键扫描 Windows 电脑的后台进程与预装软件,识别 OEM 全家桶和可疑后台;持久化变更自动备份、可恢复,一次性结束进程不可恢复。
说明:工具名里的 "CPU" 是入口信号(用高 CPU 占用发现可疑后台),它不是 CPU 调度/降压/电源计划/核心优先级优化工具。
本工具诞生于一次真实案例:一台联想笔记本深夜被 AI 助手全家桶一次性拉起 30+ 进程,CPU 满载 69~93%,表现为"突然卡顿"。
- 当前拥有 tested=true(实测)且命中 exact/path 窄 matcher 后可处理 的高价值规则,绝大部分来自联想 ThinkBook 16p G6 ADR (21U0),且很多是 tested_count=1 的单机实测
- 华为 / Dell / HP / ASUS / 小米等品牌已写入特征库,但大多是 tested=false → 动作降级为 investigate(只报告、不自动处理)
- 因此更准确的定位是:联想部分机型已具备实战能力的 Windows 后台诊断工具 + 其他品牌的实验性识别框架,尚不能宣称"任何品牌电脑都可以安全清理"
- 多品牌实测覆盖是持续积累方向(扫描→人工确认→补 evidence 实测字段,见 CHANGELOG Unreleased 计划)
- 自动测试全部使用 Mock 或非破坏性夹具;自动测试不等同真实机器验收,也不能替代其他机器上的真实 UAC、清理和恢复闭环。2026-09-07 已在当前联想机器上完成一次官方卸载入口验收:安全复核后打开联想卸载程序,由用户在厂商界面完成卸载,随后 0 / 5 / 30 秒回读均未发现
HRWSCCtrl、目标进程或对应卸载项。该结果只证明这台机器和这次厂商卸载流程,不代表所有联想版本都已覆盖
├── gui-cleaner.ps1 鼠鼠风格图形界面(WPF,双击 bat 或命令行启动)
├── 鼠鼠版-图形界面.bat 图形界面入口(双击即用,不会命令行也能操作)
├── cpu-cleaner.ps1 主程序(含 scan_inventory 管理员只读采集及 scan / clean / restore / update)
├── bloatware-profiles.json 预装软件特征库(Schema 3.0,可自行扩展)
├── 1-扫描.bat 图形软件启动器(完整只读扫描的主入口)
├── 2-清理.bat / 3-恢复.bat 兼容的命令行清理与恢复入口
├── 零基础操作指南.md 给完全不会命令行的人的图文步骤
├── 命令行入门操作指南.md 从"怎么打开命令行"教起的操作步骤
├── 手动整理方案.md 不用脚本的手动操作指南
├── README.md 本文档
├── tests\ 单元测试 + Pester 测试(CI 自动跑)
├── pending_actions.json 扫描生成的待处理清单(clean 模式的输入)
├── backups\ 处理备份(restore 一键恢复)
└── report_*.html 扫描报告(可选生成)
这台工具提供五条路,按你适合的选:
| 方案 | 适合谁 | 入口 |
|---|---|---|
| 0. 图形界面(鼠鼠版) | 不想看黑窗口,鼠标点点点 | 双击 鼠鼠版-图形界面.bat,在一个窗口完成扫描、复核、执行和恢复 |
| 1. 零基础图形界面 | 完全不会命令行 / 帮别人弄 | 双击 1-扫描.bat,在同一窗口完成扫描、复核和处理;指引见 零基础操作指南.md |
| 2. 工具自动(推荐) | 会用命令行,想要"扫描→确认→处理→可恢复"闭环 | 本 README「快速开始」,三条命令搞定 |
| 3. 命令行入门 | 想学命令行、从零开始 | 命令行入门操作指南.md,从打开命令行教起 |
| 4. 手动整理 | 不想装工具 / 想逐项亲手操作 | 手动整理方案.md,纯 Windows 自带功能 |
五条路共用同一核心授权、备份、执行与恢复逻辑;不同入口的交互和复核体验不同,GUI review 与 CLI 控制台选择不能视为相同体验。
图形界面的完整旅程是:
开始安全扫描 → UAC 管理员只读采集 → 普通权限验证并扫描 → 扫描结论 → 处理建议复核 → 管理员重新验证并执行 → 逐项结果与恢复
复核页把结果明确分成四组,默认选择只由规则类别决定:
| 分组 | 规则含义 | 默认状态 | 能否执行 |
|---|---|---|---|
推荐/自动安全(automatic_safe) |
已实测,并由本次扫描实际命中 exact 或 path |
已勾选 | 用户确认后可执行 |
可选有影响(manual_impact) |
已实测、精确命中,但可能影响厂商功能 | 未勾选 | 用户主动勾选,并完成二次确认后可执行 |
已处理(resolved) |
目标当前已经是 disabled 等目标状态 |
不可选 | 不重复清理 |
仅观察(observation) |
只有 contains / regex 等宽匹配,或身份/扫描信息不完整 |
不可选 | 只能识别和提示 |
其中,联想通知与诊断计划任务属于推荐/自动安全项;HRWSCCtrl(联想 Windows Security Center)属于可选有影响项:必要性是 optional,默认不选,只有用户主动勾选后才会弹出二次确认。若可信扫描确认它是 PPL 受保护服务,工具不会承诺强停,而是在管理员清理进程内再次验证 exact 服务、卸载注册表、文件身份、路径和联想签名后,仅打开官方卸载程序;后续是否卸载由用户决定。非 PPL 且身份完整的 exact HRWSCCtrl 才可走一次性 stop_service_runtime。宽匹配命中始终只进入“仅观察”。
受保护清单使用 inventory_schema_version: 3。它同时绑定服务进程身份、LaunchProtected 状态和官方卸载证据;旧 v1/v2、缺失版本及未来版本都拒绝消费并要求重新扫描。只有对应动作所需的可信字段完整、稳定,HRWSCCtrl 才会成为可选项;not_running 只观察、不可执行并要求重新扫描,unavailable 同样只观察、不可执行并要求重新扫描。
stop_service_runtime 是一次性、非持久动作,不进入恢复包,因此不可通过恢复包恢复。执行前会复验服务/路径/PID/进程名/进程路径/启动时间;随后在同一个原生 SCM 服务句柄上核对 exact 服务的原始配置和 PID,再直接发送 STOP。该动作授权停止 exact 服务的当前运行态,不修改 StartMode,也不会自动停止依赖服务。停止后继续进行约 5 秒稳定验证;期间服务出现任意正 PID(> 0)都记录为 failed/verification,不会把自动重新拉起误报成成功。
执行清单中的每项结果都会持久化并写回 result_reason / failure_stage;GUI 只显示经过严格验证和安全净化的 result_reason / failure_stage。持久动作 disable_service / remove_autostart / disable_task 仍在修改前备份并可通过可信恢复包恢复,与一次性结束进程严格分开。
open_official_uninstaller 不是自动卸载:它只在用户主动勾选、二次确认、pending SHA-256 与影响摘要验证、管理员态重新授权以及启动前文件/签名复验全部通过后打开官方 EXE。结果记为 manual_required,不记为 success,也不生成 Cleaner 恢复包。
扫描可以识别宽匹配,但执行必须保持窄匹配:实际命中 contains / regex 的项目只作为观察项展示,复核页中不能勾选。exact / path 也必须绑定实际命中的 pattern、类型、字段和目标身份;进入管理员执行后,仍会用同一个 matcher、同一个字段和当前系统对象重新验证。
GUI 进程始终以普通用户权限运行。点击扫描时出现的一次 UAC 只授权独立的 scan_inventory 子进程读取完整服务与计划任务清单;它只接收随机 nonce,不执行清理、不改任务文件 ACL,也不直接解析任务 XML。采集结果写入 %ProgramData%\MouseCleaner\ScanResults 的受保护目录,普通权限扫描会再次验证路径、ACL、当前用户 SID、时效、终态标记和内容哈希后才使用。
如果用户取消这次 UAC,GUI 会明确进入 AllowLimited 降级扫描:计划任务标为 unavailable,服务信息可能 degraded,界面不会显示“电脑干净”,这些不完整分类也不能授权清理。清理权限没有因扫描提权而扩大;仍必须经过用户勾选、执行子集 SHA-256 绑定、管理员态同 matcher 重验、可信备份、执行后验证和可恢复流程。
清理阶段的管理员 UAC 只会在用户选定项目并完成复核后请求;manual_impact 项还必须先完成独立二次确认。扫描阶段可能先出现一次独立的只读 UAC,这两个 UAC 的用途不同。GUI 生成的执行子集同时绑定 pending 文件 SHA-256 和已确认的 manual_impact 身份摘要;文件哈希防止清单被替换,人工摘要防止确认范围被改变。
顶部四格“鼠鼠的幻想”漫画只负责解释当前旅程和状态,不参与风险判断,也不能决定某个项目是否安全或可执行。真正的安全边界由规则证据、实际命中的 matcher、pending 授权快照和管理员态重验共同决定。
不会命令行? 直接双击 1-扫描.bat 打开图形软件,在同一个窗口里完成“扫描 → 复核 → 安全处理”;需要回退时再用界面恢复或 3-恢复.bat。详细指引看 零基础操作指南.md。
要安装带“鼠鼠的幻想”图标的桌面入口,运行:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Install-DesktopShortcut.ps1安装器会创建或更新 鼠鼠 Cleaner.lnk,固定使用仓库内的 GUI、工作目录和多尺寸 assets\shushu.ico;运行前会先验证 GUI 与图标存在,不会改动其他桌面快捷方式。
会用命令行? 往下看:
# 1. 命令行有限扫描(只读,不改任何东西)
# 不请求 UAC,因此服务/计划任务信息可能不完整,不能据此授权对应清理;完整扫描请启动 gui-cleaner.ps1
powershell -ExecutionPolicy Bypass -File cpu-cleaner.ps1 -Mode scan -AllowLimited
# 生成 HTML 报告
powershell -ExecutionPolicy Bypass -File cpu-cleaner.ps1 -Mode scan -AllowLimited -ReportPath D:\报告.html
# 2. 处理(按扫描清单逐条确认;持久化变更自动备份)——需要管理员
# 开始菜单搜 "PowerShell" → 右键 → 以管理员身份运行,然后:
powershell -ExecutionPolicy Bypass -File cpu-cleaner.ps1 -Mode clean
# 3. 恢复(后悔了?一键还原)
powershell -ExecutionPolicy Bypass -File cpu-cleaner.ps1 -Mode restore -BackupDir "D:\CPU后台整理工具\backups\20260809_120000"
# 4. 更新特征库(需先在脚本顶部配置 $script:ProfileUrl)
powershell -ExecutionPolicy Bypass -File cpu-cleaner.ps1 -Mode update也可以把整个文件夹拷到 U 盘,带去别的电脑用。特征库独立于脚本,改特征不用动代码。
| 模式 | 做什么 | 需要管理员 | 会修改系统吗 |
|---|---|---|---|
| scan_inventory | GUI 内部模式:按 nonce 采集完整服务与计划任务,写入 ACL 保护的短期结果包 | 是 | 完全不改 |
| scan | 验证并消费受保护清单,或显式 -AllowLimited 降级;同时收集系统概况、进程、自启并生成待办清单和报告 |
否 | 完全不改 |
| clean | 按清单逐条确认后执行;持久动作先备份,官方卸载动作只打开经复验的厂商卸载程序 | 是 | 按动作而定 |
| stop_process | 仅由 GUI 对用户已勾选且身份复核通过的进程执行一次性结束;不删除文件、不关闭自启 | 否 | 否(进程结束不可恢复) |
| restore | 从备份目录一键恢复上次处理 | 是 | 是(恢复原状) |
| update | 从配置的 URL 更新特征库(自动备份旧版) | 否 | 是(只改特征库文件) |
扫描采集采用失败关闭:GUI 默认先通过管理员只读子进程获取完整服务和计划任务;命令行若没有可信 inventory nonce,必须显式使用 -AllowLimited 才能继续降级扫描。空结果、畸形身份、受保护包验证失败都会终止完整扫描;降级状态以 scan_health / scan_warnings 贯穿文本报告、HTML、待处理清单和 GUI,不再把“无法完整读取”显示成“这台机器比较干净”。
安全设计:
- 默认只读:scan 不修改任何设置
- 权限隔离:GUI 不提权;UAC 只启动
scan_inventory读取服务/任务。任务文件 ACL 永不修改,任务 XML 不直接解析 - 降级不授权:取消 UAC 后的
AllowLimited结果明确不完整;unavailable/degraded 分类只能观察,不能生成相应清理授权 - 双重确认:clean 先显示完整清单(名字/动作/原因),输入编号或 all 才执行,可随时 q 退出
- 安全类别强制规则:
safe=false的条目不能进入automatic_safe;只有具备完整、已验证的manual_impact策略,并且本次实际命中exact/path的项目,才允许在用户主动勾选和二次确认后进入执行子集;其他safe=false项只报告 - 逐命中授权:每个 scan hit 记录
matched_pattern/matched_type/matched_field;危险动作只由实际命中的exact或pathmatcher 授权。contains/regex(以及publisher/sha256)只调查,execution.allow_auto=true不能绕过 - 字面匹配:
exact/contains/path都按OrdinalIgnoreCase做大小写不敏感的字面比较,*、?、[]没有通配含义;regex是唯一表达式类型,path只允许命中实际路径字段 - pending schema 3: scan 写入整数
pending_schema_version: 3,并始终包含四个数组:actions、resolved、observations、suspicious。schema 2、旧版、缺失版本、字符串或数组版本都必须重新 scan,不自动升级;GUI 生成执行子集时同样拒绝不兼容清单 - 双重摘要绑定: 执行子集的 pending 文件 SHA-256 与
manual_impact项的确认摘要都在提权前生成、传递并校验;任一不一致都拒绝执行 - 管理员态重验:clean 按当前特征库、同一 matcher、同一字段和当前系统对象重新确认服务、自启、任务或进程身份;自启仅允许标准 Run 键。用户选定后、任何备份或系统变更前还会最终复核一次
- 敌对清单防护:管理员 clean 拒绝重复 JSON 键、超过 5 MiB、容器深度超过 64、非法 UTF-8 或读取期间变化的 pending 文件,并在同一受保护文件句柄上完成检查与读取
- 执行后验证:每个动作执行完重新读取真实状态确认(服务 StartType / 注册表值 / 任务 State),验证通过才标记 success,否则 failed
- 状态机:
actions中的项目按pending → success / failed / skipped / manual_required流转;已完成项目进入resolved,重跑不会重复清理,观察项目保留在observations - 高 CPU 可选处理: 多次采样达到高占用条件且不是可信 Windows 核心身份的进程会进入独立
suspicious列表,即使它带有效第三方签名;默认不勾选,并逐条显示是否必要、列出原因和处理影响。执行只结束当前进程实例,不删除文件、不关闭自启,并按 PID、名称、绝对路径和 UTC 启动时间重新绑定验证;可信 Windows 路径中的核心进程继续拒绝处理,可疑目录中的冒名系统进程不能只凭名称绕过扫描 - 自动备份与恢复: 服务、自启和计划任务等持久化系统变更在执行前备份原状态到
backups\时间戳\;restore 只接受本工具创建且校验通过的备份,恢复后重新读取并核对状态。一次性结束当前进程不是持久化变更,不能恢复,必须由用户单独勾选确认 - 卸载不静默执行:通用
uninstall只提示去“设置-应用”;受保护联想服务的open_official_uninstaller只打开经复验的联想官方卸载程序,最终选择仍由用户完成
扫描 + 人工判断时,按这个思路分层:
| 类型 | 典型例子 | 特征 | 处理 |
|---|---|---|---|
| 厂商预装全家桶 | 联想 AI 助手(AIAgent/LeMcpManager/联想小天)、华为/戴尔/惠普/华硕管家、厂商商店与推送框架 | 服务名带厂商名;一次性拉起多个子进程;常驻不做事 | 禁用服务+删自启(工具自动做) |
| 国产流氓/推广软件 | 鲁大师、驱动精灵、2345、金山、各种"加速器/壁纸/WiFi 助手" | 用户自己装或捆绑安装;弹广告;后台扫描 | 卸载(工具提示人工卸) |
| 自动更新器 | 各家 updater.exe、厂商"支持助手" | 周期性联网检查更新 | 可禁,更新时手动 |
| 合法但吃资源 | Docker、开发工具、浏览器多开、Wallpaper Engine | 你自己开的,或确实在用 | 按需关闭,别禁 |
- 看它是不是系统核心:路径在
C:\Windows\、名字带 Microsoft/Windows 的服务 = 系统组件,别动 - 看它是不是硬件驱动:显卡/声卡/WiFi/触控板/Fn 键/电源管理 = 动了坏功能,别动
- 看它是不是厂商增值服务:AI 助手、应用商店、推送框架、更新器、管家(非驱动部分)= 可禁
口诀:驱动别动、系统别动、管家助手放心动。
high:确定无用且常驻(AI 助手全家桶、广告推送框架)→ 自动进待办清单medium:可禁但看情况(应用商店、游戏 AI、更新器)→ 进清单但提示权衡low / investigate:拿不准(华为服务、游戏外设、通用更新器)→ 不进清单,只报告提示人工调查none:明确别动(电脑管家安全组件、设备管理主程序)→ 只展示说明,绝不自动处理
不只看关键词,综合多维信号给每个进程打分(0~100+,负数归零):
| 加分项 | 分值 | 减分项 | 分值 |
|---|---|---|---|
| 已知特征库命中 | +30 | Microsoft 签名 | -40 |
| 非系统目录 | +20 | Windows\System32 | -30 |
| 开机自启 | +15 | 已知驱动组件 | -25 |
| CPU 采样 > 5% | +15 | ||
| 无有效签名 | +10 | ||
| 同目录多进程(≥3,疑似全家桶) | +10 |
分级:0-29 正常 / 30-49 建议观察 / 50-69 可优化 / 70+ 高度建议处理。 评分只用于"提高判断质量",不会自动执行任何操作——报告里显示分数和依据,是否处理仍由你决定。
bloatware-profiles.json 是纯数据文件(schema_version=3),发现新机型/新软件往里加一条即可,不用改代码:
{
"id": "厂商-标识", // 必须唯一
"vendor": "Lenovo",
"name_cn": "中文名",
"risk": "high | medium | low",
"safe": true, // false 不能成为 automatic_safe
"reason_cn": "处理原因(会显示在报告和确认清单里)",
"detect": { // 每种检测对象的 matcher
"services": [{"match": "LeMCPManagerService", "type": "exact"}],
"processes": [{"match": "mcpman.exe", "type": "contains"}],
"autostarts": [],
"tasks": []
},
"actions": { // 每种检测对象对应的动作
"service": "disable_service",
"process": "investigate"
},
"evidence": { // 证据体系: tested=false 表示未实测
"tested": true,
"tested_count": 1,
"tested_models": ["Lenovo ThinkBook 16p G6 ADR (21U0)"],
"last_verified": "2026-08-09"
}
}matcher 类型包括 exact、contains、regex、path、publisher、sha256。危险动作只接受实际命中的 exact,或命中 autostart_value / task_path / process_path 的 path;contains / regex 只能识别,不能因为规则声明了动作或 allow_auto 就获得执行资格。
可选清理规则还应声明 cleanup_policy:execution_class、必要性、默认选择、是否需要确认、中文影响和清理原因。HRWSCCtrl 通过 manual_actions.service=open_official_uninstaller 声明 PPL 场景意图;运行时只有 exact 服务名、保护级别 3 和完整可信卸载证据同时成立才保留该动作,非 PPL exact 服务可降级为 stop_service_runtime。两种动作都默认不选并要求二次确认。
程序启动时自动校验,错误规则直接拒绝加载:
- 当前特征库格式为 Schema 3.0;Schema 2.0 可在加载时迁移,未来版本拒绝加载。特征库迁移规则与 pending 清单必须使用 schema 3、且不自动迁移的规则相互独立
- id 必须存在且唯一
- risk 必须是 high/medium/low
- action 必须是 disable_service / stop_service_runtime / open_official_uninstaller / remove_autostart / disable_task / uninstall / investigate / none,并满足各自动或手动动作的专属约束
- detect 不能全空(四类至少一个关键词)
- detect matcher 的 match 必须非空、type 必须合法;
execution.allow_auto若存在必须是布尔值,但不参与危险动作授权 - safe=false 的规则不能配自动危险动作;若声明
manual_impact,必须同时提供合法manual_actions、optional必要性、默认不选和二次确认,并且运行时仍只接受exact/path实际命中
动作类型说明:
| 动作 | 含义 | 进执行队列吗 |
|---|---|---|
| disable_service | 禁用服务 | ✅ |
| remove_autostart | 删除开机自启项 | ✅ |
| disable_task | 禁用计划任务 | ✅ |
| uninstall | 提示人工去"设置-应用"卸载(不自动执行) | ✅(标记 manual_required) |
| stop_service_runtime | 只停止已复验的 exact 服务当前实例,不改启动模式 | ✅(手动影响项) |
| open_official_uninstaller | 复验后只打开联想官方卸载程序,不代替用户卸载 | ✅(手动影响项,标记 manual_required) |
| investigate | 只报告,人工调查 | ❌ |
| none | 只报告(safe=false 常用) | ❌ |
证据纪律: 没实机验证过的规则 tested=false,程序只报告不自动处理,并在报告里标注"参考规则";实测过的规则标注机型/日期。宁缺毋滥——100 条验证过的规则比 1000 条抄来的有价值。
不想用脚本、或者给别人(不懂电脑的人)用时,看 手动整理方案.md——纯 Windows 自带功能,任务管理器 + services.msc + taskschd.msc + 设置卸载,带厂商对照表和"别动清单"。
- restore 按可信备份恢复稳定状态:服务恢复 StartType/DelayedAutoStart,并尝试恢复备份记录的 Running/Stopped 状态;
sc start返回“已在运行”(1056)时仍会继续读取最终状态,只有最终状态吻合才算成功。删除的自启项和禁用的任务也按备份还原。 - 卸载不静默执行:通用 uninstall 只提示;联想官方卸载入口只打开受信 EXE,最终确认和卸载由用户完成
- NOT_STOPPABLE 服务(如联想 LISFService):禁用成功但进程杀不掉,重启后消失,工具会如实提示
- 联想 HRWSCCtrl:属于可选有影响项,不自动处理。PPL 保护级别为 3 时不尝试强停,只能在完整证据复验后打开联想官方卸载程序;非 PPL exact 服务才尝试一次性停止当前运行态。任何证据缺失或漂移都拒绝执行并要求重新扫描
- 瞬时采样:Top CPU 进程是 2 秒采样,长期监控请用任务管理器
- PowerShell 5.1 环境下脚本为 UTF-8 BOM 编码;如自行编辑脚本,必须保持 BOM(否则中文报错)。特征库 JSON 用 UTF-8 即可。
- v1.8.1(未正式发布,修复已进入
master):增加 inventory v3、PPL 识别与联想官方卸载安全交接;2026-09-07 当前机器已完成厂商卸载及 0 / 5 / 30 秒回读。随后加入的管理员 clean 直接交接路径已有完整自动回归,但因目标已卸载,未在同一目标上重复实机启动 - 2026-08-24 v1.8.0(联想可选清理与桌面 GUI):Schema 3 matcher 来源绑定、可选 OEM 清理、受保护管理员扫描、一次性结束高 CPU 进程、鼠鼠 GUI 与桌面快捷方式;旧 pending 清单拒绝自动迁移,执行前重新验证当前身份与状态。
- 2026-08-09 v1.7.0(模块化拆分):cpu-cleaner.ps1 1539 行 → 主脚本 ~90 行 + src/Core/ 7 个域文件(Utils/ProfileEngine/Scanner/RiskEngine/ReportEngine/ActionEngine/BackupManager),dot-source 保持作用域共享;run-unit/CI analyzer 适配;测试 85+14 项。
- 2026-08-09 v1.6.0(Schema 3.0 match_type):detect 从字符串子串升级为显式 match_type(exact/contains/regex/path/publisher/sha256),执行闸门——危险动作必须是窄匹配(exact/path)才能自动执行,contains/regex 宽匹配默认降级 investigate(识别保留、执行收紧),实机验证过的规则可显式 execution.allow_auto=true 豁免;旧特征库加载自动迁移 v3(11 条联想实测规则保留自动资格);测试 85+14 项。
- 2026-08-09 v1.5.7(CPU 采样升级):2 秒单次采样 → 5×3 秒多次采样(平均/峰值/持续占用/子进程数),区分「瞬间吃一下」vs「持续后台发疯」;评分新增 +10 持续占用;文本/HTML 报告 Top CPU 表加 平均%/峰值%/持续/子进程 列。
- 2026-08-09 v1.5.6(数据模型 P0):pending_actions.json 拆 actions/observations/suspicious——investigate/safe=false/tested=false 不再静默丢弃,进 observations 且 GUI 以 disabled checkbox 展示(「证据不足,不让我动」);全选跳过观察项;单值恢复补 Binary/MultiString 类型修复;测试 63+14 项。
- 2026-08-09 v1.5.5(GUI 勾选式):处理建议页逐项勾选(风险级/实测/建议动作/可恢复),未实测默认不勾选,全选/清空;「处理已勾选项目」→ CLI
-PendingFileArg只处理勾选子集(授权验证照跑),结果合并回主清单;GUI 无窗口测试 13 项。 - 2026-08-09 v1.5.4(恢复粒度 P0):自启项备份从 reg export 整个 Run 键改为单 Value 备份(Name/Type/Data),restore 只恢复这一项——期间用户新增的同键其他值不再被旧整键覆盖;旧 .reg 备份兼容;README 定位诚实化 + 副标题「Windows 后台进程诊断与安全清理工具」+ GitHub description 同步。
- 2026-08-09 v1.5.3(安全边界):clean 提权后按当前特征库重新验证授权动作(Test-PendingActionAuthorized:id/tested/safe/action/target 五重确认,不信任被改过的 pending_actions.json);GUI 扫描轮询三态收尾(Completed/Failed/Stopped);GUI 执行/恢复检查 ExitCode 并读回状态统计;CLI restore 执行后验证 + exit 0/2;GUI 无窗口测试套件 + CI 覆盖。
- 2026-08-09 v1.5.2(CI 假绿根治):移除 Pester 断言兼容包装(
Should-Be绑定错误导致断言从未执行、39 项全空转仍绿),全部改原生Should -Be;CI 固定 Pester 5.9.0(PS5.1/PS7 双跑);Pending 测试 Mock Windows 状态(Get-Service/Get-ItemProperty/Get-ScheduledTask)使结果与跑测试的机器无关;版本号全局化 $script:Version 单点引用;HTML 报告与文本报告统一(Top CPU 风险分/评分依据 + 风险分级汇总 + 计划任务 + evidence)。 - 2026-08-09 v1.5(Pester + CI):新增 Pester 测试套件 tests/Pester/(6 个文件 37 项:特征库加载/待办清单/清理动作/恢复兼容/扫描评分/报告输出,覆盖空 profile/错误 JSON/去重/safe 规则/映射/中文输出);GitHub Actions CI(PS 5.1 单元测试 + PS5.1/PS7 双跑 Pester + PSScriptAnalyzer + schema 校验),README 加 CI 徽章。修复自启进程名提取对带参数路径的解析。本机 Pester 37 项全过。
- 2026-08-09 v1.4(多维检测与风险评分):新增进程综合评分体系(进程名+路径+签名+自启+CPU+特征库 六维信号,评分分级 正常/建议观察/可优化/高度建议处理,只报告不自动执行);报告第 2 节加风险分列、新增风险分级汇总节;特征库命中显示风险分数;校准 Git/msys 工具目录避免同目录误加分;联想 Appvant 入特征库。新增双击启动器(1-扫描.bat/2-清理.bat/3-恢复.bat,纯 ASCII 规避 cmd 中文解析坑)+ 零基础操作指南.md;评分单元测试 13 项(合计 54 项全过)。
- 2026-08-09 v1.3(Schema 2.0):特征库重构为 detect/actions 分离结构 + schema_version + evidence 证据字段;新增 Load-Profiles 启动校验(id 唯一/risk 合法/action 合法/detect 非空/safe=false 禁危险动作,错误规则拒绝加载);v1 旧格式自动转换;同 id 去重避免重复待办;报告显示实测证据;update 下载后先完整校验再替换。新增 schema 单元测试 12 项(合计 41 项全过)。修复 v1 转换后 actions 为 hashtable 导致 PSObject.Properties 遍历到元属性的 bug(新增 Get-ActionKeys/Get-ActionFor 统一处理)。
- 2026-08-09 v1.2(Reliability Release):① 修复 restore 服务启动类型映射(Automatic→auto/Manual→demand/Disabled→disabled,兼容旧数字枚举 manifest),备份记录启动类型+运行状态+DelayedAutoStart;② safe=false 强制只报告永不进执行队列(-YesToAll 也拒绝);③ done 布尔改五态状态机 pending/success/failed/skipped/manual_required,重跑幂等;④ 修复 HTML 报告 $SysInfo 未定义变量(系统概况原本为空);⑤ 每个 clean 动作执行后重新读取真实状态验证(服务 StartType/注册表值/任务 State),通过才标 success。新增 tests/ 单元测试 29 项全过,scan→clean→幂等→restore 集成回归通过。
- 2026-08-09 v1.1.1:审查修复 5 处 PowerShell 陷阱——① clean 写回 JSON 用 -InputObject 防管道展开(原会把完整清单写成单对象/空文件);② 清单读取 null 防御($null 进管道产生 @($null) 导致空备份);③ 数组序列化用变量构造(if/else 表达式输出空数组会变 $null 序列化成 {});④ 空 manifest 写 [];⑤ restore 对空/损坏备份报错退出。本机回归 scan→clean→clean 幂等全通过。
- 2026-08-09 v1.1:重构落地——① clean 改用结构化字段(不再拆显示字符串,杜绝错位);② 特征命中多类型同时列出(同一软件的服务+自启+任务不遗漏);③ 新增未知高占用进程检测(可疑路径/无签名→人工调查,不进自动清单);④ clean 可显式输入 PID 结束可疑进程(绝不自动杀);⑤ 服务触发器提示(Manual 却 Running 的第三方服务单独列出);⑥ 特征库扩展至 23 条(补 360/鲁大师/驱动精灵/Dell Command Update 等);⑦ clean 打印 sc 执行结果;⑧ pending done 标记利用(重跑跳过已完成);⑨ HTML 报告美化(CSS 表格);⑩ 新增 -Mode update 特征库更新机制。
- 2026-08-09 v1.0:首个版本。基于联想 AIAgent/LeMcpManager 全家桶清理实战泛化;特征库覆盖联想/华为/戴尔/惠普/华硕/小米/国产流氓;scan/clean/restore 三模式;本机实测通过。
自动测试使用 Mock 或非破坏性夹具,不能等同于真实 UAC、真实系统状态变化、实际备份恢复闭环或用户机器上的 mutation 验收。真实 UAC、勾选/二次确认、管理员执行、执行后状态和恢复仍需人工验收;本次文档提交不执行这些操作。
桌面图标和 shortcut 的文件、目标与 Windows 多尺寸视觉检查属于后续视觉任务,不在本次文档提交范围内。