我构建了一个工具来防止丢失我的 Claude 代码对话历史

发布: (2026年3月14日 GMT+8 11:02)
5 分钟阅读
原文: Dev.to

Source: Dev.to

请提供您希望翻译的正文内容,我将按照要求保留链接、格式和技术术语进行简体中文翻译。

问题:丢失的 Claude Code 对话历史

几周前,我需要重新查看一次调试会话。Claude 带我一步步排查了我应用中的一个棘手的竞争条件——整个过程耗时超过一小时,且修复相当微妙。我清楚地记得是哪个会话,但当我去找对应的 JSONL 文件时,它已经不见了。没有任何警告,也没有“此文件将在 3 天后被删除”。就这么消失了。

如果你使用 Claude Code 已经有几个月了,可能也遇到过同样的情况。Claude Code 会把对话保存为位于 ~/.claude/projects/ 下的 JSONL 文件,旧文件会随时间自动删除。你可以在设置中关闭自动删除,但这只能解决问题的一部分:

  • /compact 仍会对你的上下文进行有损摘要。
  • 版本更新可能导致会话兼容性中断。
  • 即使关闭删除,JSONL 文件也会散落在各个目录中,无法跨会话搜索。

现有工具

  • claude-history (Rust TUI) – 适合浏览,但直接读取 JSONL 文件,因此已删除的文件不可见。
  • Claude Code History Viewer (desktop app) – 同样的限制。
  • claude-mem – 将数据持久化到自己的数据库并加入语义搜索,但会引入完整的 Node.js/MCP 服务器堆栈,对简单归档来说有些大材小用。

我需要的是一个 简单、持久的归档,只需一次性搭建后即可忘记它的存在。

介绍 claude-vault

claude-vault 是一个单二进制的 Rust 工具,可将 Claude Code 对话导入 SQLite 数据库,并支持全文搜索。无需 Node.js、Python 或 MCP 服务器——只需下载后直接运行。

导入对话

claude-vault import
# Imported 94562 messages (0 skipped, 12847 filtered, 0 errors) from 203 files

数据一旦进入 SQLite,即使文件被删除、压缩或更新也能保留下来。

导入内容

Claude Code 的 JSONL 文件中包含大量噪声(工具结果、系统标签、文件读取输出、进度信息)。claude-vault 会剔除这些噪声,仅保留:

  • 你的提问
  • Claude 的回复
  • 代码修改操作

搜索存档

claude-vault 使用 SQLite 的 FTS5 并配合 Porter 词干算法,搜索灵活多样:

claude-vault search "race condition fix"
claude-vault search "deploy" --project my-app --since 2025-01-01

你还可以获取 JSON 输出,以便管道回传给 Claude:

claude-vault search "previous auth implementation" --json

自动导入

手动运行 import 可以工作,但我总是忘记。真正的解决办法是把 import 挂钩到 Claude Code 的生命周期中。

~/.claude/settings.json 中添加以下内容:

{
  "hooks": {
    "PreCompact": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "claude-vault import >/dev/null 2>&1"
          }
        ]
      }
    ],
    "SessionEnd": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "claude-vault import >/dev/null 2>&1 &"
          }
        ]
      }
    ]
  }
}
  • PreCompact – 在 /compact 对话进行摘要之前捕获完整的对话。
  • SessionEnd – 当你退出时在后台归档会话。

设置完成后,每个会话都会自动归档,无需再额外操作。

与其他解决方案的区别

Featureclaude-vaultclaude-historyclaude-mem
Archive only (no memory injection)❌ (adds memory)
CLI‑only✅ (TUI)✅ (requires server)
Full‑text search (FTS5)✅ (basic)✅ (semantic)
No external runtime (Node, Python)
Automatic hooking into Claude Code

它只做一件事:确保你的对话不会消失。仅此而已。

安装

cargo install claude-vault
# or download a prebuilt binary from GitHub Releases

行动号召

现在运行 claude-vault import。如果你已经使用 Claude Code 一段时间了,某些旧会话可能已经消失——请在为时已晚之前归档剩余的内容。

GitHub:

你是否丢失了想要找回的 Claude Code 会话?你是如何保存对话历史的?我很想了解大家的做法。

0 浏览
Back to Blog

相关文章

阅读更多 »