常开久了,痛的不是内存,是本地记录
把 Claude Code 挂在一台不关机的 Mac mini 上,好处是会话可以跑很久;副作用也很具体:本地会话记录、项目缓存和调试产物会按天往上堆。常见两种抱怨:
- 磁盘突然紧张:
~/.claude或某个项目目录比代码本身还大,备份和镜像变慢。 - 新会话失忆:你明明上周否决过某个方案,新开一轮又要重新解释,浪费上下文和时间。
这和 OOM 与 tmux 保活 不是一回事:那篇谈的是进程内存被打爆;本文谈的是落盘的历史记录怎么管。也不等于「把上下文窗口塞满」——长任务上下文另见 长任务上下文。
ls 确认再删。准备清单
- 一台常开的 Mac mini(整机独享),已装 Claude Code,并用你自己的账号登录
- 终端里能跑
du、find、tar(系统自带即可) - 清理前先退出相关 Claude Code 会话,避免边写边删
- 日常用 SSH 进机器;需要图形界面时用 UU 远程连接
步骤一:先摸清谁在占空间
不要一上来就 rm -rf。先量:
du -sh ~/.claude 2>/dev/null
du -sh ~/.claude/* 2>/dev/null | sort -h
du -sh ~/.claude/projects/* 2>/dev/null | sort -h | tail -20
你通常会看到几类目录(名称因版本略有差异):
- 按项目拆开的会话记录(常在
projects一类路径下):每次对话的 transcript、工具调用痕迹。 - 会话索引 / 元数据:方便「继续上次」的小文件,体积一般不大,但文件很多。
- 调试或临时导出:你自己
tee、脚本重定向到~/logs的输出,有时比 Claude 自带记录更大。
把「最大的 5 个项目路径」记下来,后面只动冷项目,热项目先留着。
步骤二:定一条保留策略(写进备忘,别每次临时拍脑袋)
建议用「天数 + 是否还在活跃」两条轴:
| 类型 | 建议 | |------|------| | 过去 7 天仍在改的仓库 | 全留;需要回顾决策时能翻到 | | 8–30 天未打开的项目记录 | 打成压缩包归档到 ~/Archives/claude-transcripts/ | | 超过 30 天且仓库已删或已归档 | 删除本地 transcript;代码若还在 git 里,以 git 为准 | | 含密钥、令牌、客户原文的片段 | 先搜再删:不要整包外传或丢进公共备份 |
归档示例(路径按你上一步量到的改):
mkdir -p ~/Archives/claude-transcripts
# 示例:把某个冷项目目录打成按月命名的包
tar -czf ~/Archives/claude-transcripts/proj-old-$(date +%Y%m).tar.gz \
-C ~/.claude/projects ./某个冷项目目录名
# 确认压缩包可读后,再删除原目录
归档目的是腾出工作盘,不是永远堆在同一块盘上。若 Archives 也开始膨胀,再把旧 tar 挪到你自己的对象存储或外置盘。
步骤三:删之前先扫敏感内容
会话记录里经常出现 .env 片段、粘贴的令牌、内网地址。清理前在目标目录扫一遍关键词(按你的习惯增删):
rg -n -i 'api[_-]?key|token|secret|password|BEGIN (RSA |OPENSSH )?PRIVATE' \
~/.claude/projects/某个冷项目目录名 2>/dev/null | head
若命中:
- 先轮换相关密钥(在对应服务控制台操作),再删本地副本。
- 不要把未脱敏的 transcript 打进会同步到共享盘的目录。
- 热路径上继续用 deny 规则挡住密钥文件,从源头少写进去。
步骤四:留一份「精简记忆」,而不是整段 transcript
很多人清理完又痛苦:新会话不知道上周为什么否决了某方案。正解不是保留全部聊天记录,而是单独维护一份短的决策备忘,例如仓库里的 DECISIONS.md 或 CLAUDE.md 里一小节:
## 已否决
- 不用方案 A:和现有鉴权冲突(2026-10)
## 约定
- 迁移已完成:主库是 Postgres
- 发布只走 staging 分支,不直接推生产
写法要点:
- 只记结论和日期,不贴长对话。
- 和 Skills / 常驻规则分工:常驻行为放 Skills 或短
CLAUDE.md,参考长文按需加载(见 Skills 与 CLAUDE.md)。 - 备忘进 git;transcript 默认不要进 git。
这样磁盘可以瘦,上下文也不会每次从零讲起。
步骤五:做成月度例行,而不是等磁盘报警
在常开机器上,把清理变成可重复的检查:
- 每月固定一天跑一遍步骤一的
du,把结果贴进你自己的运维笔记。 - 超过阈值(例如
~/.claude大于你定的上限)才执行归档。 - 多会话并行时,先看 会话状态板,确认没有会话还在写同一个项目,再删该项目的冷记录。
- 机器本身要真的常开:若系统在睡,你会误以为「记录没增长」,其实任务早就停了,可配合 pmset 睡眠审计。
可选:用 launchd 的 StartCalendarInterval 每月跑一个只做 du 报告的脚本,把结果追加到 ~/Archives/claude-du.log;自动删除仍建议人工确认,避免误伤热项目。
建议验收清单
du -sh ~/.claude能在清理前后给出可对比的数字。- 热项目会话仍可继续;冷项目记录已在 Archives 中且抽查能解压。
- 敏感关键词扫描无新命中,或已轮换相关密钥。
- 仓库里有一份不超过一两屏的决策备忘,新开 Claude Code 能据此接话。
- transcript 未误提交进 git;备份策略里工作盘与归档盘分离。
和 Zumac.Ai 怎么配合
本地记录管理的前提是:同一台机器长期在线、目录结构稳定、你随时能 SSH 回去做月度清理。笔记本合盖、换机、重装,都会让「Archives + 精简记忆」策略断掉。Zumac.Ai 提供位于新加坡家庭宽带上的实体 Mac mini,整机独享,支持 SSH 与 UU 远程连接,适合把 Claude Code、~/.claude 与归档目录长期放在同一台机器上维护。新客户整机租用 ¥999/月起(季付 ¥2,697.30,半年付 6 送 1 ¥5,994,年付 12 送 2 ¥11,988);已购买客户续费保持原价。订购与开通走 panel.zumac.ai;方案说明见 首页费用区;使用问题见 帮助中心。需要人工协助可联系 Telegram @singatao。实际延迟取决于你本地的网络线路。
常开不是把所有历史永远堆在工作盘上——量清楚、归档冷的、留下短记忆,新会话才接得上,磁盘也撑得住。
