MemoryLake
返回全部文章
Tutorial2026 年 10 月 19 日·11 分钟阅读

如何查找、恢复和删除您的 Claude Code 会话历史记录(2026年指南)

昨天您在 Claude Code 中进行了一次长时间的会话。今天您运行 claude --resume,但它不在列表中。或者您想要相反的结果:某个项目的历史记录存在于您的电脑上,而您希望将其清除。

这两者都基于相同的事实。Claude Code 将会话作为文件保存在您的电脑上,默认情况下仅向您显示其中的一部分,按计划删除旧会话,并在不同的应用程序中保留独立的列表。一旦您知道了这些文件的位置以及决定选择器显示内容的规则,查找会话、正确恢复会话以及有目的地删除历史记录就都成了轻而易举的任务。

本指南涵盖了会话历史记录的存放位置、为什么会话看起来消失了但实际上并没有、如何以正确的状态恢复会话,以及如何故意删除历史记录。如果您需要在另一台电脑上继续会话,我们关于将 Claude Code 会话导出到另一台机器的指南涵盖了这种情况。本指南则针对您当前使用的机器。

Claude Code 将您的会话历史记录保存在哪里

Anthropic 的会话文档定义了这一单元:"会话是与项目目录绑定的已保存对话。" 会话是在您工作时写入的:"在您工作时,会话会持续保存到本地转录文件中,因此您可以在退出或运行 /clear 后返回该会话。"

这些文件是纯 JSONL 格式。"默认情况下,Claude Code 将转录内容以 JSONL 格式存储在 ~/.claude/projects/<project>/<session-id>.jsonl,其中 <project> 是您的工作目录路径,非字母数字字符会被替换为 -。" 该格式不适合您进行编辑:"条目格式是 Claude Code 内部的,并且在不同版本之间会发生变化,因此直接解析这些文件的脚本可能会在任何版本发布时失效。"

有三个设置可以更改存储位置和保留时间。CLAUDE_CONFIG_DIR 可将存储移出 ~/.claude。cleanupPeriodDays 可更改转录内容的保留时间。而对于一次性运行,使用 claude -p 配合 --no-session-persistence 可以完全阻止写入转录内容。

为什么会话看起来似乎丢失了

在认为会话丢失之前,请检查以下几点。只有最后一种情况才意味着历史记录彻底消失了。

选择器仅显示当前工作区

会话选择器的初始范围很窄。默认情况下,它显示"当前工作区(包括后台会话)的会话",以及"在其他地方启动但通过 /add-dir 添加了当前目录的会话"。文档中指出了扩大范围的快捷键:"使用 Ctrl+W 扩大到该仓库的所有工作区,或使用 Ctrl+A 扩大到这台机器上的每个项目。"

如果您在不同的文件夹或同一仓库的不同工作区中启动了会话,它虽然存在于磁盘上,但超出了默认视图范围。claude --continue 的范围更窄:它"重新打开当前目录中最近的会话"。

某些类型的会话永远不会出现在选择器中

设计上排除了三种会话。"Claude Code 会将使用 claude -p 或 Agent SDK 创建的会话排除在会话选择器和 claude --continue 之外。" 并且 "首个提示词为 /loop 命令的会话不会出现在选择器中,claude --continue 也会跳过它们。" 您仍然可以通过 ID 访问其中的任何会话:"您仍然可以通过将工作会话 ID 传递给 claude --resume <session-id> 来恢复它。"

后台会话仍在运行

如果您最近的对话正在后台运行,claude --continue 将不会打开它。它会"退出并提示 Your most recent conversation is running in the background 以及该会话的 ID。" 请改为从 claude agents 接入它。

您正在查看其他应用程序的列表

CLI 并不是 Claude Code 的唯一界面,会话页面指出:"桌面应用、claude.ai/code 和 VS Code 插件各自保留自己的会话列表。" VS Code 文档则从另一个角度描述了与 CLI 的关系:"该插件和 CLI 共享相同的对话历史记录。要在 CLI 中继续插件中的对话,请在终端中运行 claude --resume。"

