← 목록
기타 2026-06-28 4KB 읽기 4분

세션 재부팅 복구 도구 (crowny-revive.sh)

개요

재부팅으로 멈춘 ~30개 Claude Code 터미널 세션을, 이미 복원돼 떠 있는 창 그 자리에서 되살렸다. 새 창을 여는 게 아니라, 각 창의 스크롤백(직전 작업 전체 기록)을 스냅샷으로 저장한 뒤 같은 창에서 claude를 다시 띄워 그 스냅샷을 읽고 작업을 이어가게 했다.

상황

  • macOS Terminal은 재부팅 후 창을 스크롤백째 복원하지만 안의 claude 프로세스는 죽는다.
  • 죽은 창은 제목에 ✳ <작업명>(claude가 설정한 제목)이 남아있고, 프로세스는 login,-zsh만.
  • ~/.claude/projects에 대화 transcript(.jsonl)가 거의 없어 claude --continue로는 복원 불가.
  • 대부분 세션은 홈(/Users/ef)에서 실행(절대경로로 여러 repo 작업). 죽은 셸도 홈에서 새로 시작됨.
→ 그래서 cd 대부분 불필요. 예외(banner cwd 비-홈)만 cd: crowny-aimed, CrownyOS, CrownyDoc.

무엇을 했나

  1. 45개 창 중 죽은 claude 작업창 21개 식별(제목 있음 + claude 프로세스 없음).
- 살아있는 claude 창(2528/3140/92/117/1321~1335)·이 세션(116)·빈 셸(터미널)은 제외.
  1. 21개 전부 스크롤백 스냅샷 저장 → ~/.claude/knowledge/revive-snapshots/winNN-<제목>.txt.
  2. 각 창에 재개 프롬프트 파일 생성 후, 같은 탭에서
claude "$(cat .prompt-winNN.txt)" 실행(escape 회피 위해 프롬프트를 파일로). - 프롬프트: "재부팅 중단 → 스냅샷 읽고 → CLAUDE.md 확인 → 하던 작업 이어서 완료, /크라우니코드 규칙".
  1. 21/21 claude 부팅 확인. 스폿체크: 각 claude가 스냅샷 읽고 멈춘 지점 파악 후 작업 재개.

관련 파일

  • 도구: ~/.claude/scripts/crowny-revive.sh (scan / go [id...])
  • 스냅샷: ~/.claude/knowledge/revive-snapshots/
  • 메커니즘 핵심: Terminal AppleScript do script "..." in selected tab of (first window whose id is N)
= 지정 창에 키입력 전송. get history of selected tab = 스크롤백 덤프.

재사용 (다음 재부팅 시)

bash~/.claude/scripts/crowny-revive.sh scan   # 죽은 작업창 목록
~/.claude/scripts/crowny-revive.sh go     # 전부 복구(스냅샷 저장 + 같은 창 재개)

2차 — 누락 세션 복구 + 도구 개선 (같은 날)

1차(✳ 제목 21개)에서 놓친 6개 우선 세션을 복구하며 누락 원인 2가지를 찾아 도구를 고쳤다.

왜 놓쳤나

  • 제목 리셋: 재부팅 시 일부 창은 ✳<작업명> 제목 보존, 일부는 이중복원되며 제목이 기본값 터미널로 리셋. 1차 도구의 "제목≠터미널" 필터가 이들을 건너뜀.
  • 창 닫힘: 일부 세션은 창 자체가 안 열림(스크롤백 없음).

도구 개선 (crowny-revive.sh detect)

  • 제목 의존 제거 → 스크롤백 UI 마커 기반 탐지: claude 프로세스 없음 + 스크롤백에 ▘▘·⏵⏵·accept edits on·auto mode on·agents done·Using Opus|Sonnet|Haiku → 죽은 claude창. 제목 리셋돼도 잡음.
  • scan은 제목 리셋창의 주제를 스크롤백 ◯◼◻/❯ 마지막 라인에서 추정 표시.

복구한 6개 우선 세션

대상처리
에덴고win93 죽음(제목리셋) → 그자리 복구, cd crowny-edengo
프랍트레이딩분석win104 죽음(crowny-play/한선씨/프랍볼드.한선) → 그자리 복구
음악스트리밍창닫힘 → 새창 cd crowny-music (메모리 project_crowny_music)
크라우니압축도구창닫힘 → 새창 cd crowny-compressor (메모리 project_crowny_compressor_ccp)
KPS트레이딩도구창닫힘(만들기) → 새창 cd crowny-trader (메모리 project_kps_copytrader)
cowork/이선우win106(cowork)+win95/90/125(이선우) 전부 1차에서 생존·복구됨
남은 제목리셋 죽은창(win114 한선씨대치감사·win91 CrownyOS노드·win119 신앙상담·win111/113/108/109/99/118 중단/주제미상)은 우선순위 밖이라 보류 → crowny-revive.sh go <id>로 선택 복구.

잔여 이슈

  • 비-홈 프로젝트 디렉토리(cd한 창: aimed/CrownyOS/CrownyDoc)는 홈 스냅샷 첫 읽기에 권한 승인(1) 1회 필요.
  • z-order 인덱스는 불안정 → 반드시 window id로 지정(이 도구는 id 사용).
  • transcript 영속이 안 되는 환경이라 컨텍스트 복원은 "스크롤백 스냅샷" 기반(완전 동일 복원은 아님, 작업 이어가기엔 충분).