Claude Code `/compact` 之后前面的对话全看不到了?其实没丢,教你完整找回
用 Claude Code 久了你一定遇到过:上下文快满时它会自动(或你手动 /compact)压缩一次历史。压缩之后,前面那一大段对话就「消失」了——你想往上翻看之前到底聊了什么、改了哪些文件、为什么做了某个决定,结果只剩一句压缩摘要,细节全没了。换台电脑 resume 会话,看到的也只是压缩后的部分。
很多人以为这些历史被删了。其实没有——它们还好好地躺在磁盘上,只是 Claude Code 自己不给你看了。 这篇讲清楚为什么会这样,以及怎么把压缩前的完整对话找回来。
一、为什么 `/compact` 后旧消息看不到了
Claude Code 的会话记录是写在本地 JSONL 文件里的(~/.claude/projects/<项目>/<session_id>.jsonl)。当 /compact 触发时,它做了一件很多人没意识到的事:
- 它会 fork 出一个新的 session_id,另开一个新的 JSONL 文件,里面第一条就是压缩摘要;
- 你压缩前的全部对话,留在了旧的那个 JSONL 文件里,原封不动;
- 之后
claude --resume只接着最新那个 session 跑,旧文件它不再加载、也不展示。
所以你看到的「历史消失」,本质是:数据没丢,只是 Claude Code 的恢复视图只认最新一段,把压缩前的旧段落丢在一边了。 如果你压缩过好几次,就会有好几个旧 JSONL,一段段断开,Claude 自己永远只给你看最后一段。
二、PandaNpc 怎么把完整历史找回来
PandaNpc 远程访问 Claude Code 时,做了一件 Claude 自己不做的事:沿着 /compact 的 fork 链,把每一段历史按顺序拼回来。
具体来说:
- 它记录整条压缩链(压缩前的旧 session_id 一个个串起来,加上当前最新的);
- 恢复会话时,按
[旧段1 → 旧段2 → … → 当前段]的顺序,依次加载每段的 JSONL 并拼接,还原成一条完整时间线; - 每次
/compact的位置,会插入一条清晰的─── /compact ───分隔线,让你一眼看出「这里压缩过一次」; - 你在桌面端 / web 端往上滚,就能看到压缩前的全部原始对话——每条消息、每次工具调用、每个代码改动,一条不少。
而且支持多次压缩:压缩过 N 次,就把 N+1 段历史全拼回来。
🔑 关键一点:这条压缩链只用于「展示」,不影响 Claude 的真实上下文。
claude --resume该用哪段上下文还用哪段(最新的压缩摘要),PandaNpc 只是额外把旧段落读出来给你看。也就是说——你既享受了压缩省下来的上下文,又不丢失任何历史可读性。
三、怎么用
在开发机上装 pandapaw(一行命令):
macOS / Linux:
bashcurl -fsSL https://cos.pandanpc.com/pandapaw/install.sh | shWindows(PowerShell):
powershelliwr -useb https://cos.pandanpc.com/pandapaw/install.ps1 | iex在另一台电脑打开 PandaNpc 桌面端,或浏览器访问 https://pandanpc.com/agent ,连回你的开发机,打开任意一个
/compact过的会话——往上滚,压缩前的完整历史都在,分隔线标得清清楚楚。
四、小结
/compact不会删历史,只是 Claude Code 的恢复视图不展示压缩前的旧段落。- PandaNpc 沿压缩链拼接全量 JSONL,桌面端 / web 端完整查看,
─── /compact ───标记每次压缩,支持多次压缩。 - 纯展示、不动真实上下文,鱼和熊掌兼得。
官网下载桌面端(Windows / macOS / Linux)或直接用 web 端:https://pandanpc.com 。受够了 /compact 后翻不到历史的,可以试试。