这两句话并不一定冲突:每个应用都有自己的列表,而 VS Code 插件的对话也可以通过 CLI 访问。如果丢失的历史记录是 Claude 应用(而非 Claude Code)中的聊天,我们关于查找丢失的 Claude 聊天历史记录的指南涵盖了这一情况。云端会话则又有所不同。它们列在 claude.ai/code 上,且 Web 文档指出:"--resume 会重新打开此机器本地历史记录中的对话,而不会列出云端会话。"

会话被移动了

"使用 /cd 移动会话会将其重新定位到新目录的项目存储中,因此之后它会出现在该目录的选择器中。" 如果您在会话中途更改了目录,请在新目录下查找。

会话已过期

这是历史记录彻底消失的唯一情况。Claude Code 会自动删除旧的转录内容:"只要 Claude Code 能够安全地确定保留期限,一旦以下路径中的文件早于 cleanupPeriodDays,它就会将其删除。默认值为 30 天,最小值为 1 天。" 子智能体(subagent)的转录内容会随其父会话一起删除。

有两种数据遵循不同的规则。自动记忆(Auto memory)会被保留:"清理扫描不会删除项目自动记忆目录中的记忆文件。" 此外,在 Claude Desktop 或 Cowork 中启动或上次继续的会话将"在任何时间"保留,除非您在 Claude Code v2.1.248 或更高版本上设置了 desktopSessionCleanupPeriodDays。

人们首先尝试的方法

运行 claude --continue 并以为这就是全部。 它只打开当前目录中最近的会话。

在不扩大范围的情况下搜索选择器。 默认视图是当前工作区。Ctrl+A 可以显示每个项目。

在选择器中寻找 claude -p 的运行记录。 非交互式和 SDK 会话已被排除。请通过 ID 恢复它们。

以为在智能体视图中删除会话会移除其历史记录。 事实并非如此。智能体视图文档指出,在您删除会话后,"它的转录内容仍会通过 claude --resume 保留在您的机器上"。

编辑 JSONL 文件以恢复或清理会话。 格式在不同版本之间会发生变化。请使用 /export 获取可读副本,并使用文档中说明的命令进行删除。

对于单个会话内的检查点,我们关于回滚 Claude Code 会话的指南涵盖了回滚时会恢复哪些内容。

解决方法:扩大选择器范围、通过 ID 恢复,然后设置保留期限并有目的地删除

步骤 1:查找会话

使用 claude --resume 打开选择器。如果会话不在那里,请按 Ctrl+W 查看该仓库的所有工作区,然后按 Ctrl+A 查看这台机器上的每个项目。从另一个工作区选择会话会在原处恢复它。对于不相关的项目,"Claude Code 会将 cd 和恢复命令复制到您的剪贴板。"

如果您知道会话 ID,则完全不需要选择器。"您可以从任何目录运行 claude --resume <session-id>"。Claude Code 会首先在当前项目及其工作区中查找,然后在所有其他项目中查找。您还可以直接传递文件本身:claude --resume <transcript-path> 会恢复"存储在该绝对路径下的 .jsonl 转录文件中的会话"。

如果您只粗略记得工作时间,可以按日期列出 ~/.claude/projects/ 下的文件。每个项目都有一个以其路径命名的文件夹,每个会话都是一个 .jsonl 文件。如果那里没有一个月以上的文件,请检查您的 cleanupPeriodDays 设置:清理扫描可能已经将其删除了。

步骤 2:以您需要的状态恢复它

恢复不仅能恢复消息。文档中列出了对话历史记录"包括工具调用和结果"、会话运行所使用的智能体、文档中记录的权限模式、任何活动目标,以及未完成的后台工作笔记。

某些启动选项不会恢复。"如果会话依赖于 --mcp-config、--settings、--plugin-dir、--fallback-model 或通过 --add-dir 添加的目录,请在恢复时重新传递它们"。在会话中途通过 /add-dir 添加的目录也不会恢复。settings.json 和 settings.local.json 中的设置会在启动时重新读取,因此无需重复输入。

