让老爷爷先看家底:Mac 上给 AI 工作流瘦身的三把刀
This content is not available in your language yet.
电脑慢了、磁盘红了、Agent 一开就像在泥地里跑,这时候最危险的反应不是焦虑,而是立刻喊一句:“清缓存!”
老爷爷通常会先拦一下。
这里的老爷爷指的是戒指老爷爷 laoyeye,一个逐字收录辅助思考提示语的 skill 仓库。
他不会先问“删哪个”,而是问三件事:
- 这台机器现在真正卡在哪里?
- 哪些东西删了还能长回来?
- 哪些东西一刀下去,下一个 Agent 就接不上了?
这篇文章是一套给 AI 工作流用的 Mac 存储整理方法。它不是传统“磁盘清理软件”的替代品,而是一套可审计的操作纪律:先只读盘点,再按风险分层动刀,最后留下报告,让人和 Agent 都知道刚才发生了什么。
你会得到什么
标题为“你会得到什么”的章节读完你可以做四件事:
- 用一组只读命令判断 Mac 是空间压力、内存压力,还是后台进程堆叠。
- 把清理目标分成“可再生负担”“工作流泥沙”“高价值冷存”三类。
- 避开 VM、浏览器 Profile、照片库、聊天数据、Keychain 等高风险目录。
- 给每次清理留下 manifest 和 report,避免下次从零猜起。
一条铁律:先看家底,再动刀
标题为“一条铁律:先看家底,再动刀”的章节如果没有明确授权执行,Agent 只允许做只读盘点。
这条铁律听起来保守,但它能救命。AI 工作流的机器里通常混着代码仓库、视频素材、PPT 源文件、下载缓存、浏览器数据、聊天记录、模型运行环境和临时 worktree。它们看起来都很大,但价值完全不同。
先跑一组只读体检:
date '+%Y-%m-%d %H:%M:%S %z'df -h / /System/Volumes/Data 2>/dev/null || df -hsw_vers 2>/dev/null || truesysctl -n hw.memsize hw.ncpu machdep.cpu.brand_string 2>/dev/null || truememory_pressure 2>/dev/null | sed -n '1,80p' || truevm_stat | sed -n '1,40p' || truepmset -g therm 2>/dev/null || trueuptime判断口径可以先用这张表:
| 信号 | 说明 | 下一步 |
|---|---|---|
| Data 卷使用率超过 85% | 多 Agent、浏览器、视频和本地构建会明显变紧 | 先找可再生大头 |
| 可用空间低于 30 GiB | 系统和应用缓存回旋空间不足 | 优先释放缓存和构建产物 |
memory_pressure 或 swap 历史偏高 | 长时间后台堆叠,可能不是单个 App 的锅 | 看进程和常驻服务 |
| thermal 没警告但 load 高 | 多半是同步、索引、远控、LLM 桌面端一起磨 | 先减后台,再谈卸载 |
老爷爷的第一句不是“删”,是“证据在哪里”。
找大头:不要扫全世界
标题为“找大头:不要扫全世界”的章节全盘深扫很容易把系统目录、聊天库、浏览器数据库拖进无意义的慢查询。先看用户工作区和常见缓存区就够了。
du -sh "$HOME/Downloads" "$HOME/Desktop" "$HOME/Documents" "$HOME/projects" "$HOME/Library" "$HOME/Movies" "$HOME/Music" "$HOME/Pictures" "$HOME/Backups" "$HOME/agent-workbench" 2>/dev/null | sort -h
du -sh "$HOME/Library/Caches" "$HOME/Library/Application Support" "$HOME/Library/Containers" "$HOME/Library/Group Containers" "$HOME/Library/Logs" "$HOME/Library/Developer" 2>/dev/null | sort -h看到大头后,只深入一层:
find "$HOME/Library/Application Support" -maxdepth 1 -mindepth 1 -exec du -sh {} + 2>/dev/null | sort -h | tail -n 30find "$HOME/Library/Caches" -maxdepth 1 -mindepth 1 -exec du -sh {} + 2>/dev/null | sort -h | tail -n 30find "$HOME/projects" -maxdepth 1 -mindepth 1 -type d -exec du -sh {} + 2>/dev/null | sort -h | tail -n 30find "$HOME/agent-workbench" -maxdepth 1 -mindepth 1 -exec du -sh {} + 2>/dev/null | sort -h | tail -n 30find "$HOME/Backups" -maxdepth 2 -mindepth 1 -exec du -sh {} + 2>/dev/null | sort -h | tail -n 30再看后台进程:
ps aux | awk 'NR==1 || $3+0 >= 10 || $4+0 >= 2 {print}' | sort -k3 -nr | sed -n '1,30p'这一轮只需要输出五个结论:
| 问题 | 输出形式 |
|---|---|
| 最大 5 个空间大户是谁 | 路径、大小、用途猜测 |
| 哪些是可再生负担 | 可删除原因、恢复方式 |
| 哪些是业务资产或用户资产 | 为什么不能直接删 |
| 哪些进程正在制造性能摩擦 | 进程名、CPU、内存、可能来源 |
| 第一刀预计能释放多少 | 粗估 GiB,不承诺精确 |
三把刀
标题为“三把刀”的章节这套方法的核心不是“清理更多”,而是“先砍最确定的”。
第一刀:可再生负担
标题为“第一刀:可再生负担”的章节这是最适合先处理的一层。它们通常体积大、可重建、对用户资产风险低。
| 目标 | 为什么可以先处理 | 恢复方式 |
|---|---|---|
$HOME/Library/Caches/ms-playwright | 浏览器自动化缓存,可重新下载 | 下次 Playwright 运行时重装浏览器 |
| App 更新缓存 | 更新器留下的安装包或中间态 | 应用会重新拉取 |
仓库里的 .next、dist、build、coverage | 构建产物,不是源代码 | 重新运行 build/test |
明确可重装的 node_modules | 依赖目录体积大且可再生 | npm install / pnpm install / bun install |
| 临时导出和失败构建产物 | 通常是一次性产物 | 从源文件重新导出 |
这一刀要非常精确。不要写“清理所有缓存”,要写“清理这 5 个路径”。
第二刀:工作流泥沙
标题为“第二刀:工作流泥沙”的章节这一层不一定该删除,更适合整理。
典型目标包括:
- 下载目录里的新散件。
- 压缩包和解压目录同时存在的项目。
- PPT、视频、截图、网页导出、文章素材。
- 多个同名或同源项目目录。
- 一次性上传包、临时素材包、工具导出结果。
处理方式不是“扔掉”,而是把它们归回工作流:
| 场景 | 推荐动作 |
|---|---|
| 压缩包和解压目录并存 | 放到同一个候选组,先判断哪一个是主副本 |
| 同主题素材散在下载目录 | 合并到内容、素材、项目或归档目录 |
| 命名像密钥、token、账号导出 | 不读内容,移入敏感待处理区或停下询问 |
| 刚移动过但还没人工确认 | 打 Finder 标签,比如“文件移动” |
| 目标目录已有同名文件 | 不覆盖,进入重复待确认 |
这就是“老爷爷点人”:不是每个文件都上刑场,有些只是该回宿舍。
第三刀:高价值冷存
标题为“第三刀:高价值冷存”的章节这一层通常很大,但不能冲在第一轮。
| 目标 | 为什么危险 | 更合适的动作 |
|---|---|---|
| 大型历史项目包 | 可能是唯一可复盘状态 | 先生成清单,再压缩或外置迁移 |
| 旧版 DMG、ISO、安装包 | 有些可重下,有些不可重下 | 标注来源和用途后再删 |
| 视频素材库、PPT 源文件合集 | 内容资产不可再生 | 冷存、外置盘、云盘,不盲删 |
| 旧 worktree 整体 | 可能保留未合并上下文 | 查 Git 状态和任务记录后处理 |
| 备份目录 | 价值密度不透明 | 先按时间和用途分层 |
第三刀的关键词是“冷存”,不是“清空”。
禁刀区
标题为“禁刀区”的章节下面这些目录不是永远不能优化,而是不能用普通 rm -rf 或一把梭脚本处理。
| 禁刀对象 | 原因 |
|---|---|
| LLM 桌面端 VM 或运行时 bundle | 可能是应用运行核心,删了会破坏环境 |
| Chrome / 浏览器 Profile | 混有登录态、扩展、历史、数据库 |
| Messages、Mail、聊天数据 | 私密且恢复复杂 |
| Keychain、密码库、证书目录 | 不能让 Agent 读取或移动 |
| Photos Library | 包结构复杂,应该用照片应用或备份策略处理 |
当前活跃 Git 仓库的 .git | 这是项目历史和状态,不是普通缓存 |
| Obsidian 或知识库主库 | 文件多、链接多,误动后修复成本高 |
| 证件、合同、财务、签证材料 | 个人资产,必须人工确认 |
一条简单判断:删了会不会让“下一个 Agent 不知道发生过什么”?会,就先别删。
执行门禁
标题为“执行门禁”的章节当用户说“执行”时,也只执行刚才列出的精确第一刀目标。不能扩大范围。
执行前检查:
- 路径存在。
- 路径在
$HOME下。 - 路径不是 symlink 到未知位置。
- 路径不是
.git、Keychain、Mail、Messages、Photos Library、浏览器 Profile 或 LLM VM bundle。 - 已记录清理前
df -h和du -sh。 - 已写 manifest。
执行方式也要分清:
| 用户授权 | 允许动作 |
|---|---|
| “移到废纸篓” | 只 trash,不清空 |
| “立即释放” | 只删除 manifest 中列出的精确路径 |
| “整理一下” | 只移动明确可分类文件,不删除 |
| “看看能不能删” | 只读盘点和建议,不执行删除 |
不要使用通配符删除,不要用 sudo rm -rf,不要让脚本自己扩大战果。
Manifest 与 Report
标题为“Manifest 与 Report”的章节每次执行都要留下两份记录。
manifest 是机器可读的明细表:
$HOME/Observation/reports/performance-cleanup-YYYY-MM-DD_HH-MM-SS.tsv字段建议:
action_at status path size_kib_before reason restore_method errorreport 是人能读懂的复盘:
$HOME/Observation/reports/performance-cleanup-YYYY-MM-DD_HH-MM-SS.md必须包含:
- 执行时间。
- 清理范围。
- 未触碰范围。
- 清理前磁盘状态。
- 清理后磁盘状态。
- 估算释放空间。
- 明细表。
- 后续第二刀和第三刀建议。
- 遇到冲突如何处理。
这不是文书洁癖。没有记录,下次 Agent 就会重新猜一遍;有记录,下一刀才会更稳。
可复制 Prompt
标题为“可复制 Prompt”的章节下面是一版可以直接给 Agent 的公开 Prompt。你可以把 $HOME、工作区名称和报告路径替换成自己的环境。
你是我的 Mac 工作流压缩助手。请用奥卡姆剃刀整理这台 Mac:先处理最大、最确定、最可恢复的负担,不做玄学优化,不炫技,不乱删。
目标不是把电脑清空,而是恢复成可持续工作的状态:- 下载目录不再像泥石流。- Agent worktree 不堆满可再生构建产物。- 缓存不吞掉磁盘余量。- 备份、VM、聊天数据、照片库等高风险资产不被误伤。- 每次动作都留下 manifest/report,方便人和下一个 Agent 接手。
铁律:- 没有我明确说“执行”,只允许只读盘点。- 不读取 secrets、token、key、.env、浏览器数据库、聊天正文、邮件正文、Keychain、密码文件内容。- 敏感命名文件只按文件名判断,不打开内容。- 不用目录 mtime 判断“上次整理过”;只信 manifest、report、人工日志。- 不硬编码用户名路径;用 $HOME 或 Path.home()。- 不直接动 active repo、VM bundle、浏览器 Profile、照片库、聊天/邮件主数据。- 删除或移动前必须写清单;执行后必须复查并写报告。- 如果目标已存在,不覆盖;放入“重复待确认”或停下说明冲突。
第一阶段:只读体检。请运行 date、df、sw_vers、memory_pressure、vm_stat、pmset -g therm、uptime,并输出当前空间、内存、负载状态。
第二阶段:找大头。只扫描 $HOME 下的 Downloads、Desktop、Documents、projects、Library、Movies、Music、Pictures、Backups、agent-workbench,以及 Library 下 Caches、Application Support、Containers、Group Containers、Logs、Developer。不要全盘深扫,不要读取敏感文件内容。
第三阶段:分类。把候选项分成三类:1. 可再生负担:缓存、构建产物、可重装依赖。2. 工作流泥沙:下载散件、压缩包和解压目录、素材、临时导出、重复项目。3. 高价值冷存:备份、旧项目包、视频/PPT 源文件、照片库、可能唯一副本。
执行门禁:当我说“执行”时,只执行你刚才列出的精确第一刀目标,不能扩大范围。执行前写 manifest,执行后写 report。不要使用 sudo rm -rf,不要使用通配符删除。
最终回复请包含:- 已只读盘点 / 已执行。- 释放空间估算。- 清理项数量。- 整理项数量。- 未触碰范围。- report 和 manifest 路径。- 本次最大收益点和避坑。一个匿名化实战口径
标题为“一个匿名化实战口径”的章节在一台长期跑浏览器、LLM 桌面端、多 Agent worktree、内容生产素材的 Apple Silicon Mac 上,第一刀通常不需要碰用户资产。
更稳的顺序是:
- 先清理自动化浏览器缓存和应用更新缓存。
- 再处理 worktree 里的
.next、node_modules、dist、coverage。 - 然后整理下载目录里的压缩包、解压目录和素材散件。
- 最后再把大型备份、旧项目包、视频/PPT 源文件列为冷存候选。
一次保守执行里,第一刀只处理可再生缓存和构建产物,就可能释放数 GiB 到十几 GiB 空间;但真正重要的不是数字,而是没有误伤 VM、浏览器 Profile、照片库、聊天数据、备份和用户文档。
这套只读盘点、三色分级、manifest 与 report 的流程,已经做成了一个 skill,名叫 carl-file-organizer,收在 carl-skills 里。
收尾:不是洁癖,是可接手性
标题为“收尾:不是洁癖,是可接手性”的章节AI 工作流里的电脑不是一个“干净桌面”问题,而是一个“下一次还能不能接着干”的问题。
老爷爷的判断很简单:
- 能重建的,先砍。
- 能归档的,先归位。
- 可能是唯一副本的,先停手叫老爷爷,别动。
这套流程的目标不是让 Mac 看起来空,而是让它重新变成一台能被人、Agent、下一周的你继续接手的机器。
