Claude Code 대화 기록을 잃지 않게 하는 도구를 만들었습니다
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 (데스크톱 앱) – 동일한 제한이 있습니다.
- claude-mem – 데이터를 자체 데이터베이스에 저장하고 의미 검색을 추가하지만, 단순 아카이빙에 비해 과도한 Node.js/MCP 서버 스택을 도입합니다.
제가 필요했던 것은 한 번 설정하고는 잊어버릴 수 있는 단순하고 내구성 있는 아카이브였습니다.
claude-vault 소개
claude-vault는 Claude Code 대화를 SQLite 데이터베이스에 전체 텍스트 검색과 함께 가져오는 단일 바이너리 Rust 도구입니다. 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는 Porter 형태소 분석이 적용된 SQLite의 FTS5를 사용하므로 검색이 유연합니다:
claude-vault search "race condition fix"
claude-vault search "deploy" --project my-app --since 2025-01-01Claude로 다시 파이프할 수 있도록 JSON 출력도 얻을 수 있습니다:
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 – 종료할 때 세션을 백그라운드에서 보관합니다.
설정이 완료되면 별다른 생각 없이 모든 세션이 자동으로 보관됩니다.
다른 솔루션과의 차이점
| 기능 | claude-vault | claude-history | claude-mem |
|---|---|---|---|
| 아카이브 전용 (메모리 주입 없음) | ✅ | ✅ | ❌ (메모리 추가) |
| CLI 전용 | ✅ | ✅ (TUI) | ✅ (서버 필요) |
| 전체 텍스트 검색 (FTS5) | ✅ | ✅ (기본) | ✅ (시맨틱) |
| 외부 런타임 없음 (Node, Python) | ✅ | ✅ | ❌ |
| Claude Code에 자동 연결 | ✅ | ❌ | ❌ |
이 도구는 한 가지 일을 합니다: 대화가 사라지지 않도록 보장합니다. 그 이상도, 그 이하도 아닙니다.
설치
cargo install claude-vault
# or download a prebuilt binary from GitHub Releases행동 촉구
지금 claude-vault import를 실행하세요. Claude Code를 오래 사용해 왔다면, 오래된 세션 중 일부가 이미 사라졌을 수 있습니다—늦기 전에 남은 세션을 보관해 두세요.
GitHub:
Claude Code 세션을 잃어버려서 되돌리고 싶었던 적이 있나요? 대화 기록을 보존하기 위해 어떤 방법을 사용하고 계신가요? 다른 사람들의 방법을 듣고 싶습니다.