C盘空间清理
核心原则
磁盘清理是破坏性操作。先审计,后清理。只读扫描和审计阶段不删除任何文件;清理阶段仅删除用户逐项明确批准的分类,且必须使用 -Mode Clean -ConfirmClean 双重确认(Windows PowerShell 引擎)或 quarantine + receipt 机制(Python 引擎)。绝不把审计热点自动转化为删除授权。
本 skill 由两个互补引擎组成:
| 引擎 | 语言 | 平台 | 职责 |
|---|---|---|---|
| PowerShell 清理引擎 | PowerShell | Windows | 白名单分类审计与清理、全盘清单、项目构件清单、DISM |
| Python 分析引擎 | Python | Windows + macOS | 只读扫描、绿/黄/红计划、AI 工具数据识别、隔离与恢复 |
Windows 优先用 PowerShell 引擎做实际清理;AI 工具数据识别与跨平台分析用 Python 引擎;macOS 只能用 Python 引擎(quarantine 隔离,无删除能力)。
启动时读取
- 读取 references/safety.md 与 references/safety-policy.md,冲突时以更严格的安全硬门为准。
- Windows 清理前读取 references/platform-guidance.md 的 Windows 部分;macOS 读取其 macOS 部分。
- 包管理器缓存维护阅读 references/package-caches.md。
- 项目目录内处置阅读 references/project-artifacts.md。
- 解释字段或排障时读取 references/plan-schema.md。
- 识别或处置 AI 工具数据时读取 references/ai-tool-adapters.md。
硬门(两引擎共同遵守)
- 只读文件系统元数据;不读正文,不跟随 symlink、junction 或 reparse point。
- No-Go Zones:绝不递归删除 Desktop、Downloads、Documents、Home 或系统目录(
C:\、C:\Windows除Temp内容外、C:\Program Files、C:\ProgramData除 NVIDIA 下载白名单外)。macOS 不调用 Finder delete、Trash 或 SHFileOperation。 - Scan = Read-Only:审计阶段仅生成报告,不移动/重命名/删除任何文件。即使用户说"清理",首轮也视为只读扫描。
- Warn + List + Confirm:清理前逐项列出受影响路径、文件数、大小与风险,要求显式确认。
- 不提供永久删除、批量处理、权限提升或清空操作;拒绝给绕过命令。
- Windows 清理仅限白名单路径,逐文件
Test-UnderPath校验,-LiteralPath无通配符;回收站用Clear-RecycleBin而非永久删除。 - Python 引擎隔离只能
os.replace到同设备、当前用户专用且目标不存在的 quarantine;restore 遇到原路径已存在必须拒绝覆盖。 - 执行前两次复核 lexical 祖先链、realpath、safe-root identity、目标 identity 与内容指纹;任一变化立即停止。
- AI 工具路径必须由适配器在计划和执行时分别重验;命中红色保护目录时,任何手改 tier/action 都无效。
- 官方命令调度器只接受固定 operation ID、参数数组和
shell=False;失败、缺失或版本不兼容时停止,绝不回退为目录删除。
工作流
1. 确认环境并记录磁盘状态
确认目标盘(Windows 通常 C:),记录总容量、已用、可用空间和可用百分比。
2. Windows 只读全盘清单(推荐首选)
对于"满了""全面扫描""什么占了空间"或低空间不明确的请求,先运行只读清单:
& "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\storage_inventory.ps1" -Drive C: -ReportPath "$HOME\c-drive-inventory.json"
该脚本只读扫描文件系统元数据(路径、大小、时间戳、属性),不打开文件正文,不跟随 symlink/junction/reparse point,生成目录热点、大文件、不可访问路径和跳过 reparse point 的 JSON 报告。
3. Windows 可回收空间审计
# 标准审计(临时文件)
& "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\c_drive_cleaner.ps1" -Mode Audit -MinAgeDays 7 -ReportPath "$HOME\c-drive-audit.json"
# 深度审计(含浏览器缓存、回收站、Windows Update 缓存等)
& "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\c_drive_cleaner.ps1" -Mode Audit -Preset Deep -MinAgeDays 7 -ReportPath "$HOME\c-drive-audit-deep.json"
# 审计开发者和安装器缓存(不删除)
& "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\c_drive_cleaner.ps1" -Mode Audit -IncludeNpmCache -IncludeUvCache -IncludeNvidiaDownloadCache -IncludeInstallerTemp -MinAgeDays 7 -ReportPath "$HOME\c-drive-audit-extra.json"
4. 分类呈现审计结果
将发现分为四类:
- 高置信度可重建缓存:临时文件、pip/npm/uv 缓存、着色器缓存等,删除后可重新下载/重建。
- 可选数据有恢复成本:NVIDIA 下载缓存、安装器临时文件等,删除后需重新下载。
- 个人/项目文件需人工审查:大型文件提示,仅建议审查,不自动删除。
- 受保护系统区域:WinSxS、系统文件等,必须使用 Windows 官方工具(DISM)处理。
报告不可访问路径、reparse point 注意事项、硬链接说明、锁定文件和管理员权限要求。不将 WinSxS 逻辑大小作为可回收空间。AI 工具数据检测到不等于可删除——会话、配置、数据库、模型、备份和凭据默认红/黄灯。
5. 逐项请求批准
列出每个分类的名称、路径、可回收大小和风险说明,逐项请求用户批准。例如:
> 我发现用户临时文件和 Windows 临时文件中约 3.2 GB 的文件已超过 7 天。是否仅清理这些临时文件?
对于深度清理,必须逐项命名每个分类:
> 我发现约 6.8 GB 的临时文件、浏览器缓存、Windows Update 下载缓存、回收站、着色器缓存和诊断转储文件(均超过 7 天)。是否清理这些分类?
6. 执行已批准的清理(Windows)
仅在用户明确批准后,使用与审计时相同的参数加上 -ConfirmClean 执行清理:
# 已批准的临时文件清理
& "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\c_drive_cleaner.ps1" -Mode Clean -ConfirmClean -MinAgeDays 7 -ReportPath "$HOME\c-drive-clean-after.json"
# 已批准的含浏览器缓存清理
& "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\c_drive_cleaner.ps1" -Mode Clean -ConfirmClean -MinAgeDays 7 -IncludeBrowserCaches -ReportPath "$HOME\c-drive-clean-after.json"
# 最大清理(用户已批准审计分类并同意 DISM 组件清理)
& "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\c_drive_cleaner.ps1" -Mode Clean -Preset Maximum -ConfirmClean -MinAgeDays 7 -ReportPath "$HOME\c-drive-clean-maximum-after.json"
清理时尽量关闭相关应用;跳过锁定文件而非终止进程。
6a. safe-delete-bulk 防护钩子(WorkBuddy 桌面版)
PowerShell 中 Remove-Item 批量删除超过 50 个文件(CODEBUDDY_SAFE_DELETE_BULK_THRESHOLD)时会被系统钩子拦截,报 [safe-delete][SAFE_DELETE_BULK_CONFIRM_REQUIRED]。这是正常防护,不要尝试绕过。正确流程:
- 先在对话中向用户展示目标路径、文件数、总大小,取得用户明确确认;
- 确认后,在同一个 PowerShell 调用内先执行批准命令再删除:
# 用户已在对话中明确确认后执行:
& $env:CODEBUDDY_NODE_BIN $env:CODEBUDDY_SAFE_DELETE_BULK_GUARD approve --scope turn
if ($LASTEXITCODE -ne 0) { exit 1 }
Remove-Item -Path "<已确认的目标>" -Recurse -Force
注意:批准按当前 toolCallId 生效,必须与 Remove-Item 在同一调用内,分开执行无效。若用户拒绝确认,绝不执行批准命令。
6b. 大体积应用数据迁移(替代删除)
对于 Thunderbird 邮件、WSL 虚拟磁盘等"大体积+不可重建"数据,优先建议迁移到其他盘而非删除。以 Thunderbird 为例(2026-08 实测):
- 确认目标盘剩余空间 > 数据体积的 1.2 倍,且应用未运行;
robocopy "$env:APPDATA\Thunderbird" "D:\Thunderbird" /E /COPY:DAT /R:1 /W:1 /XJ;- 核验两侧文件数与总字节数完全一致;
- 修改
%APPDATA%\Thunderbird\profiles.ini:各 Profile 段改IsRelative=0、Path=D:\Thunderbird\Profiles\<名称>(先备份原文件); - 经用户确认后删除 C 盘旧
Profiles目录(用 6a 的批准流程)。
特别提醒:POP3 账户的邮件是唯一本地副本,删除前必须核查 prefs.js 中 mail.server.serverN.type,POP3 数据删除即永久丢失。
7. AI 工具数据识别与官方操作(Python 引擎)
先查看本机平台可用目录:
python "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\dispatch_official_cleanup.py" --catalog
运行只读/原生 dry-run 或显示应用内指引:
python "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\dispatch_official_cleanup.py" --preview --operation <operation-id> [--target <path>]
仅当 huggingface.cache-prune 的官方 dry-run 成功并生成 receipt 后,才允许精确确认执行。Claude Code purge、Ollama 模型删除、应用 reset/历史删除均保持人工或 UI-only,不由调度器执行。官方命令失败时不得改用目录删除。
8. 跨平台只读分析(Python 引擎,macOS 唯一路径)
一键分析(内存中完成扫描、计划和报告,成功后一次性落盘):
python "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\analyze_storage.py" --output-dir <analysis-output>
产出 scan.json、plan.json、report.html 与 manifest.json;目标目录已存在则拒绝覆盖。默认报告是分享安全视图。
高级拆分流程(需要时):
python "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\scan_storage.py" --output <scan.json> --max-seconds 300 --max-candidates 2000
python "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\build_plan.py" --scan <scan.json> --output <plan.json>
python "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\render_report.py" --scan <scan.json> --plan <plan.json> --output <report.html>
- 绿灯:只限 canonical 缓存/临时根内、至少 14 天未变化、完整扫描且 identity 有效的子项;action 固定为
quarantine。 - 黄灯:下载、开发缓存、大文件、近期缓存;只审查。
- 红灯:应用数据、云同步、系统/保护路径和隔离区;阻断。
- 模型不得把黄/红灯临时升级为绿灯。
9. 隔离与恢复(Python 引擎)
用户明确要求某项隔离时,先 dry-run(返回 receipt 路径和 30 分钟有效期):
python "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\apply_cleanup.py" --plan <plan.json> --item-id G001 --dry-run
用户确认后,将 receipt 路径原样带入执行:
python "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\apply_cleanup.py" --plan <plan.json> --item-id G001 --execute --receipt <receipt.json> --confirm "QUARANTINE G001"
一次只处理一个 item。receipt 缺失、过期、已用,计划变化或复核失败都必须停止。恢复:
python "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\apply_cleanup.py" --restore --receipt <receipt.json> --confirm "RESTORE <receipt-id>"
原路径已存在时不得覆盖;让用户先处理冲突后再恢复。
10. 项目构件只读清单(可选,Windows)
如果项目/工作目录是空间大户,运行只读构件清单。绝不把项目热点自动视为删除授权:
& "$HOME\.workbuddy\skills\safe-storage-cleaner\scripts\project_artifact_inventory.ps1" -RootPath "C:\path\to\projects" -MinSizeMB 16 -ReportPath "$HOME\project-artifacts.json"
11. 验证清理结果
重新运行相同的审计,比对每分类删除总量和磁盘实际可用空间增量。说明应用活动可能导致两个数值不一致(后台并发写入、OneDrive 同步、页面文件等)。
用户沟通最小合同
回答必须让用户能区分"尚未执行"和"已验证结果",不能只给命令或术语。按场景显式覆盖:
- 只读分析:说明只扫描文件系统元数据、不读正文、尚未扫描或释放空间;交付分类计划和报告,容量标为【估算】,披露未扫描/截断范围。
- 要求执行或手改计划:先说明本轮没有移动文件;拒绝跳过审计。手改 tier/action 无效。Downloads 保持人工审查。
- 要求批量或永久删除:分别明确拒绝永久删除、批量处理和红/黄灯执行,不给绕过命令。
- 立即释放指定容量:不承诺达到数值;说明隔离不会立即释放空间,系统项走 Windows Storage 或 macOS Storage,用户文件仍逐项判断。
- AI 工具数据:明确"检测到"不等于"可删除";列明工具、文件类型、保护规则、官方操作及其
inspect_only/ui_only/manual_only/ receipt 可执行状态。 - RAM 请求:说明内存与磁盘是不同问题,不启动存储扫描,让位给进程/性能诊断。
- 分享报告:默认 share-safe HTML 不含绝对路径、可执行动作命令或本地 API,也不上传外部服务。
安全默认值
除非用户另行要求,使用以下默认值:
- 仅删除临时/缓存分类中超过 7 天的文件(Windows PowerShell 引擎);Python 引擎绿灯要求至少 14 天未变化。
- 用户临时文件和 Windows 临时文件纳入首次清理提案。
- 浏览器缓存为可选(
-IncludeBrowserCaches),仅覆盖普通 Cache、Code Cache 和 GPUCache;Service Worker 存储、cookies、密码、历史记录和登录数据不在范围内。 - 回收站为可选(
-IncludeRecycleBin)。 - 使用
-Preset Deep进行高产出的审计,清理前仍需逐项批准。 - 使用
-Preset Maximum仅在用户接受包含 DISM 组件存储清理的更强清理后。 - 使用
-IncludePipCache、-IncludeNpmCache或-IncludeUvCache使批准保持生态系统级别。运行原生缓存维护前阅读references/package-caches.md。绝不直接删除 Condapkgs。 - NVIDIA 驱动/应用下载为可选(
-IncludeNvidiaDownloadCache),安装器临时文件为可选(-IncludeInstallerTemp)。 - 不自动删除下载、文档、桌面文件、OneDrive 文件夹、项目文件夹、源代码、包管理器、虚拟环境或应用安装目录。
- 不使用
Remove-Item C:\*、rd /s C:\...、git clean或白名单外的通配符删除。
清理预设(Windows PowerShell 引擎)
| 预设 | 包含内容 | 适用场景 |
|---|---|---|
Standard |
用户临时文件和 C:\Windows\Temp |
安全首次清理 |
Deep |
Standard 加浏览器缓存、回收站、Windows Update 下载缓存、Delivery Optimization 缓存、Windows 错误报告、资源管理器缩略图/图标缓存、DirectX/NVIDIA 着色器缓存、诊断转储和大文件提示 | 在保持白名单限制下寻找更多可回收空间 |
Maximum |
Deep 加 dism.exe /Online /Cleanup-Image /StartComponentCleanup 清理模式 |
审查审计后的最强内置清理路径 |
脚本参数
scripts/c_drive_cleaner.ps1 主要参数:
| 参数 | 说明 | 默认值 |
|---|---|---|
-Mode |
Audit(只读审计)或 Clean(执行清理) |
Audit |
-Preset |
Standard、Deep 或 Maximum |
Standard |
-Drive |
目标盘符,如 C: |
C: |
-MinAgeDays |
文件最小年龄天数 | 7 |
-IncludeBrowserCaches |
包含浏览器缓存 | 开关 |
-IncludeRecycleBin |
包含回收站清理 | 开关 |
-IncludePipCache / -IncludeNpmCache / -IncludeUvCache |
各包管理器缓存 | 开关 |
-IncludeNvidiaDownloadCache |
NVIDIA 下载缓存 | 开关 |
-IncludeInstallerTemp |
Squirrel 安装器临时文件 | 开关 |
-RunComponentCleanup |
DISM 组件存储清理 | 开关 |
-ConfirmClean |
清理确认(Clean 模式必需) | 开关 |
-ReportPath |
JSON 报告输出路径 | 无 |
scripts/storage_inventory.ps1 主要参数:
| 参数 | 说明 | 默认值 |
|---|---|---|
-Drive |
目标盘符 | C: |
-RootPath |
自定义扫描根路径 | 盘根 |
-MaxDepth |
目录热点最大深度 | 5 |
-LargeFileMinMB |
大文件最小大小 | 128 |
-ReportPath |
JSON 报告输出路径 | 无 |
Python 引擎脚本(scan_storage.py / build_plan.py / render_report.py / analyze_storage.py / apply_cleanup.py / dispatch_official_cleanup.py)参数详见各脚本 --help,核心约束:只读、有界(--max-seconds / --max-candidates)、绿灯 quarantine 唯一 action、receipt 30 分钟有效期。
报告格式
报告应包含:
- 当前可用空间和预估可回收空间。
- 清单覆盖范围:扫描的逻辑字节数、不可访问计数/样本、跳过的 reparse point 计数/样本、目录热点和大文件。
- 已扫描分类,包括年龄阈值和是否已清理。
- 因权限、锁定文件或缺失路径而跳过的分类。
- 脚本拒绝触碰的白名单外文件。
- 使用 -RunComponentCleanup 或 -Preset Maximum 时的 DISM 组件清理结果。
- 实际可用空间增量、脚本统计删除字节数和会计差异。
- 剩余应用/离线数据、模型缓存、下载、项目构件和卸载候选项的编号决策表。
- 建议的下一步操作(如 Windows 存储感知、磁盘清理、卸载大型应用或人工审查大文件)。
降级路径
系统文件、应用核心、浏览器/聊天/邮件/照片库、云同步和虚拟机内容一律使用系统或应用官方入口。脚本不支持或权限不足时停在只读报告,不给自创删除命令。
交付状态
区分源码生成、静态校验、临时夹具测试、目标宿主真机验证。PowerShell 引擎已在本机真机验证(2026-08,C 盘清理与 Thunderbird 迁移全流程);Python 引擎尚未完成本机真机验证,标记 runtime pending。
来源
- safe-storage-cleaner v0.3.0(ChatGPT/Codex export,适配为 WorkBuddy skill)
- c-drive-cleaner v1.0.0(https://github.com/MickeyWzt/c-drive-cleaner-skill, MIT License,适配为 WorkBuddy skill)
- 2026-08-20 合并为 v1.1.0