问题:机器一直开着,文件却「自己没了」
把 Claude Code 放在常开的 Mac mini 上,会话可以跑十几小时,你从笔记本或手机用 Remote Control、SSH 或 UU 远程连接偶尔看一眼。某天你会发现:刚改过的草稿、临时脚本,或会话刚写出还没来得及提交的文件,在磁盘上找不到了。
有人怀疑是自己误删,有人怀疑是钩子脚本太狠。近期 Claude Code 2.1.310 的说明里单独提到:修复了后台清理误删近期文件的问题。也就是说,常开主机上那种「无人值守、长时间挂着」的用法,更容易撞上清理逻辑的边界——会话还在用、文件时间戳又新,却仍可能被当成可清对象。
思路:先升级,再把「可清」和「不可清」分开
不要指望一次升级就万事大吉,也不要把所有东西都堆在同一层目录里。稳妥做法是三层:
- 确认 Claude Code 已到 2.1.310 或更高,拿到官方修复。
- 项目代码只放在你明确管理的目录,缓存、日志、临时产物放在可清理路径。
- 改动尽快进 Git,重要节点再加一层本地快照,误删时有回退。
下面步骤假设你在新加坡 Mac mini 上已经能正常登录 Claude Code,并用 tmux 跑长会话。
步骤一:在 Mac mini 上升级并核对版本
SSH 或 UU 远程连上机器后,在终端执行:
claude --version
# 或
npm list -g @anthropic-ai/claude-code 2>/dev/null
若版本低于 2.1.310,按你当初的安装方式升级(官方 CLI / npm 全局安装择一,不要混用两套)。升级后关掉旧的 Claude Code 进程,再开新会话:
# 示例:结束旧进程后重新进入命名会话
tmux kill-session -t cc 2>/dev/null || true
tmux new -As cc
claude
在新会话里再跑一次 claude --version,把版本号记进你自己的运维笔记。常开机器上最常见的失误,是外壳脚本还指向旧二进制,终端里看着升级了,tmux 里跑的仍是旧进程。
步骤二:分清「项目目录」和「可清理目录」
约定一套目录,写进项目的 CLAUDE.md,让会话不要把重要草稿丢进临时区:
~/work/<project>/ # 唯一真相:源码与文档,受 Git 管理
~/work/<project>/.cache/ # 可清:构建缓存、下载包(已 gitignore)
~/tmp/claude-scratch/ # 可清:一次性实验文件,隔夜可删
~/backups/work-daily/ # 备份:你自己的日更快照,不交给自动清理
在 CLAUDE.md 里写清楚:
## 文件存放规则
- 正式改动只写在仓库目录内,并尽快 git add / commit。
- 一次性实验写到 ~/tmp/claude-scratch/,不要放进仓库根目录乱命名。
- 不要删除 ~/backups/ 与未提交的工作区文件;清理前先列出路径并征求确认。
这样即使以后再出现清理逻辑的边界问题,你的「可丢」和「不可丢」在路径上就已经分开了。
步骤三:长会话开始前做一次「会不会被清」自检
开过夜或跨半天的任务前,花一分钟:
cd ~/work/myapp
git status -sb
find . -name '*.tmp' -o -name '*~' -o -name '*.swp' | head
ls -lt ~/tmp/claude-scratch 2>/dev/null | head
若 git status 里有大量未跟踪的重要文件,先提交或挪到明确路径,再让 Claude 继续干。未跟踪、名字又像临时文件的东西,最容易被各类清理策略盯上。
同时检查磁盘空间,避免系统或工具在空间紧张时更激进地回收:
df -h ~
du -sh ~/work ~/Library/Caches 2>/dev/null | sort -h
步骤四:误删之后怎么找回
升级修复能降低误删概率,仍建议保留可回退的路径。准备三条回退路径即可:
- Git:未推送的提交仍在本地;
git reflog能找回刚 reset 掉的提交。 - 编辑器 / 系统本地版本(若你开启了):对单个文件试「还原到之前的版本」。
- 你自己的日更快照:例如每天用
rsync把~/work同步到~/backups/work-daily/$(date +%F),保留最近若干天。
mkdir -p ~/backups/work-daily
rsync -a --delete ~/work/ ~/backups/work-daily/$(date +%F)/
# 只保留最近 7 天(示例)
ls -1d ~/backups/work-daily/20* | sort | head -n -7 | xargs -r rm -rf
把这条放进 cron 或 launchd,比事后后悔便宜。快照目录不要放在 Claude 默认会扫描清理的缓存路径下。
步骤五:和 Remote Control、多会话一起用时的注意点
常开 Mac mini 上你可能同时开着几个 tmux 窗口,再用手机 Remote Control 接回去。清理问题往往出在你不在屏幕前的那几小时。建议:
- 每个长任务窗口固定一个项目目录,不要在同一会话里频繁
cd到杂项目再随手写文件。 - 重要输出让 Claude 直接写进仓库路径并提示你提交,而不是只留在聊天里或匿名临时文件名。
- 升级 Claude Code 之后,把所有旧会话温和结束后再开新的,避免新旧进程混用配置。
2.1.310 里还有面向企业自定义角色的 Remote Control / 云会话权限能力;个人整机独享场景下,你更需要关心的是本机文件生命周期,而不是组织里谁能连进来。若以后多人共用同一台机器,再单独规划账号与权限。
验收清单
claude --version显示 ≥ 2.1.310,且当前tmux里跑的就是这个版本。- 项目目录与
~/tmp/claude-scratch、~/backups路径约定已写进CLAUDE.md。 - 故意在 scratch 目录放一个测试文件,确认你的日更备份或清理脚本不会动
~/work里未提交的源码。 - 断掉笔记本、隔数小时再连回,长会话仍在,工作区文件还在,版本号未回退。
为什么这件事更适合放在新加坡常开 Mac mini 上
后台清理、长会话、Remote Control 接回,都假设同一台机器一直在线、磁盘与目录布局稳定。笔记本合盖、换网络、系统更新中途重启,会让「刚写完还没提交」的窗口变得更危险。整机独享的 Mac mini 可以长期固定目录约定、备份任务和 Claude Code 版本,你只负责从别处连回来继续工作。
Zumac.Ai 在新加坡提供 Mac mini M6 整机独享,接入新加坡家庭宽带,适合把 Claude Code 放在稳定合规的使用环境里长期运行。新客户整机租用 ¥999/月;季付、半年付、年付有折扣。交付后可用 UU 远程连接,SSH 按你的安全策略自行开启。Claude 账号与订阅由你自行准备。咨询可 Telegram @singatao。实际延迟取决于你本地的网络线路。
小结
常开不等于「文件永远安全」。先升级到包含清理修复的 Claude Code 2.1.310,再把项目、缓存、备份目录分开,改动进 Git、关键节点做本地快照。这样长会话可以安心挂在新加坡 Mac mini 上,你从手机或笔记本回来时,改动还在你离开时的位置。
