WorkBuddy C 盘清理
铁律(先读,别跳过)
- 扫描 = 只读。第一遍永远只出报告(路径 + 体积 + 日期),不动任何文件。要动哪些必须用户明确确认。
- ⚠️ 头号陷阱:删/移文件会触发备份,1:1 复制,净收益为零。
任何删除或移动都会让 WorkBuddy 往
<WorkBuddy 数据目录>\workspace\sessions\<id>\modify_backup
写一份原文件副本。
2026-10-03 实测(铁证):软件运行时 mv 搬走 tmp(81.6MB)到 D 盘 →
workspace 体积 2.4MB → 84.1MB,涨了 81.7MB,.workbuddy 总量 4.5GB 纹丝不动。
搬多少、补多少,等于原地踏步。
→ 结论:软件运行中清理 .workbuddy 内部目录 = 白费力气,必须关闭后再清。
→ 唯一例外:AppData\Local\Temp\* 等主巢之外的残留,不触发备份,可随时清。
→ 清理前先记下 workspace 体积,动完再量一次,涨了就立刻停手。
3. AI 不能代清回收站。Clear-RecycleBin / rd /s /q C:\$Recycle.Bin 都被安全策略拒绝,只能用户自己动手(回收站图标右键 → 清空)。
4. 涉及桌面/下载/文档等私人目录的删除:先警告、列清单、等确认,小批量(≤10 个)执行。
运行时 vs 关闭后:能清什么
用户问「现在不能清吗」时,直接给这条分界线:
| 目标 | 运行时能清? | 原因 |
|---|---|---|
.workbuddy 内部任何目录(logs/tmp/traces/file-tree-manifests…) |
❌ 不能 | 触发 1:1 备份,净收益 0(已实测) |
.workbuddy\workspace\sessions\*\modify_backup |
❌ 不能 | 备份机制本身,边删边生,套娃 |
AppData\Local\Temp\codebuddy-*、agent-browser-chrome-*、workbuddy-product-spill-* |
✅ 能 | 主巢之外,不触发备份 |
AppData\Local\@genieworkbuddy-desktop-updater\installer.exe |
✅ 能 | 更新残留,独立文件 |
AppData\Local\wb-cdp-profile\BrowserMetrics |
✅ 能 | Chrome 遥测,主巢之外 |
| 回收站 | ❌ AI 清不了 | 安全策略拒绝,用户自己清 |
所以:想清得动大头(logs 941MB、traces 437MB 等),只能关掉 WorkBuddy。
空间地图(C 盘大头从哪来)
> 2026-10-03 实测快照:.workbuddy 总量 4.5GB
> binaries 1.4GB / logs 942MB / app 580MB / traces 437MB / projects 393MB /
> file-tree-manifests 242MB / plugins 224MB / blobs 114MB / tmp 82MB(已搬走)
| 位置 | 典型体积 | 能不能删 |
|---|---|---|
~\.workbuddy\logs |
日均 300MB~1.2GB,从不回收 | ✅ 主要目标,可整段清 |
~\.workbuddy\binaries |
~1.4GB(node/python 运行时) | ❌ 别删,删了要重装 |
~\.workbuddy\tmp |
浏览器临时 profile | ✅ 可清 |
~\.workbuddy\traces |
变化 | ✅ 可清 |
~\.workbuddy\app\session |
变化 | ✅ 可清 |
~\.workbuddy\projects |
会话历史 | ⚠️ 有历史价值,问过再删 |
~\.workbuddy\workspace\sessions\*\modify_backup |
可达 GB 级 | ✅ 关闭后整删 |
AppData\Local\@genieworkbuddy-desktop-updater\installer.exe |
~531MB | ✅ 更新残留,删 |
AppData\Local\wb-cdp-profile\BrowserMetrics |
Chrome 遥测 | ✅ 可清 |
AppData\Local\Temp\codebuddy-marketplace-install-* |
安装临时目录 | ✅ 可清 |
AppData\Local\Temp\agent-browser-chrome-* |
浏览器临时 | ✅ 可清 |
AppData\Local\Temp\workbuddy-product-spill-* |
溢出残留 | ✅ 可清 |
步骤 1:扫描(只读)
Python 用托管版解释器,别用系统 Python(依赖可能不齐)。
# 先按你的机器填两个变量(路径因人而异,别照抄)
PY="<托管 Python 路径>" # 例:%USERPROFILE%\.workbuddy\binaries\python\versions\<版本号>\python.exe
WB="<WorkBuddy 数据目录>" # 例:%USERPROFILE%\.workbuddy
# 目录体积排行(看 .workbuddy 里谁最胖)
"$PY" scripts/scan_size.py "$WB"
# 找大文件(第二个参数是阈值 MB,默认 20)
"$PY" scripts/find_big.py "$WB" 50
# 按前缀聚合(找同类临时目录的总量)
"$PY" scripts/group_size.py "%LOCALAPPDATA%\Temp"
Windows 上别用 du —— 会被 SIGTERM 干掉。用上面的 Python 脚本。
PowerShell 工具常返回空 stdout,长输出让它写文件再读。
步骤 2:排序,出清单
按「体积 × 安全度」排序,给用户一张表:路径 / 体积 / 建议(删/留/问)。
永远让用户圈定要删哪些,再动手。
步骤 3:选删除通道(重要,选错会卡死)
| 通道 | 适用场景 | 说明 |
|---|---|---|
mv 跨盘搬走 |
大目录、要保底 | 最快。Git Bash 的 mv 不走 trash hook。搬到 <另一块盘>\Temp_WBJUNK 这类临时点(见脚本里的 JUNK_DIR 变量) |
rm -f 单文件 |
少量单个文件 | 约 0.7s/个,太慢,别用于大目录 |
| genie-trash | 单文件、想进回收站 | 单文件 OK;目录递归删除必失败(trash-failed / SAFE_DELETE_FAIL_CLOSED),Remove-Item、.NET API 全被拦 |
| Python 脚本(关掉 WorkBuddy 后跑) | 大规模清理 | 见下 |
步骤 4:大规模清理走脚本
scripts/cleanup_wb.py —— 拷贝给用户,让他关掉 WorkBuddy 后运行:
python cleanup_wb.py
做四件事:删 modify_backup → 删 Temp 残留 → 删 JUNK_DIR(临时搬运点)→ 清回收站。
脚本先在终端打印警告并等回车确认,别擅自去掉这个确认步骤(第 4 步不可逆)。
收尾
- 清理后重跑
scan_size.py对比前后体积。 - 再查一次
modify_backup目录,确认没反弹。 - 提醒用户:回收站要他自己清空,AI 清不了。
顺手记一笔
如果这次发现了新的大目录或新的坑,更新本文档(这个 skill 是活的)。