본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 05. 10:02

Claude Code에서 세션 재개를 위한 자동 감지를 포기한 이유

요약

Claude Code의 세션 재개 기능을 구현하며 자동 감지 대신 사용자의 명시적 선언 방식(/tl)을 선택한 이유와 그 개선 과정을 다룹니다. 단순 로그 읽기를 넘어 인플라이트 메모와 사고 과정 저장을 통해 끊김 없는 작업 연속성을 확보하는 방법을 설명합니다.

핵심 포인트

  • 자동 감지 대신 명시적 명령어를 통한 세션 상속 구현
  • 인플라이트 메모를 통한 다음 단계 및 할 일 전달
  • Claude의 사고 과정(Thinking blocks) 저장을 통한 맥락 유지
  • 단순 로그 읽기에서 '작업의 연속성'으로 사용자 경험 혁신

저의 이전 기사에서 저는 Throughline을 출시했습니다. 이는 보통 컨텍스트 (Context)의 대부분을 차지하는 도구 I/O (Tool I/O)를 오프로드 (Offload)하는 도구입니다.

당시에는

저는 "애초에 그것을 감지할 조건이 없다"는 사실을 깨달았습니다.

접근 방식의 변경

제가 실패한 이유는 그것을 감지하려고 시도했기 때문입니다. 사용자가 직접 선언한다면, 감지는 불필요해집니다.

제가 만든 것은 /tl이라는 슬래시 커맨드 (Slash command)입니다. 사용자는 자신의 메모리를 다음 세션으로 넘기고 싶을 때만 이를 입력합니다. 명령어가 입력되면 해당 세션 ID가 handoff_batons라는 테이블에 기록됩니다. 바톤 (Baton)을 놓아둔다고 상상해 보세요.

다음 세션이 시작될 때, 지난 한 시간 이내에 바톤이 놓여 있었다면 해당 세션의 메모리를 상속받습니다. 그렇지 않다면 아무 작업도 수행하지 않고 새로운 세션으로 시작합니다.

이 원칙은 병렬 창 (Parallel windows)이나 VSCode 재시작이 "바톤이 놓이지 않는 한 오작동하지 않음"을 보장합니다.

명시적인 방식이 언뜻 보기에는 번거로워 보일 수 있지만, "실수로 상속받아 문제를 일으키는 것"이 훨씬 더 심각한 문제입니다. 오작동이 전혀 없는 것이 더 가치 있었습니다.

하지만, 이것만으로는 충분하지 않았습니다

바톤이 마련되면 다음 세션은 이전 세션의 대화 로그 (Conversation logs)를 읽을 수 있습니다. 하지만 실제로 사용해 본 결과, 그것은 "그저 로그를 읽는 것"에 불과하다는 느낌을 받았습니다.

과거의 로그를 읽는 AI와 중단된 시점부터 계속 이어가는 AI 사이에는 체감되는 경험의 차이가 존재합니다.

전자는 "좋습니다, 상황을 파악했습니다. 그럼 이제 무엇을 할까요?"라고 묻습니다. 후자는 "아까 하던 작업에 이어서, 다음으로 X를 확인해야 하죠?"라고 말하며 진행합니다.

그래서 여기에 두 가지를 추가했습니다.

인플라이트 메모 (In-flight memo). /tl이 입력되는 순간, 현재 실행 중인 Claude 스스로가 "다음 단계, 현재의 가설, 미결 이슈, 그리고 진행 중인 할 일(TODOs)"을 마크다운 (Markdown) 형식으로 작성하게 합니다. 이것이 바톤에 첨부됩니다.

사고 과정 저장 (Saving thinking). Claude의 확장된 사고 블록 (Extended thinking blocks)을 L3로 저장합니다. 다음 세션에 주입할 때, 마지막 턴의 사고 내용을 맨 상단에 배치합니다. 이전 Claude가 생각하던 내용이 다음 Claude에게 전달되는 것입니다.

그 결과, 다음 세션을 위해 주입된 텍스트는 다음과 같은 모습이 됩니다:

중단된 작업을 재개하고 있습니다.

[이전 Claude가 작성한 진행 중인 메모 (In-flight memo)]
...

"읽기"에서 "계속하기"로

이것은 경험의 느낌을 바꾸어 놓았습니다.

제가 /clear를 수행한 다음 새로운 세션을 시작하기 위해 /tl을 실행하면, 다음 Claude는 즉시 "좋습니다, 아까 하던 X에 대한 테스트 작성을 시작하겠습니다."라고 말하며 시작합니다. 이는 읽는 것이 아니라, 계속하는 것입니다.

사람 사이에서도 업무를 인수인계할 때, 상대방이 전체 로그를 읽게 하는 것보다 "다음에 할 일. 이유. 우려되는 점 한 가지"라고 적힌 메모를 전달하는 것이 더 빠릅니다. 이 경우도 마찬가지였습니다.

사실 저는 자동화를 원했습니다

오해는 받고 싶지 않지만, 제가 생각하는 이상적인 모습은 "백그라운드에서 자동으로 작동하는 것"입니다. 사용자가 명시적으로 무언가를 입력하게 만드는 것은 사실 타협안입니다.

이 경우, 저는 "감지할 수 없었기 때문에 명시적인 선언으로 우회(escape)한 것"입니다. 만약 VSCode 확장 프로그램의 source 문제가 해결된다면, 저는 다시 자동 감지로 돌아가고 싶고, 그렇게 할 것입니다. 그때까지는 단지 명시적인 바톤(baton)으로 이를 대체하고 있는 것뿐입니다.

하지만 타협안이라 할지라도 실질적인 해악은 거의 없습니다. 자동 감지를 사용했다면 어차피 /clear를 입력했을 것이고, 이제는 그것이 /tl로 대체되었을 뿐입니다. 키 입력 횟수는 동일하며, 저는 오작동을 제로(0)로 줄일 수 있었습니다.

"명시적인 것이 더 좋다"는 뜻이 아니라, "감지할 수 없었기에 선언하는 방식으로 결정했다"는 것이 솔직한 진실입니다.

Throughline은 npm에 v0.3.2 버전으로 게시되었습니다. Node.js 22.5+ 지원, 의존성 없음(zero dependencies), MIT 라이선스입니다.

Throughline — GitHub

npm install -g throughline
throughline install

관심이 있으시다면 한 번 살펴보시기 바랍니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0