我构建了一个工具来防止丢失我的 Claude 代码对话历史
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 – 当你退出时在后台归档会话。
设置完成后,每个会话都会自动归档,无需再额外操作。
与其他解决方案的区别
| Feature | claude-vault | claude-history | claude-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 会话?你是如何保存对话历史的?我很想了解大家的做法。