Snapshot your terminal state, restore it after a crash — Claude Code sessions included
개요
Claude Code 세션의 터미널 상태를 스냅샷으로 저장하고 충돌 후 복원하는 방법을 제시하며, 특히 macOS의 기본 창 복원 기능이 프로세스 복원이나 의도적 종료 구별에 실패하는 문제를 해결합니다.
주요 내용
- 문제점: macOS의 기본 창 복원 기능은 창 자체만 복원하고 프로세스는 복원하지 않으며, 의도적인 종료와 예기치 않은 충돌을 구분하지 못해 이전 세션을 복원할 때 원치 않는 창이 다시 열리는 문제가 있습니다.
- 해결책: 5분마다 스냅샷을 찍는 데몬(launchd job)을 사용하여 각 iTerm 탭의 tty, 프로세스, 작업 디렉토리, Claude 세션 실행 여부 및 세션 ID를 JSON 파일로 저장합니다.
- 복원 방식: 충돌 후
claude-sessions --restore-crash또는claude-sessions --restore-pick명령어를 통해 이전 스냅샷을 복원하며, 복원은 현재 창의 탭으로 이루어지고 각 탭은 이전 디렉토리로 이동되며claude --resume <session-id>가 재실행됩니다. - Claude Code 세션 관리:
claude-sessionsCLI 도구는 여러 프로젝트에 걸쳐 열린 Claude Code 세션을 하나의fzf피커에서 관리하며, 세션의 최신순으로 표시하고 새 iTerm 탭에서 복원할 수 있습니다. - 잠재적 문제점 및 해결:
launchd는 iCloud 경로를 읽지 못하므로, 스크립트가 iCloud Drive에 있을 경우 로컬 복사본을 가리키도록 설정해야 합니다.- 단일 스냅샷 파일은 충돌 후 복원 시 이전 상태가 덮어쓰여질 수 있으므로, 스냅샷 기록을 유지하여 여러 상태를 관리해야 합니다.
- 이전 창 그룹을 그대로 복원하는 대신, 모든 탭을 현재 창으로 통합하여 관리하는 것이 유용합니다.
시사점
이 솔루션은 터미널 작업 상태를 체계적으로 관리하고 예기치 않은 시스템 충돌로부터 복구하는 과정을 자동화하여 개발 생산성을 향상시킬 수 있습니다.
원문을 불러오는 중...
댓글
GitHub Discussions