如果您想在不改变原会话的情况下尝试其他操作,请在恢复时添加 --fork-session。会话页面还介绍了如何为会话命名,这使下一次搜索更加容易:claude --resume <name> 可以直接恢复精确匹配的会话。在长时间休假之前,我们关于 Claude Code 空闲压缩的指南涵盖了如果您在离开期间大型会话被压缩,您回来时会看到什么。

步骤 3:设置保留期限、保留重要内容并有目的地删除

选择保留期限。 在 settings.json 中设置 cleanupPeriodDays,以保留长于或短于 30 天的转录内容。托管设置可以为组织进行设置,此时 Claude Code 会使用该值。

保留任何重要内容的易读副本。 "运行 /export 打开一个菜单,允许您将当前对话复制到剪贴板或将其保存为纯文本文件"。将导出的文件保存到 ~/.claude 之外,这样针对该目录下路径运行的保留清理扫描就不会影响它。

使用 claude purge 删除项目的历史记录。 该命令会删除"项目的所有本地 Claude Code 状态:转录内容、任务列表、调试日志、文件编辑历史记录、提示词历史记录行,以及项目在 ~/.claude.json 中的条目。" 请先使用 --dry-run 进行预览。请注意,清除操作还会删除自动记忆:claude-directory 文档在其删除内容中列出了"projects/ 下的转录内容和自动记忆"。如果您想保留 Claude Code 了解到的关于该项目的信息,请在确认前检查计划。在 v2.1.288 之前,该命令为 claude project purge。

使用 claude rm 从列表中移除后台会话。 这可以整理智能体视图,但转录内容仍会保留在您的机器上,并可通过 claude --resume 继续使用。

在 claude.ai/code 删除云端会话。 "删除会话将永久移除该会话及其数据。此操作无法撤销。" 您可以从侧边栏的已归档过滤器或会话菜单中进行删除。

在 MemoryLake 中进行设置

会话历史记录是工作进展情况的记录。您返回旧会话寻找的内容通常更简短:您达成的决定、您否决的方法、最终起作用的设置。这些内容在冗长的转录中很容易丢失,并且当保留清理扫描运行或您清除项目时,它们会随之消失。

MemoryLake 是一个记忆层,用于将此类结论保存在您维护的一个列表中,供 Claude Code 以及您连接的其他助手(如 ChatGPT 和 Codex)使用,而无需关心磁盘上还保留着哪些转录内容。

您可以用自己的语言亲自编写这些条目。不会从您的会话转录、您的 ~/.claude 目录、您的自动记忆、您的云端会话或任何供应商的存储中读取、写入或删除任何内容。请不要包含机密和凭据,并遵守您组织关于项目细节的政策。

步骤 1:创建 API 密钥

登录并从控制面板生成一个密钥。该密钥属于您的 MemoryLake 工作区,与您的 Anthropic 账户是分开的。

MemoryLake 控制台显示 API 密钥屏幕,在此创建并复制新密钥以供智能体使用
MemoryLake 控制台显示 API 密钥屏幕,在此创建并复制新密钥以供智能体使用

步骤 2:上传您的第一批记忆

从您平时会去旧会话中寻找的内容开始:关于项目的决定、不起作用的方法及其原因、解决重复出现的命令和设置。每个条目记录一个决定,注明日期,并标明其所属的项目。

MemoryLake 工作区,其中上传了第一批文档,列出了每个文件成为可搜索记忆的过程
MemoryLake 工作区,其中上传了第一批文档,列出了每个文件成为可搜索记忆的过程

步骤 3:连接您的 AI 和智能体

连接 Claude Code 和您使用的其他助手。这样,新的会话就可以从您写下的结论开始,而无需任何人去恢复上个月的转录内容。

MemoryLake 集成屏幕,列出了可以连接到记忆层的 AI 客户端和智能体框架
MemoryLake 集成屏幕,列出了可以连接到记忆层的 AI 客户端和智能体框架

这在实践中带来了什么改变

