长任务为什么总在半路「失忆」
用 Claude Code 做一次大重构或一整批测试修复,常见的情况是这样的:
- 上下文被工具输出吃光:一次完整的测试日志、一个大文件的全文读取,就占掉一大块上下文,真正有用的讨论反而被挤出去。
- 压缩之后忘了做到哪:自动压缩会把早先的对话浓缩成摘要,细节和「下一步要做什么」经常在这一步丢掉。
- 额度用完停在一半:改了十几个文件,测试还没跑通,额度到了,等恢复后连自己都想不起改到了哪里。
- 会话跟着电脑一起断:笔记本合盖、换网络、重启,终端里那个跑了两小时的会话也就没了。
这四件事的解法是同一个思路:进度放在文件里,不放在会话里;噪音放在磁盘上,不放在上下文里;会话放在常开的机器上,不放在你的笔记本上。 下面按步骤在一台新加坡 Mac mini 上配好。
准备清单
- 一台常开的 Mac mini(整机租用或自有设备托管),已装好 Claude Code 并用你自己的账号登录
- 项目代码已在 Git 仓库里,能随时回到上一个干净的提交
- 已安装
tmux,用来让会话在你断开 SSH 之后继续存在 - 远程方式:SSH 用来看日志、接回会话;UU 远程连接用来处理需要图形界面的操作
步骤一:把 CLAUDE.md 精简成「每轮都要看的规则」
CLAUDE.md 每次会话都会被读进上下文,写得越长,留给真正工作的空间越少。建议只保留三类内容:
- 项目怎么构建、怎么跑测试(一两条命令即可)
- 不能碰的目录和文件
- 一句话:「开始工作前先读
PROGRESS.md,每完成一步就更新它」
架构说明、历史决策这类长文,放到 docs/ 里,需要时让 Claude 自己去读,而不是每轮都塞进来。
步骤二:把噪音输出挡在上下文外面
最占上下文的通常不是代码,而是日志。给 Claude 定一条规矩:长输出先落盘,再按需查看。
- 在项目里加一个脚本
scripts/test-quiet.sh,内容是把完整测试输出写进logs/test-latest.log,屏幕上只打印最后几十行和失败用例的名字。 - 在
CLAUDE.md里写明:跑测试用这个脚本;需要细节时用grep在日志里找,不要整份读取。 - 读大文件时,让它先用
grep -n定位,再读相关的几十行。
这样一次测试从几千行变成几十行,上下文能多撑很多轮。需要大范围翻代码的调研类工作,可以交给子代理(subagent)去做,它在自己的上下文里读文件,只把结论带回主会话。
步骤三:用 PROGRESS.md 做进度接力
在项目根目录建一个 PROGRESS.md,固定成下面几段:
- 目标:这次任务要达成什么
- 已完成:每一步做完写一行,附上对应的提交
- 进行中:当前正在改的文件和思路
- 下一步:接下来要做的两三件事
- 注意:踩过的坑、不要再尝试的方案
配合一个习惯:每完成一个小步骤就 git commit 一次,并更新 PROGRESS.md。这样无论是压缩、额度用完还是会话被关掉,你和 Claude 都能从文件和提交记录里准确知道停在哪。
步骤四:压缩之后自动把进度读回来
手动压缩时可以给 /compact 附一句说明,比如「保留当前正在改的文件和下一步计划」,比让它自由发挥丢得少。两个子任务之间如果关联不大,直接 /clear 清空,再让它读 PROGRESS.md 重新开始,往往比硬撑着压缩更清爽。
更省心的做法是用 hook 自动续上。在项目的 .claude/settings.json 里加一个 SessionStart hook,匹配压缩后重新开始的场景(compact),执行 cat PROGRESS.md。hook 的输出会作为上下文交给 Claude,压缩一结束,进度就自动回到它眼前。第一次配好后,手动触发一次 /compact,确认它能说出「下一步」是什么,再放心长跑。
步骤五:额度用完时,停在一个干净的点
额度提示出现时,不要急着关窗口:
- 让 Claude 把当前状态写进
PROGRESS.md,把能提交的改动先提交;改到一半的内容用git stash或一个 WIP 提交保存。 - 保持
tmux会话不动,直接断开 SSH。 - 额度恢复后,SSH 回到 Mac mini,
tmux attach回到原来的窗口;如果会话已经关闭,在同一个项目目录用claude --continue接着最近一次对话,或用claude --resume从列表里选。 - 第一句话固定为:「先读 PROGRESS.md 和最近的 git log,告诉我下一步。」
为什么放在一台常开的新加坡整机上
上面这套方法的前提,是会话和项目一直待在同一个地方。放在笔记本上,合盖、换网络、系统更新都会打断它;放在一台常开的 Mac mini 上,tmux 里的会话一直在,你在哪台设备上连回去,看到的都是同一个现场。网络环境稳定、时区固定,排查问题时也只需要看一台机器。
SgRent 提供的就是这样的环境:新加坡家庭宽带原生 IP 上的实体 Mac mini M6,整机独享(一人一台物理机),支持 UU 远程连接和 SSH,FileVault 全盘加密,退租时抹机重装。新客户整机租用月付 ¥699 起,季付、半年付、年付有折扣;已有 Mac 的也可以托管,¥299/月起。实际延迟取决于你本地的网络线路,建议先用一个月跑通自己的工作流。
小结
CLAUDE.md只写每轮都要的规则,长文档按需读取- 测试和大文件输出先落盘,屏幕只看摘要
PROGRESS.md加小步提交,是最可靠的进度记录- 用
SessionStarthook 在压缩后自动读回进度 - 额度用完先存档,恢复后
tmux attach或claude --continue接着做
有问题可以在 Telegram 联系 @singatao,或直接看 价格与付款周期。
前往 panel.zumac.ai 订购 → · 查看方案与费用 · 帮助中心
