
모든 프로젝트의 Claude Code 세션을 하나의 목록으로 — Enter를 눌러 재개하기
요약
Claude Code 사용 중 시스템 충돌로 사라진 여러 세션을 효율적으로 복구하기 위한 'claude-sessions' 스크립트를 소개합니다. fzf를 활용해 모든 프로젝트의 세션을 하나의 목록으로 보여주고, 엔터 키 하나로 올바른 디렉토리에서 세션을 즉시 재개할 수 있습니다.
핵심 포인트
- Claude Code의 JSONL 세션 데이터를 활용한 세션 인덱싱
- fzf 기반의 통합 세션 목록 및 실시간 미리보기 제공
- 엔터 키 입력 시 새 탭에서 해당 프로젝트 경로로 자동 이동 및 세션 재개
- 에이전트 팀 세션 필터링 기능 지원
문제점
Mac이 5개의 저장소(repo)에 걸쳐 7개의 Claude Code CLI 세션이 열려 있는 상태에서 하드 크래시(hard-crash)가 발생했습니다. 모두 사라졌습니다.
내장된 복구 기능은 claude --resume이지만, 7개에 대해서는 확장성이 떨어집니다:
- 실행하는 디렉토리의 세션만 목록에 표시됩니다. 즉, 어떤 저장소에 있었는지 기억했다가 각각
cd로 이동해야 합니다. - 실행 중인 셸(shell)을 점유합니다. 결국 창을 새로 띄우고 경로를 다시 입력해야 합니다.
해결책
Claude Code는 이미 필요한 모든 것을 일반 JSONL 형식으로 저장하고 있습니다:
~/.claude/projects/<encoded-project-path>/<session-id>.jsonl
각 파일의 첫 줄에는 세션 ID, 작업 디렉토리(working directory), git 브랜치, 그리고 사용자의 첫 메시지가 포함되어 있습니다. 이는 디스크에 저장된 완전한 프로젝트 간 세션 인덱스이며, 단지 fzf를 해당 경로로 지정하기만 하면 됩니다.
그래서 탄생한 것이 바로 **claude-sessions**라는 하나의 스크립트입니다.
- 모든 프로젝트의 모든 세션을 하나의 목록으로 보여주며, 최신순으로 정렬되고 대화 내용의 실시간 미리보기를 제공합니다.
- Enter를 누르면 강조된 세션이 새로운 iTerm 탭(또는 tmux 창)에서 열립니다:
cd <project> && claude --resume <id>— 올바른 디렉토리에서 Claude 자체의 "요약본 또는 전체 세션?(summary or full session?)" 프롬프트가 새 탭에 나타납니다. 선택기(picker)는 다음 세션을 위해 열려 있는 상태를 유지합니다. - **에이전트 팀(agent teams)**에 의해 생성된 세션은
⛭ agent-name으로 태그가 붙으며, ctrl-a로 숨길 수 있습니다.
저의 7개 세션을 복구하는 데 걸린 시간은 Enter를 일곱 번 누른 약 10초였습니다.
설치
fzf와 python3가 필요합니다. 탭 열기 기능은 macOS(iTerm2/Terminal) 기준이며, tmux 내부에서는 Linux에서도 작동합니다.
curl -fsSL https://raw.githubusercontent.com/DenverLifeSciences/claude-sessions/main/claude-sessions -o /usr/local/bin/claude-sessions
chmod +x /usr/local/bin/claude-sessions
스크립트, 문서 및 주의 사항 (저장 형식은 문서화되지 않았습니다 — 이 도구는 오직 읽기만 수행합니다):
DenverLifeSciences / claude-sessions
Claude Code CLI를 위한 프로젝트 간 세션 선택기 — 모든 세션에 대해 fzf를 사용하며, Enter를 눌러 새 탭에서 각 세션을 재개합니다
claude-sessions
Claude Code CLI를 위한 프로젝트 간 세션 선택기입니다.
5개의 저장소(repo)에 걸쳐 7개의 Claude Code 세션이 열려 있는 상태에서 컴퓨터가 충돌했습니다. claude --resume은 명령어를 실행하는 디렉토리의 세션만 목록에 표시합니다. 따라서 복구하려면 이전에 작업하던 모든 저장소를 기억하고, 각각 cd로 이동한 뒤, 목록에서 선택하는 과정을 7번 반복해야 합니다.
대신 claude-sessions는 모든 프로젝트의 모든 세션을 최신순으로 하나의 fzf 선택기에 나열합니다. Enter를 누르면 해당 세션이 올바른 디렉토리에서 claude --resume <id>를 실행하며 새로운 iTerm 탭(또는 tmux 창)에서 열립니다. 이때 선택기는 다음 세션을 위해 열려 있는 상태를 유지합니다.
enter 새 탭에서 세션 열기 (선택기는 열린 상태 유지)
ctrl-a 에이전트-팀원 (agent-teammate) 세션 숨기기/보이기 (⛭)
ctrl-r 목록 새로고침
...
각 줄에는 세션의 경과 시간, 프로젝트 디렉토리, git 브랜치(main/master가 아닌 경우), 그리고 시작 메시지가 표시됩니다. 미리보기 창에는 마지막 몇 개의 사용자/어시스턴트 대화 내용이 표시됩니다...
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기