Claude Code 丢失了我的 4 小时会话。这里有一个 $0 修复,真的有效

发布: (2026年2月21日 GMT+8 14:13)
5 分钟阅读
原文: Dev.to

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 助手构建复杂的东西,但这些工具尚未把会话状态视为值得保存的内容。直到它们做到这一点之前,我们只能自行管理。

结论

上面的备份脚本免费且只需几分钟即可设置。下次压缩在最糟糕的时刻发生时,你的未来的自己一定会感谢现在的你。

你是否因为压缩而失去重要的会话上下文?你的解决办法是什么?

0 浏览
Back to Blog

相关文章

阅读更多 »

Subnetting 详解

什么是 Subnetting?可以把它想象成把一栋大型公寓楼拆分成不同的楼层。每层 subnet 拥有自己的编号主机(hosts),以及建筑……