怎么删 Claude Code 的会话文件,以及会失去什么

它们就是 ~/.claude/projects 下的文件:rm 就是全部操作,而 cleanupPeriodDays 会定时替你删

智能体跑的每一次会话,都会在进行时写到磁盘上。Claude Code 把 JSONL 放在 ~/.claude/projects,一个项目一个目录、一个会话一个文件;Codex 写在 ~/.codex/sessions/**/rollout-*.jsonl;Cursor 把聊天放进 SQLite 数据库。其余工具见历史文件在哪里

在它们变大之前,没有人会告诉你这些文件存在——下面那台笔记本上是 875 个文件、1.6 GB,其中单个文件有 586 MB。

怎么删

没有专门的命令:会话就是文件,删掉文件就是全部操作。目录名是把工作目录的斜杠换成短横线,文件名就是会话 id。

# 先看看有什么,最新的在前
ls -t ~/.claude/projects/-Users-you-project/*.jsonl

# 删一个会话
rm ~/.claude/projects/-Users-you-project/<session-id>.jsonl

# 删一个项目的全部会话
rm -rf ~/.claude/projects/-Users-you-project

# 全删
rm -rf ~/.claude/projects/*

# 或者交给 Claude Code 自己定时删:超过 N 天的会话自动消失
# ~/.claude/settings.json
{ "cleanupPeriodDays": 7 }

三件事和多数人的预期不一样。删掉的会话会立刻从 claude --resume 的列表里消失——那个列表就是读这些文件生成的。你的提问历史是另一个文件 ~/.claude/history.jsonl,不删它就还在。而且没有归档:--resume 里不见了的会话,是被 cleanupPeriodDays 清掉的,文件是删了,不是存到别处了。

它们到底能长到多大

一位开发者的 ~/.claude/projects:十三个项目,两个月的高强度日常使用。

指标数值
会话文件数875
总大小1.6 GB
中位大小304 KB
90 分位644 KB
最大的单个文件586 MB

有意思的是分布:一次普通会话大约三分之一兆,而少数几个失控的会话占掉了大部分空间。决定体积的是工具输出,不是你打了多少字——cat 过大文件、或者跑过一个啰嗦构建的会话,比一次纯粹讨论设计的会话大几个数量级。

查你自己的:

du -sh ~/.claude/projects
find ~/.claude/projects -name '*.jsonl' -size +50M

文件里面是什么

Claude Code 的会话文件是 JSON Lines:一行一个 JSON 对象,会话进行时不断追加。每条记录带着角色、时间戳、会话 id 和内容——你的提问、助手的回复,或者一次工具调用及其结果。Codex、Copilot CLI 和 Antigravity 用的是同样的一行一条结构、不同的字段名;Cursor、Zed、Goose 和 Hermes 用的是 SQLite。格式登记表逐字段记录了每一种。

两个值得知道的后果。它是纯文本,所以 grep 能用,你自己写的工具也能用。以及它是原样记录:终端里滚过去的东西都在里面,包括命令打印出来的任何内容——请把这个目录当成你的 shell 历史来对待。

Claude Code 会替你删

默认情况下,Claude Code 只保留 30 天,之后自行删除——设置项是 ~/.claude/settings.json 里的 cleanupPeriodDays。清理时不会有任何提示;人们通常是在 --resume 里找不到六月那次会话时才发现。想让文件留下来,就在这个月过去之前把数字调大:

{ "cleanupPeriodDays": 3650 }

deja 索引过的内容会留下:被清理掉的记录仍然可以搜到,因为索引不跟着某一个文件一起消失——只有 deja forget 会有意地把一个会话丢掉。但文件本身确实没了,--resume 也跟着没了。

这个清理是 Claude Code 自己做的,不是 cron,而且在客户端无法确定保留期时会暂停——这就是为什么上面那台按默认设置的机器上,仍然留着 69 个超过 31 天的文件。别把这当成安全:文档写的行为是 30 天后删除,清理真正跑起来的那天,六月那次会话就没了。

自己删可以吗

可以,智能体不会因此出问题。你失去的是:

  • 恢复会话。claude --resume 的列表就是读这些文件来的,删一个就少一个。
  • 以后对历史的任何检索。凡是回答「这个问题我以前遇到过吗」的东西,读的都是这些文件。删掉的记录无法恢复,也无法重新推导出来——智能体不会替你把它重建。
  • 你自己的审计记录。它是智能体在你仓库里究竟跑过什么的唯一凭据,见审计智能体

如果只是想腾空间,请精准地删,而不是清空整个目录:

# 那几个异常大的文件,通常腾出的空间就够了
find ~/.claude/projects -name '*.jsonl' -size +100M -ls

# 一个你再也不会打开的项目
rm -rf ~/.claude/projects/-Users-you-old-project

按时间删是最诱人也最该避免的做法:越老的会话恰恰是你已经不记得的那些,按每字节的价值算,它们最值钱。

让它们有用,而不只是占地方

这些文件已经是你解决过的每一个问题的完整记录,缺的只是一个入口——从 875 个文件里找出该打开的那 300 KB,没人会手动做这件事。

curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh
deja install --auto

deja 在本地为这些记录建一份索引——这台机器上的每一个智能体,包括它装上之前的会话——然后以毫秒级从里面作答。几个 GB 的记录大约十秒建完。没有任何内容被上传,凭据在建索引时就被脱敏。在上面那台机器上,1.6 GB 的记录对应 204 MB 的索引。

智能体记得之前的对话吗 · 历史文件在哪里 · 快速开始