Claude Code 丢失了我的 4 小时会话。这里有一个 $0 修复,真的有效
Source: Dev.to
这件事发生在一个星期五的下午
在一次复杂的认证重构——状态机、边缘情况、我们共同构建的所有细微上下文——进行到四小时后,Claude 的回复变得很通用。它忘记了我们做出的架构决策、选择背后的细微“原因”。我花了 45 分钟尝试重新构建上下文,但它始终没有完全恢复。
如果你经常使用 Claude Code,这种情况大概也发生在你身上。
为什么 Claude Code 会丢失上下文
Claude Code 有 上下文窗口限制。当达到上限时,它会“压缩”对话:对话内容被摘要以释放空间。这个摘要是 有损 的——细微的架构决策、选择背后的“原因”、以及微妙的模式都会被压平成通用描述。最糟糕的是?它会悄无声息地发生,没有任何警告。你正沉浸在工作流中,突然发现 Claude 已经不再了解你的代码库。
常见场景
- 超过 3 小时的复杂功能编码会话
- 具有众多相互依赖的重构会话
- 需要参考之前尝试的调试会话
- 需要一次性记住大量内容的多文件修改
变通办法
方法 1:手动 CLAUDE.md 摘要
将重要的上下文写入 CLAUDE.md 文件。这有助于项目层面的上下文,但无法捕捉会话特定的状态——对话流、刚刚尝试的内容、任务进行到哪一步。
方法 2:复制对话片段
繁琐。你必须实时决定哪些内容重要,这会打断流畅性,而且这些片段不可搜索。
方法 3:在自动压缩前使用 /compact
稍好一点——你可以控制压缩的时机。但仍然会丢失上下文,只是把丢失的时间点换成了你自己决定的时刻。
保留完整的对话历史
Claude Code 将对话历史保存为 JSONL 文件,路径为:
~/.claude/projects/[project-hash]/[session-id].jsonl
每个文件都是一次编码会话的完整记录。如果对这些文件进行快照,就可以恢复到精确的会话状态。
简单备份脚本
#!/bin/bash
# save-session.sh
PROJECT_DIR="$HOME/.claude/projects"
BACKUP_DIR="$HOME/.claude/session-backups/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
cp -r "$PROJECT_DIR" "$BACKUP_DIR"
echo "Session saved to $BACKUP_DIR"
在任何有风险的操作前运行它。如果压缩毁掉了你的上下文,恢复特定会话:
# Restore a specific session
cp ~/.claude/session-backups/20260221_143022/projects/[hash]/[session].jsonl \
~/.claude/projects/[hash]/
然后启动 Claude:
claude --resume [session-id]
自动化工具:Mantra
Mantra 为你的 Claude Code(以及 Cursor、Windsurf)会话创建可视化快照,方便像浏览 Git 历史一样浏览和恢复。
- 可视化 – 查看会话时间线
- 自动化 – 工作时自动生成快照
- 跨工具 – 支持 Claude Code、Cursor 和 Windsurf
下载地址 mantra.gonewx.com(macOS/Windows/Linux)。
更广的背景
这不仅是 Claude Code 的问题。Cursor 的 AI 聊天历史也有同样的困扰,Windsurf 会话会消失,Aider 在不同运行之间也会丢失上下文。我们都在用 AI 助手构建复杂的东西,但这些工具尚未把会话状态视为值得保存的内容。直到它们做到这一点之前,我们只能自行管理。
结论
上面的备份脚本免费且只需几分钟即可设置。下次压缩在最糟糕的时刻发生时,你的未来的自己一定会感谢现在的你。
你是否因为压缩而失去重要的会话上下文?你的解决办法是什么?