Claude Code 대화 기록을 잃지 않게 하는 도구를 만들었습니다

발행: (2026년 3월 14일 오후 12:02 GMT+9)
7 분 소요
원문: 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 (데스크톱 앱) – 동일한 제한이 있습니다.
  • 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-01

Claude로 다시 파이프할 수 있도록 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-vaultclaude-historyclaude-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 세션을 잃어버려서 되돌리고 싶었던 적이 있나요? 대화 기록을 보존하기 위해 어떤 방법을 사용하고 계신가요? 다른 사람들의 방법을 듣고 싶습니다.

0 조회
Back to Blog

관련 글

더 보기 »

트라비고

Gemini와 함께 말하는 속도만큼 빠르게 여행하세요! 라이브 에이전트가 몰입형 스토리텔링 및 3D 내비게이션과 만나는 곳. 이 프로젝트는 Gemini Live Ag...에 진입하기 위해 만들어졌습니다.