目录导航
> 文档较长,先按角色跳:普通用户看【懒人三命令】→【常见问题 FAQ】;AI/开发者看【AI 标准执行流程】→【一键执行脚本】;安全细节看【安全规范】+【约束与错误处理】。
- Quick Start(快速上手)
- 懒人三命令(不想记参数,直接抄)
- AI 标准执行流程(效果优先 · 默认路径)
- 功能模块概览
- 各模块使用要点
- 一键执行脚本(full_cleanup.ps1)
- 安全规范
- 约束与错误处理(防幻觉·兜底策略)
- 常见问题 FAQ
- 完成标准
- 系统兼容性
- 五阶段闭环(H项)
- 版本历史
- CHANGELOG
Quick Start(快速上手)
| 操作 | 输入示例 | 预期输出 |
|---|---|---|
| 简单启动 | "磁盘清理" | 全量扫描磁盘空间 + 输出分级清理建议 |
| 安全清理 | "清理缓存文件" | 确认清理范围后执行安全清理 |
| 深度扫描 | "扫描大文件和冗余数据" | 大文件清单 + 冗余文件报告 |
> 扫描 + 确认 + 清理三步流程,清理前需用户确认范围。完整变更日志见 CHANGELOG.md。
懒人三命令(不想记参数,直接抄)
> 全部在管理员 PowerShell中运行(右键 PowerShell → 以管理员身份运行)。路径已写死本机 user 用户,换电脑请改用 scripts/full_cleanup.ps1 相对路径。
# ① 只读预览:看清楚会清哪些、绝对不删任何东西(第一次用先跑这个)
powershell -ExecutionPolicy Bypass -File "C:\Users\user\.workbuddy\skills\zfl-workbuddy-disk-cleanup\scripts\full_cleanup.ps1" -Mode Full -WhatIf -NoSize
# ② 常规全量清理:C盘腾空间,移入隔离区可恢复,删前一次确认
powershell -ExecutionPolicy Bypass -File "C:\Users\user\.workbuddy\skills\zfl-workbuddy-disk-cleanup\scripts\full_cleanup.ps1" -Mode Full
# ③ 应急极速腾空间:C盘快爆时零扫描直删可再生缓存,分钟级释放数 GB(先 -WhatIf 看清单)
powershell -ExecutionPolicy Bypass -File "C:\Users\user\.workbuddy\skills\zfl-workbuddy-disk-cleanup\scripts\full_cleanup.ps1" -Emergency -WhatIf
- ① 是只读预览,绝不删文件,先跑它确认清单
- ② 进隔离区(
D:\.workbuddy-disk-cleanup-quarantine),默认 3 天内可找回 - ③ 应急模式跳过确认直接删可再生缓存,仅用于「C盘将满且接受极速腾空间」;务必先加
-WhatIf
常见问题 FAQ
Q1:QuickKill 提示「未找到 QuickKill 缓存目录列表」或零清理?
A:旧版有 UTF-8 编码读取 bug(v3.11.6 已修复)。当前版本若仍出现,检查 references/top_cache_dirs.json 是否为 UTF-8 无 BOM;先用 -QuickKill -WhatIf 预览确认清单非空再真跑。
Q2:C 盘快满了,选哪个模式最快腾空间?
A:应急用 -Emergency(零扫描直删可再生缓存,分钟级释放数 GB),跑前加 -WhatIf 先看清单;想安全回收且可恢复用 -Mode Full -NoSize(删前确认、进隔离区)。
Q3:微信 / Chrome / 企业微信的用户数据(书签 / 密码 / 聊天记录)会被删吗?
A:不会。QuickKill 默认跳过所有用户数据目录(risk:"user_data"),常规清理只清缓存子目录(User Data\Default\Cache 等)。若要强制清理整目录,需显式加 -IncludeUserData(接受不可恢复丢失),或用 -Interactive 逐项确认 Y/N。
Q4:删错了能找回吗?
A:隔离区型模块(深度清理 / AppData / 腾讯系缓存)删除前先移到隔离区 D:\.workbuddy-disk-cleanup-quarantine,默认保留 3 天(可用 -QuarantineDays 调整)内可恢复。直删型模块(clean_safe / clean_admin / QuickKill)清的是系统 / 应用可再生缓存,删后自动重建,无隔离区。
Q5:清理前后空间怎么对比?
A:报告末尾输出 C / D 盘清理前后「已用 / 可用 / 总计」对比,释放量基于真实快照,不虚标。
Q6:需要管理员权限吗?
A:普通缓存清理无需管理员;模块三(系统清理:Windows 更新缓存 / 旧版 Edge WebView2 / Windows.old 等)需管理员,否则相关项跳过并提示。
Q7:为什么扫描有时候很慢?
A:-Mode Full 默认递归量每个目录体积(50+ 次)。加 -NoSize 跳过体积测量、仅检查存在性,扫描大幅加速,适合「确认要清、不需要精确数字」。
Q8:普通用户怎么用,不想记命令?
A:直接运行 disk_cleanup_menu.ps1 弹极简交互菜单(4 项:分析/常规清理/QuickKill/应急,全走 full_cleanup.ps1,可预览可恢复);或抄上方「懒人三命令」三条预设命令。
踩坑与避坑(实战经验速记)
- 用户数据别删:微信 / Chrome / 企微 / 钉钉 / 夸克 / Edge 的 User Data 整目录删除会连书签、密码、聊天记录一起没。QuickKill 默认跳过;常规清理只清缓存子目录。要清必须显式
-IncludeUserData或-Interactive逐项确认。 - 提速用
-NoSize:-Mode Full默认量体积慢,加-NoSize跳过测量大幅加速(适合确认要清、不需精确数字)。 .ps1必须带 UTF-8 BOM:中文 Windows 上无 BOM 的.ps1会被按 GBK 读、中文解码错位导致解析报ParserError(v3.11.12 踩过)。新增 / 重写脚本先确认 BOM。- 删错可找回:隔离区型模块删前进
D:\.workbuddy-disk-cleanup-quarantine,3 天内可恢复;直删型清的是可再生缓存,无隔离区。 - QuickKill 释放量是「预估」:零扫描模式按内置典型占用估算(
expected_gb),非精确测量;真实数字看-Mode Full -WhatIf。 - 改配置不动代码:清理项集中在
references/top_cache_dirs.json,调整目录 / 风险标记无需改脚本。
AI 标准执行流程(效果优先 · 默认路径)
> 核心结论:本技能清理效果来自 scan.ps1 的全量扫描(系统缓存 / 开发缓存 / 腾讯系缓存 / AI工具缓存 / 其他应用缓存 / 深度清理 / 动态 AppData / 残留 / 微信数据),不是 full_cleanup.py 的窄范围(仅 .workbuddy 缓存 + winapp2 应用缓存)。
> 任何"清理 / 清盘 / 释放空间 / C盘不足"类请求,默认走下方 scan→clean 流水线,不要逐模块拆分、不要逐项确认。
入口选择矩阵(先选模式,再走流程)
> v3.9.0 物理合并:所有路径统一到 full_cleanup.ps1 一个入口。scan.ps1 / clean.ps1 保留独立可用,并作为 full_cleanup.ps1 -Mode Scan / -Mode Clean 的兼容别名。
| 场景 | 入口 | 说明 |
|---|---|---|
| 统一入口 · 常规全量清理(推荐默认) | full_cleanup.ps1 -Mode Full |
等价 scan.ps1 \| clean.ps1,覆盖系统/开发/腾讯/AI/深度/AppData/微信全量,G/Y/R 三级分级,一次确认 |
| C盘将满、极速腾空间 | full_cleanup.ps1 -Emergency 或 -QuickKill |
满盘强制直删 / 零扫描 TOP-N 直删,分钟级释放数 GB |
| AI 工具缓存专项 | full_cleanup.ps1 -UseAiToolRegistry |
数据驱动清理 Cursor/Claude/Ollama 等 30+ AI 工具缓存 |
| 仅扫描(不清理) | full_cleanup.ps1 -Mode Scan |
等价 scan.ps1,只输出分级清单 |
| 仅清理(已扫描) | full_cleanup.ps1 -Mode Clean |
等价 clean.ps1,从 stdin 读取扫描结果执行清理 |
| 仅 WorkBuddy 自身缓存 | full_cleanup.py --modules workbuddy |
窄范围,适合日常维护 |
> 底层已统一——共享 lib_common.ps1(目录大小缓存/可再生判定)+ lib_runtime.ps1(日志/进度/隔离区原语)。v3.9.0 起 scan.ps1/clean.ps1 由 full_cleanup.ps1 -Mode Scan/-Mode Clean 统一调度,单一执行入口,无逻辑分裂。
一步到位流水线(推荐,效果最佳)
> ⚠️ 沙箱限制(2026-07-20 实战):沙箱内 safe-delete 50文件批量阈值拦截任何批量删除、PowerShell工具输出被截断、Python 对主用户 AppData 无写权限。扫描在沙箱、执行在真机——AI 在沙箱内用 Python 扫描大户并生成清单,清理命令交给用户在真机 PowerShell(管理员)执行。
沙箱内(AI):
1. 全量扫描: Python 遍历关键路径,识别 G/Y/R 三级大户
2. 汇总分级: 输出分级清单 + 预估可回收总量 + 真机执行命令
3. 一次性确认:向用户申请【一次】确认(不逐项确认)
真机(用户,管理员 PowerShell):
4. 安全清理: 逐条执行 AI 输出的清理命令
(C盘<2GB 自动降级为直接删除)
5. 深度增强(可选):scan_residual.ps1 → dedup_wechat.ps1 -Execute → migrate.ps1
6. 验证: 对比清理前后 C 盘可用空间(Get-PSDrive C)
安全边界(不可突破,同时满足个人文件安全规范)
- 🔴 红色项(用户数据 / 大文件 / 微信聊天数据 / 迁移候选)只报告,绝不删除
- Junction / 符号链接永不删除(脚本已内置
ReparsePoint跳过) - 默认
-Quarantine隔离区模式 = 移动到隔离区(等价"回收站"),可恢复,非直接物理删除 - 黄色项需【一次性】确认后清理;绿色项在确认范围内自动清理
- 单批次以"目录"为单位移动至隔离区,符合"先隔离可恢复、后清理"原则
> ⚠️ 历史教训(导致清理效果下降的根因):旧版默认调用 full_cleanup.py / full_cleanup.ps1 的"模块二/四",范围仅限 .workbuddy 缓存与 winapp2 应用缓存,漏掉了腾讯系缓存、VisualStudio、IMA、系统临时文件、回收站、深度清理等大头(单次即可释放数 GB)。现已将 scan→clean 流水线定为默认路径。
外部整合来源
- Dumate C盘清理实战指南(2026-07-19):
clean_safe.ps1和clean_admin.ps1改编自 Dumate 整理的实战指南,覆盖千帆更新器、genieworkbuddy 更新器、钉钉/企微/浏览器缓存、WPS 更新包、旧版 Edge WebView2 等清理路径 - 详见
D:\QAXDownload\C盘清理实战指南.md
实战教训(2026-07-19,C盘0.81GB→7.91GB)
- 沙箱中
shutil.disk_usage('/')返回的是 D 盘数据(Git Bash 将/挂载到 D 盘),必须用 Win32 APIGetDiskFreeSpaceExW查真实盘符 - PS1 文件必须存 UTF-8 with BOM,否则 PowerShell 5.1 当 GBK 解析,中文字符变乱码导致语法错误。本次清理中 18 个
.ps1文件已批量加 BOM - PS 脚本
full_cleanup.ps1在沙箱内跑不了(权限不足 + 文件遍历超时),但 Python 直接删目录可以。建议优先用 Python 直接删已知路径,而不是等 PS 脚本扫描 - Dumate 等第三方工具扫出来的缓存目录可以直接用 Python 删,不用等技能脚本。例如:
C:/Windows/SoftwareDistribution/Download、C:/Users/user/AppData/Local/Quark/User Data/QianwenInstaller等 binaries/目录(Python/Node 运行时)占 2-3GB,删后 WorkBuddy 自动重建,是 C 盘告急时最有效的释放手段- C 盘
.workbuddy迁移到 D 盘需 robocopy/xcopy 复制 10 万+文件,耗时 5 分钟以上,文件多时易超时。替代方案:删binaries/目录后直接 Junction 到 D 盘 - 回收站和 Windows/Temp 需管理员权限,沙箱内无法清理,需用户手动在真机执行
cleanmgr或用 Dumate
实战教训(2026-07-20,C盘667MB→~14GB)
- 沙箱是清理的死胡同。
safe-delete50文件批量阈值导致任何__pycache__/批量清理被逐次拦截。PowerShell工具输出被截断(仅返回exe路径)。Pythonshutil.rmtree对主用户AppData目录无权限(PermissionError被ignore_errors=True静默吞掉,目录实际未删除)。结论:磁盘清理不适合在沙箱内执行,必须引导用户在真机跑。 - "扫描在沙箱,执行在真机"分工模式。 扫描阶段沙箱够用——Python遍历文件系统、识别大户、生成清理清单。但删除阶段必须移交真机。AI执行流程已更新为:沙箱扫描→汇总报告→输出真机命令→用户真机执行→验证。
- 休眠文件是隐藏大户。
hiberfil.sys7.9GB 占 C 盘 7.8%,关闭后立竿见影(powercfg -h off)。扫描时默认检测并单独高亮,列为 🟡 需确认项。 - 用户临时文件(
file_extract_*)长期堆积。 4798个目录、3.8GB。这些是WorkBuddy/系统解压文件时产生的,Get-ChildItem "$env:LOCALAPPDATA\Temp\file_extract_*" -Directory | Remove-Item -Recurse -Force一键清理。 - Windows更新缓存需先停服务。
C:\Windows\SoftwareDistribution\Download\*被 wuauserv 占用时删除报"访问被拒绝"。正确顺序:Stop-Service wuauserv -Force→Remove-Item→Start-Service wuauserv。
功能模块概览
| 模块 | 参考工具 | 功能说明 |
|---|---|---|
| 模块一 | SpaceSniffer | 磁盘占用分析,可视化树图,找出空间占用最大的目录和文件 |
| 模块二 | — | WorkBuddy 专属目录清理(日志/__pycache__/traces/缓存等) |
| 模块三 | CCleaner / WindowsCleaner | Windows 系统级临时文件、更新缓存、回收站、Windows.old 清理(可选 DISM 组件存储 + 内存转储清理) |
| 模块四 | AppDataCleaner | 用户 AppData 目录下应用程序缓存动态扫描与清理(含国产软件、浏览器、AI工具) |
| 模块五 | Dumate 实战指南 | 安全缓存清理(普通用户):应用更新器残留、钉钉/企微/浏览器缓存、WPS更新包、崩溃转储、缩略图缓存、回收站、用户临时文件 |
| 模块六 | Dumate 实战指南 | 管理员级清理:Windows更新缓存(takeown+icacls)、旧版Edge WebView2(停进程+保留最新版)、旧版Edge浏览器 |
| 模块七 | — | 审核任务自动清理:审核完成后自动清理 OCR 临时文件、中间 JSON、临时文本 |
| 模块八 | — | 残留目录检测:检测卸载程序后残留的目录和文件(30+ 已知残留项,动态检测) |
| 模块九 | — | 微信/企业微信去重:检测并删除微信和企业微信之间的重复文件 |
| 模块十 | — | Junction 数据迁移:将 C 盘大目录迁移到其他盘,通过 Junction 链接保持路径兼容 |
触发方式速查(首选 scan→clean 流水线,一次扫描覆盖多模块)
- 「分析磁盘占用」「哪些文件占空间」→ scan.ps1(模块一等价能力,含可视化树图)
- 「清理…」「清盘」「释放空间」「C盘不足」「深度清理」「全面清理」→ 默认 scan.ps1 → 一次性确认 → clean.ps1 -Quarantine(覆盖模块二/三/四/五/六/八/九 的可清理项)
- 「仅清理 WorkBuddy」「清理 WorkBuddy 缓存」→ 模块二(
full_cleanup.py --modules workbuddy) - 「安全清理」「应用缓存」→ clean_safe.ps1(模块五,普通用户权限,覆盖千帆/钉钉/企微/浏览器缓存等)
- 「管理员清理」「Windows更新缓存」「旧版Edge WebView2」→ clean_admin.ps1(模块六,需管理员权限,含 takeown/icacls)
- 「检测残留」「清理卸载残留」→ scan_residual.ps1(模块八)
- 「微信去重」「清理微信重复文件」→ dedup_wechat.ps1 -Execute(模块九,先隔离后删)
- 「迁移数据」「移动大目录到D盘」→ migrate.ps1(模块十)
- 黄色项统一在一次确认中处理,不逐项打断;红色项仅报告
各模块使用要点
模块一:磁盘占用分析
扫描指定磁盘或目录,按占用大小排序,找出空间占用最大的目录和文件,生成可视化 HTML 树图。
python "./scripts/disk_treemap.py" --path "$env:USERPROFILE" --output treemap.html --max-depth 4 --min-size-mb 10
- 输出
treemap.html(D3.js 交互树图),点击矩形下钻、悬停看路径大小 - 扫描
C:\Users等大型目录设--max-depth 3大幅缩短耗时(30-120 秒) - 纯只读操作,不修改任何文件;管理员权限有助于访问系统目录
模块二:WorkBuddy 专属清理
实测(2026-07-11,~3 个月使用期 ~/.workbuddy 约 2.8 GB,可回收约 525 MB)。
| 级别 | 项目 | 典型大小 | 说明 |
|---|---|---|---|
| 🟢 绿色(无需确认) | Python 字节码缓存 ~/.workbuddy/**/__pycache__/ |
~222 MB | 最大单项,删后自动重生 |
| 🟢 | 运行日志 .workbuddy/logs/ |
~220 MB | 保留当天删历史 |
| 🟢 | 调试追踪 .workbuddy/traces/ |
~55 MB | 删后无影响 |
| 🟢 | Node 安装临时 / 插件下载缓存 / binaries 下载残留 | 10-90 MB × N | 安装失败残留,可堆积 80+ 个 |
| 🟡 黄色(需确认) | 会话历史 sessions/、计划草稿 plans/、已归档技能 archived-skills/ |
KB 级 | 丢失用户历史但不影响运行 |
| 🟡 | Python 运行时 / Node 有效安装 / 团队插件 | GB / 百 MB 级 | 删后环境不可用,勿动 |
| 🔴 红色 | skills/、memory/、当前工作区 |
— | 不可动 |
> ⚠️ __pycache__ 是此前漏列的最大可清理项(222 MB),务必纳入。 旧文档的 .workbuddy/cache/ 与 WorkBuddy/{日期}/ 在当前结构已不存在,扫描时不存在直接跳过。
隔离区策略分级:绿色项约 500 MB 几乎全是可再生/非必要数据,命中则跳过隔离区直接删除(-SkipQuarantineForRegenerable,v3.2.2),避免跨盘移动延迟与额外 I/O;仅黄色项保留隔离区。
模块三:系统清理
> 安全警告:涉及系统目录,高风险。执行前必须列出待删路径、输出风险说明、要求用户显式确认(输入「确认清理系统垃圾」),建议先建还原点。需管理员权限。
| 清理项 | 路径 | 典型大小 | 级别 |
|---|---|---|---|
| Windows 临时文件 | C:\Windows\Temp\ |
100 MB - 2 GB | 🟢 |
| 用户临时文件 | %TEMP% |
50 MB - 1 GB | 🟢 |
| 缩略图缓存 | %LOCALAPPDATA%\Microsoft\Windows\Explorer\thumbcache_*.db |
10-500 MB | 🟢 |
| DirectX 着色器缓存 | %LOCALAPPDATA%\D3DSCache\ |
50-500 MB | 🟢 |
| Windows 错误报告 | C:\ProgramData\Microsoft\Windows\WER\ |
10-500 MB | 🟢 |
| 内存转储文件 | C:\Windows\memory.dmp / Minidump\*.dmp |
100 MB - 4 GB | 🟡 |
| Windows.old | C:\Windows.old\ |
10-30 GB | 🟡(二次确认) |
| 回收站 | C:\$Recycle.Bin\ |
可变 | 🟡 |
| Windows 更新缓存 | C:\Windows\SoftwareDistribution\Download\ |
100 MB - 5 GB | 🟡 |
- 🟡 需管理员、官方安全操作(标黄非红):
WinSxS(DISM /Online /Cleanup-Image /StartComponentCleanup /ResetBase)——微软官方组件存储清理,安全可释放数 GB;休眠文件hiberfil.sys、页面文件pagefile.sys仍为 🔴 不可动 Windows.old删除后无法回退系统版本,必须二次确认;DISM清理需管理员且耗时 1-3 分钟
模块四:AppData 清理
动态扫描 AppData\Local / AppData\Roaming 各子目录大小(替换硬编码列表),自动识别占用最大的应用缓存。常见大户:Chrome/Edge/Firefox 缓存(100 MB-2 GB)、npm/pip 缓存、Teams(500 MB-3 GB)、Visual Studio(500 MB-5 GB)、Docker(1-10 GB)。
- 隔离区机制:重要文件删除前先移至隔离区,超过保留期(默认 3 天)后清除
- 🔴 不可动:加密钱包、密码管理器(1Password/Bitwarden)、SSH 密钥
.ssh、GPG 密钥gnupg
模块六:残留目录检测(scan_residual.ps1)
检测程序卸载后残留目录(30+ 已知项 + 动态对比已安装程序标记 >50MB 无匹配目录)。输出 FOUND|名称|路径|大小MB|描述(可安全删)与 SUSPECT|...(需人工确认)。
模块七:微信/企业微信去重(dedup_wechat.ps1)
检测并删除微信(WeChat)与企业微信(WXWork)之间重复文件。冲突策略:保留企业微信副本,删除微信副本(企业微信文件通常更重要)。先 -Execute 前务必 -WhatIf 预览;删除不可恢复,需用户显式确认。
模块八:Junction 数据迁移(migrate.ps1)
将 C 盘大目录迁移到其他盘,通过 Junction 链接保持路径兼容。流程:验证源非 Junction → 检查目标盘空间 > 源 90% → robocopy /E /MOVE /COPY:DAT 迁移 → 锁定文件 Rename+Junction 绕过 → mklink /J 创建链接 → 验证生效。-Execute 省略则仅预览。
一键执行脚本(full_cleanup.ps1)
> 统一执行入口(v3.9.0 起覆盖全部模块)。沙箱外以管理员身份运行 PowerShell。
参数说明
| 参数 | 说明 |
|---|---|
-Mode |
v3.9.0:统一入口模式。Scan=仅扫描、Clean=从 stdin 读扫描结果清理、Full=scan|clean 流水线(推荐默认) |
-SkipAnalysis |
跳过模块一(磁盘分析) |
-SkipWorkBuddy |
跳过模块二(WorkBuddy 清理) |
-SkipSystem |
跳过模块三(系统清理) |
-SkipAppData |
跳过模块四(AppData 清理) |
-UseWinapp2 |
模块四改用 winapp2 规则库驱动清理(覆盖 ~1000 应用,替代硬编码列表) |
-ScanUsageTraces |
扫描使用痕迹 |
-ScanDownloads |
扫描下载目录 |
-AutoConfirm |
自动确认所有清理(慎用) |
-Batch |
批量模式,一次性确认全部模块 |
-QuarantineDays |
隔离区保留期天数,默认 3 |
-SkipQuarantineForRegenerable |
v3.2.2:可再生(绿色)项跳过隔离区直接删除,加速回收、避免跨盘 I/O |
-Emergency |
v3.4.0:应急单命令(别名 -FreeUpSpace/-QuickFree)。跳过分析/逐项确认、可再生项直删、满盘强制直删,输出前后 C 盘对比 |
-MinFreeSpaceGB |
v3.4.0:满盘降级缓冲阈值(GB),默认 8。隔离目标盘剩余 < 待移动项大小+此值时强制直删 |
-UseAiToolRegistry |
v3.4.0:启用 references/ai_tool_cache.json 数据驱动清理各类 AI 工具缓存(Cursor/Claude/Ollama 等 30+),默认走隔离区 |
-WhatIf |
v3.4.1:预览模式,仅报告将清理/隔离的项,不执行任何真实删除或移动 |
-QuickKill |
v3.5.0:快速直删,零扫描删内置 TOP-30 缓存目录(5 秒释放 5-7GB);-WhatIf 预览后链式确认 |
-NoSize |
v3.11.5:跳过体积测量(仅存在性检查+按路径删),大幅加速 -Mode Full 扫描(省去 scan 端 50+ 次递归量体积 + clean 端 WhatIf 二次量体积),不显示精确 MB 预估。适合「确认要清、不需要精确数字」的场景 |
常用命令
# 推荐默认:全量扫描 + 一次确认 + 隔离区清理
powershell -ExecutionPolicy Bypass -File scripts/full_cleanup.ps1 -Mode Full
# 应急腾空间:C盘将满时一键直删(跳过分析/确认,满盘强制直删,输出前后 C 盘对比)
powershell -ExecutionPolicy Bypass -File scripts/full_cleanup.ps1 -Emergency
# 应急预览:零写操作,看清楚会清哪些、满盘降级是否触发
powershell -ExecutionPolicy Bypass -File scripts/full_cleanup.ps1 -Emergency -WhatIf
# 最快:零扫描直接删 TOP-30 缓存目录(5 秒内释放 5-7GB)
powershell -ExecutionPolicy Bypass -File scripts/full_cleanup.ps1 -QuickKill
# 清理前创建系统还原点(需管理员,便于回滚)——与 -Mode Full 或常规清理搭配
powershell -ExecutionPolicy Bypass -File scripts/full_cleanup.ps1 -Mode Full -CreateRestorePoint
# 极速全量(跳过体积测量,扫描更快,不显示精确 MB)——与 -WhatIf 或 -CreateRestorePoint 搭配
powershell -ExecutionPolicy Bypass -File scripts/full_cleanup.ps1 -Mode Full -NoSize
# 仅清理 AI 工具缓存(数据驱动,走隔离区可恢复)
powershell -ExecutionPolicy Bypass -File scripts/full_cleanup.ps1 -UseAiToolRegistry
启动方式
| 文件 | 用法 | 推荐度 |
|---|---|---|
run_cleanup.ps1 |
powershell -ExecutionPolicy Bypass -File run_cleanup.ps1 → 弹 UAC 提权后管理员执行 full_cleanup.ps1 -Batch |
⭐⭐⭐ |
disk_cleanup_menu.ps1 |
powershell -ExecutionPolicy Bypass -File disk_cleanup_menu.ps1 → 极简交互菜单(4 项:分析/常规清理/QuickKill/应急,全走 full_cleanup.ps1,可预览可恢复) |
⭐⭐⭐ |
create_shortcut.ps1 |
powershell -File create_shortcut.ps1 → 在技能 scripts 目录生成自提权 .lnk 快捷方式,双击以管理员运行 full_cleanup.ps1 -Emergency(应急直删);加 -Desktop 额外在桌面生成 |
⭐⭐⭐⭐ |
full_cleanup.ps1 |
手动在管理员 PowerShell 中运行 | ⭐ |
> .ps1 无法直接双击运行(Windows 默认用记事本打开),请通过 PowerShell 命令调用并加 -ExecutionPolicy Bypass。run_cleanup.ps1 内部用 Start-Process -Verb RunAs 弹 UAC,只需一条命令即可提权。
> 想要双击即用:先运行 create_shortcut.ps1 生成 .lnk 快捷方式(已设 0x20 标志,双击自动 UAC 提权,并以 -Emergency 应急直删模式运行);加 -Desktop 把 .lnk 额外放到桌面。注意 .lnk 内烘焙的 full_cleanup.ps1 绝对路径换机器会失效,目标机需重跑 create_shortcut.ps1 重建。「拒绝访问」→ 确认 UAC 窗口已点「是」。
Python 辅助脚本:full_cleanup.py
沙箱内执行不需管理员权限的操作(模块二、模块四部分)。
"~/.workbuddy/binaries/python/versions/3.13.12/python.exe" "~/.workbuddy/skills/zfl-workbuddy-disk-cleanup/scripts/full_cleanup.py" --modules workbuddy,appdata
"~/.workbuddy/binaries/python/versions/3.13.12/python.exe" ".../scripts/full_cleanup.py" --list-only # 仅列出不执行
"~/.workbuddy/binaries/python/versions/3.13.12/python.exe" ".../scripts/full_cleanup.py" --modules workbuddy,appdata --auto-confirm
| 参数 | 说明 |
|---|---|
--modules |
逗号分隔:workbuddy,appdata,analysis |
--auto-confirm |
自动确认清理 |
--list-only |
仅列出可清理项,不执行 |
安全规范
通用规则
- 先报告,后执行:任何删除前必须先输出完整预览报告
- 分级确认:🟢 绿色项可直接执行;🟡 黄色项需确认;🔴 红色项不可清理
- 系统目录操作必须显式确认:涉及
C:\Windows\、C:\Program Files\需用户输入「确认清理系统」才执行 - 隔离区机制:重要文件删除前优先移至隔离区,超保留期(默认 3 天)后清除
- 不支持的操作:绝不执行
Remove-Item -Recurse -Force C:\等危险命令
模块特定规则
| 模块 | 特殊规则 |
|---|---|
| 模块一(分析) | 纯只读,不修改任何文件,可安全执行 |
| 模块二(WorkBuddy) | 遵循分级规则,🟢 绿色项无需逐项确认 |
| 模块三(系统清理) | 先检测管理员权限;预览报告 + 显式确认;Windows.old 删除前二次确认 |
| 模块四(AppData) | 动态扫描替代硬编码;重要文件先移至隔离区;标注常见大户 |
约束与错误处理(防幻觉·兜底策略)
安全边界
> 统一安全模型(v3.11.1 明确):本技能存在两类删除语义,不得混为一谈:
> - 直删型模块(可再生缓存,删后自动重建、无后果):clean_safe.ps1(模块五)、clean_admin.ps1(模块六)、-QuickKill。这些设计上直接物理删除,不走隔离区——因为它们清理的全是系统/应用可再生缓存(更新器残留、浏览器缓存、缩略图、Windows 更新缓存等),直删是预期且安全的。
> - 隔离区型模块(含用户数据,可恢复优先):深度清理 / AppData / 动态 AppData 扫描 / 腾讯系缓存。这些必须走隔离区(或回收站)后再清理,保留期内可恢复。
> 红色项(用户数据 / 大文件 / 微信聊天数据)无论哪种模块都只报告、绝不删除。
- 个人文件安全红线:不得递归删除桌面、下载、文档、用户主目录;不得使用
rm -rf、del /S /Q、shutil.rmtree()等危险命令 - 隔离区型模块的删除操作必须走回收站/隔离区,不得直接物理删除;直删型模块仅限可再生缓存路径,且需
-AutoConfirm/-Emergency显式授权 - 红色级操作(系统清理/AppData 清理)必须逐项确认,即使
-AutoConfirm也不跳过 - 隔离区文件保留至保留期(默认 3 天,可由
-QuarantineDays配置)后才允许清理,保留期内可恢复
错误处理
- 路径访问被拒:跳过该路径并记录警告,不中断整体流程
- 隔离区空间不足:报错并提示手动清理隔离区,不继续删除
- 回收站 API 调用失败:降级为"移动到隔离区",不直接删除
- 磁盘空间快照失败:跳过空间对比,输出警告但不阻塞清理
- 脚本异常中断:已隔离文件保留,输出中断位置和已处理项清单
防幻觉规则
- 不得编造磁盘空间数据,必须基于
Get-Volume/Get-PSDrive实际返回 - 不得编造文件大小或数量,必须基于实际扫描结果
- 清理报告中的释放空间必须基于清理前后快照对比,不得虚标
- 不得夸大清理效果(如"释放 100GB"),必须如实输出实际数字
乱码文件名处理铁律(marker 法 · 2026-07-12 实战)
> 来源:全生态 198 个 mojibake 乱码副本 + 3 个唯一文件的治理实战,由本技能清理动作产生、zfl-skill-factory 审查。本技能执行删除/隔离时直接面对乱码名,必须遵守以下铁律。
判定文件名是否为 GBK mojibake(乱码),只能用 marker 字符法:
| 维度 | 正确做法 | 错误做法(曾发生) |
|---|---|---|
| 检测 | 命中 surrogate(U+D800–DFFF)/ 替换符(U+FFFD)/ Latin-1 补充区(U+0080–U+00FF,如 µ Õ þ)/ 制表符区字节才判乱码 | 禁用「字符码点 > 0x2122(或 > 0x4E00)」规则——会把所有正常中文名(CJK > U+4E00)误判为乱码,整目录正常中文文件全被标乱码,误删风险 |
| 删除 | 含 surrogate 的文件名普通删除因「非法 UTF-8 参数」被拒 → 用 8.3 短路径名(GetShortPathNameW 拿 XXXXXX~N.EXT)或 Win32 DeleteFileW(UTF-16 下 surrogate 合法)绕过 |
直接 os.remove(路径) / del 对 surrogate 名报错拒删 |
| 删前校验 | 「疑似重复」删前必须 MD5 校验内容相等,不凭文件名不同就当重复删;无干净副本、MD5 不匹配的唯一文件留着 | 凭「两个不同名」就当重复删,丢失唯一文件 |
| 重命名 | 三重编码损坏(GBK→UTF-8→UTF-8)部分不可逆,乱码名勿臆测重命名——先按内容/MD5 匹配干净同名副本再决定(匹配到则删乱码副本、留干净名;无匹配则孤立保留或从内容重建) | 把 GBK 乱码「猜」成 Latin-1 名字,零价值且更糟 |
高级功能(命令行)
以下功能不在交互菜单中,按需手动运行。均建议先预览、确认后再执行。
微信 / 企业微信去重
检测重复的微信(含企业微信)文件,默认仅列出重复项、不删除:
powershell -ExecutionPolicy Bypass -File scripts/dedup_wechat.ps1
确认无误后加 -Execute 删除重复项(保留企业微信副本):
powershell -ExecutionPolicy Bypass -File scripts/dedup_wechat.ps1 -Execute
大文件迁移(Junction 搬家腾 C 盘)
将大目录迁移到其它盘(如 D:),原路径以 Junction 软链保留,程序无感。默认仅预览迁移计划:
powershell -ExecutionPolicy Bypass -File scripts/migrate.ps1 -Source "C:\Users\user\AppData\Local\Packages" -TargetDrive D
确认后加 -Execute 执行迁移(robocopy /MOVE + 建 Junction):
powershell -ExecutionPolicy Bypass -File scripts/migrate.ps1 -Source "C:\Users\user\AppData\Local\Packages" -TargetDrive D -Execute
> 迁移为不可逆结构改动(目录变 Junction),执行前确认目标盘空间充足、且源目录无程序正在占用。
完成标准
- 磁盘占用分析完成:成功扫描并生成可视化树图、Top 目录/文件排行清晰可读
- WorkBuddy 专属清理完成:按 🟢/🟡/🔴 分级执行,红色项不动,输出前后对比
- 系统清理安全执行:生成预览报告、检测管理员权限、列出待清理项,经显式确认后执行,高风险项二次确认
- AppData 清理安全执行:动态扫描生成 Top 20 预览,重要文件优先进隔离区,标注大户和不可动项
- 残留目录检测完成:输出已确认/疑似残留清单,确认后清理
- 微信/企业微信去重完成:检测重复文件清单,确认后删除,保留企业微信副本
- Junction 数据迁移完成:源目录已迁移,Junction 链接已创建并验证生效
- 汇总报告产出:汇总所有模块结果,计算总释放空间,不误删关键数据(skills/memory/当前工作区、SSH 密钥/加密钱包等保持完整)
系统兼容性
| 操作系统 | 支持 | PowerShell | 管理员权限 |
|---|---|---|---|
| Windows 10(1809+)/ 11 | ✅ | 5.1 推荐;7.x 部分(COM 对象回退慢速) | 模块三需 ✅ |
| Windows Server 2016+ | ✅ | 5.1 | 模块三需 ✅ |
| Windows 7/8/8.1、macOS、Linux | ❌ | 版本过低/无对应目录结构 | — |
- 分享到其他电脑:脚本用
$env:USERPROFILE等环境变量自适应;隔离区路径动态检测(优先非 C 盘);目标机需 PS 5.1+,可能需Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
五阶段闭环(H项)
| 阶段 | 执行内容 | 关键控制点 |
|---|---|---|
| 准备 | 扫描磁盘使用情况、确认清理目标 | 磁盘空间分析准确 |
| 执行 | 分模块清理 | 用户显式确认、隔离区备份 |
| 验收 | 验证清理结果、计算释放空间 | 空间释放量准确、文件已备份 |
| 归档 | 清理报告保存、记录归档 | 路径规范、可追溯 |
| 复盘 | 统计清理量、分析大户应用、更新清理规则 | 统计报告、规则迭代 |
版本历史
完整变更日志见 CHANGELOG.md。最近版本摘要:
- v3.9.0(2026-07-12):物理流水线合并,统一入口
-Mode Scan/Clean/Full;版本号四源同步 - v3.8.0(2026-07-12):主脚本拆分为编排层 +
lib_runtime.ps1;新增 AppX 缓存清理;满盘降级判定统一 - v3.7.0(2026-07-12):抽取
lib_common.ps1共享库;新增浏览器缓存扫描;清理前释放量汇总卡片 - v3.6.0(2026-07-12):
Get-DirSize缓存、移除Invoke-Expression、-Emergency别名 - v3.5.0(2026-07-11):新增
-QuickKill快速直删模式 - v3.4.0(2026-07-11):新增
-Emergency应急单命令 + AI 工具缓存注册表
- 适配国产软件运行环境
国内环境说明:
- 离线运行(脚本/配置/同步操作均不依赖外部网络)
CHANGELOG
| 版本 | 日期 | 变更类型 | 说明 |
|---|---|---|---|
| v3.11.17 | 2026-07-30 | 修复 | 移除 create_shortcut 向技能 scripts/ 写 .lnk(SkillHub 白名单拒 .lnk 类型导致发布 400);改为仅生成本机桌面 .lnk,机制脚本随技能走、换机重跑即重建 |
| v3.11.16 | 2026-07-30 | 功能/文档 | create_shortcut.ps1 生成的 .lnk 现默认带 -Emergency(应急直删、不弹确认);新增 -Desktop 开关额外生成桌面快捷方式;SKILL.md 启动方式表与双击说明同步 |
| v3.11.15 | 2026-07-20 | 文档/流程 | 沉淀沙箱清理实战教训(阈值拦截/PS截断/权限不足→扫描沙箱执行真机分工);AI流程改沙箱扫描→真机清理;新增5条实战教训 |
| v3.11.13 | 2026-07-19 | 文档/UX | 回应v3.11.12评测:FAQ上移至「懒人三命令」后;新增「踩坑与避坑」实战经验(数据保护/NoSize提速/BOM/隔离区/预估);QuickKill预览加「预估」 |
| v3.11.12 | 2026-07-19 | 缺陷修复(编码) | 修复 disk_cleanup_menu.ps1 中文Win下 -File 报 ParserError(line 73):UTF-8无BOM被GBK读致解码错位/引号错乱;补BOM修复,功能不变 |
> 完整历史见外部 CHANGELOG.md