第一个改变是,看起来凭空消失的会话变少了。一旦您知道选择器是从当前工作区开始的,Ctrl+A 和 claude --resume <session-id> 就能访问仍保存在磁盘上的会话。

第二个改变是删除变得更加审慎。保留期限是您自己选择的设置,claude purge --dry-run 会在删除任何内容之前显示计划,并且您知道从智能体视图中移除会话会保留其转录内容。

第三个改变是减少了对旧转录内容的依赖。会话过期是设计使然。写下结论意味着 30 天的清理扫除的是记录,而不是您对项目的知识。在并行会话之间共享这些知识是一个相关的问题,我们关于在 Claude Code 会话之间共享上下文的指南涵盖了这一内容。

Claude Code 会话历史记录的最佳实践

先扩大范围,再担心丢失。 在选择器中按 Ctrl+W,然后按 Ctrl+A。

通过 ID 恢复 -p 和 SDK 运行。 它们永远不会出现在选择器中。

为您会返回的会话命名。 精确的名称可以直接恢复。

在恢复时重新传递启动标志。 MCP 配置、设置文件、插件目录和添加的目录不会被恢复。

有目的地设置 cleanupPeriodDays。 默认值为 30 天。

导出重要内容。 将 /export 副本保存到 ~/.claude 之外。

在每次清除前进行演练(Dry-run)。 它会连同转录内容一起删除自动记忆。

记住 claude rm 会保留转录内容。 当您希望彻底清除历史记录时,请使用 claude purge。

如果您使用多个编码智能体,我们关于查找丢失的 Codex 聊天历史记录的指南涵盖了针对 Codex 的相同问题。

结论

默认情况下,Claude Code 会将您的会话作为文件保存在 ~/.claude/projects/ 下,每个项目一个文件夹,每个会话一个文件,保留 30 天。看起来丢失的会话可能只是超出了选择器的默认视图、是永远不会出现在那里的 -p 或 SDK 运行、仍在后台运行、在另一个应用的列表中,或者已通过 /cd 移动。只有过期或被清除的会话才是真正消失了。

使用 Ctrl+W 和 Ctrl+A 扩大选择器范围,在知道 ID 或转录路径时通过它们进行恢复,并重新传递您的启动标志。然后选择您的保留期限,导出您需要保留的内容,并在您想要删除项目历史记录时使用带有 --dry-run 的 claude purge,同时记住这会连同自动记忆一起删除。

常见问题

Claude Code 会话历史记录存储在哪里?

存储在 ~/.claude/projects/<project>/<session-id>.jsonl 的 JSONL 文件中,其中 <project> 是您的工作目录路径,非字母数字字符会被替换为连字符。CLAUDE_CONFIG_DIR 可将存储移至其他位置。

为什么我在 claude --resume 中看不到旧会话?

默认情况下,选择器显示当前工作区。按 Ctrl+W 查看该仓库的所有工作区,或按 Ctrl+A 查看每个项目。使用 claude -p、Agent SDK 或以 /loop 作为首个提示词启动的会话不会出现在选择器中;请通过 ID 恢复它们。

Claude Code 会话历史记录保留多长时间?

默认情况下为 30 天。可在 settings.json 中通过 cleanupPeriodDays 进行更改;最小值为 1。除非您设置了 desktopSessionCleanupPeriodDays,否则在 Claude Desktop 或 Cowork 中上次使用的会话转录内容将永久保留。

如何删除 Claude Code 会话历史记录?

在通过 --dry-run 预览后,运行带有项目路径的 claude purge。它会删除项目的转录内容、自动记忆、任务列表、调试日志、文件编辑历史记录、匹配的提示词历史记录行,以及它在 ~/.claude.json 中的条目。

claude rm 会删除会话的历史记录吗?

不会。它只是将会话从智能体视图的列表中移除,转录内容仍保留在您的机器上,可通过 claude --resume 使用。

如何删除 Anthropic 存储的云端会话?

在 claude.ai/code 上,从侧边栏的已归档过滤器或会话菜单中删除它们。Anthropic 的文档指出,删除操作会永久移除会话及其数据,且无法撤销。