PC Checkup(体检 + 磁盘扫描)
Windows 本机的只读体检与磁盘空间分析工具包。默认只采集、不改动任何设置;
清理能力存在,但必须逐项经用户确认,且默认移入回收站(可还原)。
何时使用
用户说「体检 / 电脑体检 / 系统体检 / 磁盘扫描 / C 盘扫描 / 跑一次体检 /
pc checkup / checkup」,或需要排查「C 盘满了、电脑变慢、启动项太多」时使用。
工作流
第 1 步:跑一键入口(只读)
python scripts/checkup.py # 体检 + 扫描
python scripts/checkup.py --fast # 只测已知缓存目标,快
python scripts/checkup.py --no-scan # 只体检
Windows 上若 python 不在 PATH,用完整路径或 py -3。脚本需要 psutil:
pip install psutil。
第 2 步:读报告
reports/pc-health-<时间戳>.txt—— 体检摘要reports/disk-report-<时间戳>.html—— 三级分类 + 目录排名 + 大文件
第 3 步:汇报(控制在 20 行内)
- 磁盘可用空间与 green 类可回收总量;
- 体检异常项(磁盘余量 < 10%、内存占用 > 85%、开机 > 7 天、CPU 长期高负载进程);
- 建议处理的空间项 Top 3,标注归属(系统缓存 / 应用缓存 / 用户数据);
- 红线提示(见下)。
第 4 步:清理(仅在用户明确同意后)
python scripts/c_drive_sweep.py --preset temp --apply # 逐项确认后入回收站
先用 --dry-run(默认)看清单,确认后再加 --apply。
安全边界(不可违反)
- 扫描与体检默认只读:不删除、不禁用启动项、不结束进程、不写注册表。
- 清理必须逐项确认:默认走回收站;
--permanent需逐项输入DELETE。 - 只清内容、保留目录本体:删除
%TEMP%目录本身会让运行中的程序写临时文件失败。 - 永不删除(red):系统目录、Program Files、
AppData\Roaming\Tencent(微信/QQ 数据)、
Packages\*\LocalState(含 IndexedDB 应用数据)、文档 / 桌面 / 图片等个人文件。 - 回收站按 C 级处理:清空不可逆,禁止
Clear-RecycleBin -Force,须先报体积与条目数并征得同意。 powercfg /h off与Dism StartComponentCleanup按 C 级处理:前者关闭休眠并使快速启动失效,
后者不可回滚已安装更新。只给建议与空间收益,不自动执行。- 数据不出本机:报告只写本地
reports/,不联网、不上传任何信息。
脚本一览
| 脚本 | 作用 | 是否改动系统 |
|---|---|---|
scripts/checkup.py |
一键入口:体检 + 扫描 | 否 |
scripts/pc_health_check.py |
CPU / 内存 / 磁盘 / 开机时长 / 系统版本 / 启动项 / 进程 TOP10 | 否 |
scripts/disk_scan.py |
三级分类 + 目录排名 + 大文件,输出 JSON + HTML | 否 |
scripts/probe_size.py |
剔除 junction 的精确体积测量 | 否 |
scripts/c_drive_sweep.py |
预设清理(temp / thumbs / edge / pip / winupdate) | 是(需确认) |
scripts/startup_manager.py |
启动项列举 / 禁用 / 恢复 | --disable 时是 |
报告目录默认 <skill>/reports/,可用环境变量 PC_CHECKUP_OUT 覆盖。
已知陷阱(实现时必须注意)
- junction 重复计数:Windows 兼容链接(
Local Settings、Application Data、
My Documents…)会让os.walk全盘统计翻倍失真。所有递归统计必须先剔除
FILE_ATTRIBUTE_REPARSE_POINT (0x400)。 - 回收站体积读不到:Python
os.walk对C:\$Recycle.Bin恒返回 0(权限不足),
需用 PowerShellGet-ChildItem -Force -Recurse。 SHFileOperationW返回值不可信:对 SYSTEM / TrustedInstaller 所有的路径,
即使成功也会返回非 0 并置fAnyOperationsAborted。成败应按「目标是否仍存在」判定。- 缓存清不掉多因进程占用:Explorer(缩略图)、Edge(缓存)在运行时会锁文件,
关闭后重跑才有效。 reg.exe可能被安全策略拦截:注册表读写改用 Pythonwinreg。
参考
分类规则与黑名单明细见 references/cleanup-rules.md。