긴 세션 조율하기
Claude에게 빠른 작업을 처리하도록 프롬프트하는 것은 쉽습니다. 요청하면 작업이 수행되고, 결과를 확인하면 됩니다. 하지만 긴 작업은 완전히 다른 게임입니다. 수십 개의 파일에 걸친 리팩터링이나 새로운 기능 구축에는 몇 시간이 걸릴 수 있습니다. 그리고 그 과정에서 Claude를 조율해야 하는 일이 많아질수록 작업은 더 오래 끌게 됩니다.
다행히 이런 긴 세션 동안 Claude를 도울 수 있는 도구가 많이 있습니다. 결국 핵심은 두 가지 습관으로 귀결됩니다: Claude가 시작하기 전에 작업 범위를 정하는 것, 그리고 실행되는 동안 방향을 조율하는 것입니다. 이 두 가지를 함께 살펴보겠습니다.
플랜 모드로 먼저 작업 범위 정하기
Claude가 코드를 한 줄이라도 작성하기 전에, 먼저 계획을 세우도록 하세요. 플랜 모드에서 Claude는 소스 파일을 수정하지 않고 조사를 수행합니다. 코드를 읽고, 무엇을 변경해야 하는지 파악한 다음, 검토할 계획을 제시합니다.
계획을 받으면 실제로 읽어보세요. 대충 훑어보지 마세요. 계획이 철저할수록 Claude가 실행을 시작한 후 마주치게 될 놀라운 일이 줄어듭니다. 뭔가 빠졌거나 잘못됐다면, 원하는 부분을 추가해 달라고 Claude에게 요청하면 됩니다. 계획을 반복해서 다듬는 것이 Claude를 그냥 실행시켜 놓고 잘되길 바라다가 나중에 엉망이 된 것을 정리하는 것보다 훨씬 빠릅니다.
Claude가 작업하는 동안 방향 조율하기
Claude가 실행되기 시작하면, 올바른 방향을 유지할 수 있는 몇 가지 방법이 있습니다. 첫 번째는 압축(compaction)입니다.
Compact
Compact는 대화를 요약하고, 그 요약을 새로운 컨텍스트로 사용하며, 이전 메시지를 삭제합니다. 이렇게 하면 컨텍스트 창의 공간이 확보되어 Claude가 계속 작업을 이어갈 수 있습니다. 위험한 점은 요약 과정에서 중요한 내용이 누락되어 Claude가 방향을 잃을 수 있다는 것입니다.
그러니 /compact를 단독으로 실행하지 마세요. 명령어 뒤에 지시사항을 추가해서 Claude에게 요약 방법을 알려주세요. 예를 들어, 얼마 전에 디버깅을 끝냈고 이제 일부 API 변경 사항에만 관심이 있다면, 그렇게 말해주세요:
/compact Focus on the --version flag implementation명령어 뒤에 작성하는 모든 내용이 요약이 유지하는 내용을 결정합니다. 그것이 바로 컨텍스트를 위한 여러분의 조향 장치입니다.
Rewind
Claude가 잘못된 방향으로 가고 있을 때, 프롬프트로 다시 되돌릴 필요는 없습니다. Rewind는 마지막 체크포인트로 되돌려줍니다. 모든 사용자 프롬프트는 되돌릴 수 있는 체크포인트를 생성합니다. 메뉴를 열려면 빈 프롬프트에서 esc를 두 번 누르세요.
rewind 메뉴에서 몇 가지 옵션을 사용할 수 있습니다:
- 코드와 대화 복원 - 둘 다 함께 되돌립니다.
- 대화 복원 - 채팅만 되돌립니다.
- 코드 복원 - 파일만 되돌립니다.
- 여기서부터 요약 - 체크포인트 이후의 모든 내용을 요약합니다. 부수적인 대화를 나눴고 공간을 좀 확보하고 싶을 때 유용합니다.
- 여기까지 요약 - 체크포인트 이전의 모든 내용을 요약합니다. 긴 설정 단계를 압축하고 싶지만 구현 부분은 그대로 유지하고 싶을 때 유용합니다.
Claude가 더 자율적으로 실행하도록 하기
지금까지는 여러분이 직접 관여해서 지켜보고 수정하는 것을 전제로 했습니다. 좀 더 자율적인 방식을 원한다면, goal과 loop가 있습니다.
Goal
Goal은 완료 조건을 설정합니다. "완료"가 어떤 모습인지 설명하면, 빠른 평가자가 그 조건이 충족되었음을 확인할 때까지 Claude는 여러 턴에 걸쳐 계속 작업합니다. 처음 끝났다고 생각하는 순간 바로 멈추지 않습니다.
예를 들면:
/goal all tests in src/billing pass, and the type checker reports zero errors취소하려면 /goal clear를 실행하세요. 한 가지 중요한 제약 조건이 있습니다: 평가자는 트랜스크립트만 읽습니다. 따라서 조건은 Claude가 실제로 생성하는 출력, 예를 들어 테스트 실행 결과 같은 것으로 확인할 수 있어야 합니다.
Loop
Loop는 턴 사이의 간격(고정 간격 또는 자체 조절 간격)으로 프롬프트를 실행합니다. CI 실행이나 배포 같은 외부 상태를 폴링하고, 상태가 변경되면 동작하도록 하는 데 사용하세요.
자체 조절 loop가 다음 실행을 기다리는 동안 중지하려면 esc를 누르세요. 고정 간격의 loop는 Claude에게 취소를 요청하거나 7일이 지날 때까지 계속 실행됩니다.
Worktree로 병렬 작업 실행하기
지금까지의 조향 비유는 한 대의 차에 하나의 조향 장치가 있다는 것을 전제로 합니다. 하지만 동일한 코드베이스에서 여러 에이전트를 실행할 때는, 한 대의 차에 두 개의 조향 장치를 두고 싶지 않을 것입니다. 그건 안전하지 않습니다. 두 개의 Claude 세션이 같은 파일을 두고 다투면 충돌이 발생합니다.
이때 worktree가 등장합니다. 세션들이 서로를 밟고 지나가는 대신, 각 세션은 독립적인 파일 트리를 갖게 됩니다.
각 에이전트가 자신만의 트리를 가지고 있기 때문에, 서로의 변경 사항을 덮어쓸 수 없습니다. 세션이 종료되면 깨끗한 worktree는 자동으로 제거됩니다.
알아두면 유용한 파일이 하나 있습니다. 저장소 루트에 있는 .worktreeinclude 파일은 각 worktree에 복사할, git에서 무시되는 파일 목록을 나열합니다. 이는 모든 worktree에 필요하지만 버전 관리에 커밋하고 싶지 않은 환경 변수 파일이나 로컬 설정 같은 것에 유용합니다.
정리하기
긴 Claude Code 세션을 다루는 것은 몇 가지 습관으로 귀결됩니다:
- 먼저 작업 범위를 정한 다음 조율하세요.
- 요약이 중요한 내용을 유지하도록 compaction을 지시하세요.
- Claude가 방향을 잃을 때 rewind 메뉴를 사용해 방향을 바로잡으세요.
- 단계보다 "완료"를 더 잘 설명할 수 있을 때는 goal을 설정하세요.
- worktree에서 병렬 작업을 실행하세요.
이렇게 하면, 모든 단계를 일일이 지켜보지 않고도 긴 실행을 믿고 맡길 수 있습니다.