Claude Code /goal·세션 관리: 하루 이상 걸리는 작업을 AI와 끊김 없이 이어가는 법
Claude Code를 쓰다 보면 어느 순간 이런 답답함이 찾아옵니다. "지금 Claude가 뭘 하고 있는 건지 도대체 알 수가 없네." 파일을 읽고, 코드를 수정하고, 터미널 명령어를 실행하는데 전체 흐름이 한눈에 안 들어오죠. 저도 처음엔 매번 채팅창 스크롤을 올려 가며 "아까 뭘 했더라" 추적하는 게 일이었습니다. 더 큰 문제는 어제 하다 만 작업을 오늘 이어가려면 "어제 UserService까지 변환했고, 테스트는 여기서 막혔고…"를 처음부터 다시 설명해야 한다는 거였고요.
Claude Code는 AI 에이전트가 실제 터미널과 코드베이스에 직접 접근해 작업을 수행하는 개발 도구입니다. 최근 업데이트에서 Agent View 개편과 함께 /goal, 세션(Session) 관리 기능이 추가됐는데, 이 변화의 핵심은 AI가 지금 무엇을 향해 가고 있는지를 개발자가 명확히 보고 제어할 수 있게 됐다는 것입니다. 에이전트를 다루는 패러다임 자체가 바뀐 느낌이에요.
이 글을 읽고 나면, 며칠에 걸친 마이그레이션이나 대규모 리팩토링 작업을 Claude와 세션을 끊지 않고 체계적으로 완주하는 방법을 알 수 있습니다.
핵심 개념
Claude Code가 작업하는 구조, Agent View로 보기
이전에는 Claude Code의 작업 과정이 채팅 로그처럼 위아래로 흘러가는 텍스트뿐이었습니다. Agent View는 현재 실행 중인 에이전트, 서브에이전트(subagent), 각 에이전트가 맡은 역할과 진행 상태를 한 화면에서 보여주는 패널입니다.
Claude Code는 복잡한 작업을 수행할 때 오케스트레이터 에이전트가 여러 서브에이전트를 생성해 병렬로 처리합니다. Agent View는 이 구조를 트리 형태로 시각화해줍니다.
[오케스트레이터]
├── [서브에이전트 A] src/api 디렉토리 스캔 ✓ 완료
├── [서브에이전트 B] src/components 분석 ⏳ 진행 중
└── [서브에이전트 C] 테스트 파일 검증 ⏸ 대기 중오케스트레이터(Orchestrator): 전체 작업을 설계하고 서브에이전트에게 세부 태스크를 위임하는 상위 에이전트. 프로젝트 매니저처럼 "큰 그림"을 보면서 각 에이전트에게 일을 나눠줍니다.
이 구조 덕분에 특정 에이전트가 예상보다 오래 걸리거나 이상한 방향으로 가고 있을 때 중간에 개입해서 조정할 수 있습니다. 저도 Agent View 없이 작업할 때는 30분이 지나도록 Claude가 엉뚱한 파일을 계속 읽고 있다는 걸 몰랐다가 나중에 전부 롤백한 경험이 있었는데, 이제는 그런 상황이 훨씬 줄었습니다.
/goal: 에이전트에게 방향을 명확히 주는 법
/goal은 세션 전체를 관통하는 목표를 명시적으로 선언하는 명령어입니다. 단순히 "이 파일 수정해줘" 수준의 일회성 지시와 다르게, /goal로 선언된 목표는 세션이 유지되는 동안 Claude가 모든 판단의 기준으로 삼습니다.
/goal 결제 모듈의 단위 테스트 커버리지를 80% 이상으로 끌어올리고, 기존 통합 테스트가 깨지지 않도록 한다이렇게 선언하면 Claude는 이후 대화에서 "이 변경이 목표에 기여하는가?"를 스스로 판단하게 됩니다. 테스트 작성 중에 관련 없는 리팩토링 요청이 들어오면 "현재 목표와 직접적인 연관이 없는 작업입니다. 진행할까요?" 하고 먼저 확인하는 식으로 동작해요.
솔직히 처음에 "코드 품질을 향상시킨다"라고 너무 막연하게 써놨다가 Claude가 테스트랑은 전혀 관계없는 네이밍 정리 작업을 한참 하고 있는 걸 발견한 적이 있습니다. /goal도 목표가 모호하면 Claude가 무엇이든 그럴듯하게 정당화할 수 있어서, 처음부터 구체적으로 쓰는 게 중요합니다.
왜 유용한가: 대화가 길어지면 초기 의도에서 점점 벗어납니다.
/goal은 Claude가 맥락을 잃지 않도록 잡아주는 닻 역할을 합니다.
세션: 어제 하던 작업 그대로 이어가기
세션 기능은 작업 상태와 대화 컨텍스트를 저장해뒀다가 나중에 다시 불러올 수 있게 합니다. 기존에는 Claude Code를 닫으면 모든 컨텍스트가 사라졌는데, 이제는 세션 단위로 저장하고 이어받을 수 있습니다.
# 세션 목록 확인
/session list
# 특정 세션 재개
/session resume auth-migration-day1
# 현재 세션 저장
/session save "결제 모듈 테스트 작업"세션에는 /goal로 선언한 목표, 지금까지 변경한 파일 목록, 에이전트가 수집한 코드베이스 컨텍스트가 함께 저장됩니다. 다음 날 작업을 재개할 때 "어제 어디까지 했더라"를 처음부터 다시 설명하지 않아도 되는 거죠.
실전 적용
레거시 마이그레이션: 사흘짜리 백엔드 작업을 끊김 없이 이어가기
팀에서 오래된 Express.js 코드를 NestJS로 마이그레이션한다고 가정해봅니다. 수일에 걸쳐 진행되는 작업이라 세션 유지가 핵심인 상황입니다.
# Day 1: 목표 선언과 세션 시작
/goal Express.js 기반 auth 모듈을 NestJS로 마이그레이션한다.
기존 API 인터페이스는 유지하고, 각 단계마다 기존 테스트가 통과하는 상태를 유지한다.
# ... 코드베이스 분석, UserService 변환 작업 진행 ...
# 퇴근 전 세션 저장
/session save "auth-module-migration-day1"# Day 2: 세션 재개
/session resume auth-module-migration-day1Claude 응답: "어제 UserService 변환까지 완료했습니다. 오늘은 AuthGuard 작업을 이어가겠습니다."
Claude가 전날의 컨텍스트, 목표, 변경 사항을 그대로 인식하고 이어갑니다.
| 단계 | 기존 방식 | 세션 활용 방식 |
|---|---|---|
| 컨텍스트 복구 | 어제 대화를 다시 요약해서 설명 | /session resume으로 즉시 복구 |
| 목표 유지 | 매번 지시마다 제약 조건 재언급 | /goal이 자동으로 판단 기준 역할 |
| 진행 추적 | 수동으로 체크리스트 관리 | Agent View에서 실시간 확인 |
프론트엔드 컴포넌트 리팩토링: 멀티 에이전트 작업 모니터링하기
백엔드만의 이야기가 아닙니다. 프론트엔드에서도 꽤 유용한 상황이 있습니다. 예를 들어 레거시 클래스형 컴포넌트를 함수형으로 전환하는 작업처럼, 범위가 넓고 패턴이 반복적인 경우가 딱 맞습니다.
/goal src/components 디렉토리 내 클래스형 React 컴포넌트를 함수형으로 전환한다.
각 컴포넌트마다 기존 스냅샷 테스트가 통과하는 상태를 유지하고,
useState/useEffect 패턴을 일관되게 적용한다.이 목표를 선언하면 Claude는 자동으로 작업을 분할합니다. Agent View에서는 다음처럼 표시됩니다.
[오케스트레이터] 컴포넌트 전환 계획 수립
├── [서브에이전트 A] src/components/ui 디렉토리 스캔 및 변환
├── [서브에이전트 B] src/components/forms 디렉토리 스캔 및 변환
└── [서브에이전트 C] 변환된 컴포넌트 스냅샷 테스트 검증Agent View 활용 팁: 각 서브에이전트의 상태(실행 중 / 완료 / 대기)와 현재 처리 중인 파일을 실시간으로 확인할 수 있습니다. 트리 구조가 처음에는 생소할 수 있는데, 오케스트레이터 노드부터 따라가면서 파악하면 금방 익숙해집니다.
장단점 분석
장점
| 항목 | 내용 |
|---|---|
| 작업 가시성 향상 | 에이전트가 무엇을 하는지 실시간으로 파악 가능 |
| 컨텍스트 지속성 | 세션 재개 시 코드베이스 이해를 처음부터 다시 쌓지 않아도 됨 |
| 목표 일관성 | /goal이 있어 작업 중 지시가 엇나가는 현상 감소 |
| 병렬 작업 제어 | 멀티 에이전트 작업을 중간에 모니터링하고 개입 가능 |
| 작업 재현성 | 세션 로그로 "어떻게 이렇게 됐지?"를 역추적 가능 |
단점 및 주의사항
| 항목 | 내용 | 대응 방안 |
|---|---|---|
| 세션 비대화 | 세션이 길어지면 컨텍스트 토큰이 증가해 응답 품질 저하 가능 | 기능 단위나 하루 단위로 세션을 분리하는 것을 권장 |
/goal 모호성 |
목표를 추상적으로 선언하면 Claude가 엉뚱한 판단을 할 수 있음 | 구체적인 성공 기준(커버리지 수치, 대상 디렉토리 등)을 포함하는 것이 좋음 |
| Agent View 러닝 커브 | 멀티 에이전트 구조가 처음에는 어떤 에이전트를 봐야 할지 헷갈릴 수 있음 | 오케스트레이터 노드부터 따라가면서 트리 구조를 파악해볼 수 있음 |
토큰 컨텍스트(Token Context): LLM이 한 번에 처리할 수 있는 텍스트 양의 한계. 세션이 길어질수록 이 한계에 가까워지며, 오래된 정보를 "잊기" 시작합니다.
실무에서 가장 흔한 실수
첫 번째는 /goal을 너무 막연하게 선언하는 겁니다. 저도 처음에 "전체 코드베이스의 코드 품질을 향상시킨다"라고 써놨다가, Claude가 테스트 작성은 손도 안 대고 변수명 정리를 한참 하고 있는 걸 발견한 적 있습니다. "무엇이든 품질 향상이다"라고 해석해버리는 거예요. "src/payment 모듈의 단위 테스트 커버리지를 현재 42%에서 80% 이상으로 올린다"처럼 범위와 수치를 명시하는 게 훨씬 효과적입니다.
두 번째는 세션을 무한정 이어가는 것입니다. 일주일치 작업을 한 세션에 누적하면 컨텍스트가 뒤섞이고, Claude의 응답 품질도 눈에 띄게 떨어집니다. 저는 이 문제를 겪고 나서 PR 단위로 세션을 나누는 습관을 들였는데, 관리가 훨씬 깔끔해졌습니다.
세 번째는 Agent View를 열어만 두고 실제로 확인하지 않는 겁니다. 멀티 에이전트 작업 중에 서브에이전트 하나가 잘못된 디렉토리를 계속 읽고 있었는데, 모르고 있다가 나중에 전부 롤백한 경험이 있습니다. 큰 작업은 중간중간 Agent View에서 에이전트 상태를 확인해보는 것을 권장합니다. 5분마다 볼 필요는 없어도, 10~15분에 한 번 정도는 트리 구조를 훑어보는 게 도움이 됩니다.
마치며
Claude Code의 Agent View, /goal, 세션 관리는 AI 코딩 어시스턴트를 "일회성 질문 도구"에서 "장기 작업 파트너"로 전환하는 전환점입니다. 며칠에 걸친 복잡한 작업을 AI와 함께 체계적으로 진행하는 것이 가능해졌고, 그 과정에서 무슨 일이 일어나고 있는지도 이제는 한눈에 파악할 수 있습니다.
지금 바로 시작해볼 수 있는 3단계:
- Claude Code를 최신 버전으로 업데이트해볼 수 있습니다.
npm install -g @anthropic-ai/claude-code(pnpm 환경이라면pnpm add -g @anthropic-ai/claude-code) 명령어로 설치 후, Agent View 패널이 표시되는지 확인해보시면 됩니다. - 가장 익숙한 프로젝트에서
/goal을 한 번 써보시면 좋습니다. 예를 들어 "현재 프로젝트에서console.log를 모두 찾아 적절한 logger로 교체하되, 기존 테스트가 통과하는 상태를 유지한다"처럼 범위가 명확한 목표로 시작하면 체감이 빠릅니다. - 작업 후
/session save <이름>으로 세션을 저장해두고, 다음 날/session resume으로 이어가보시면 됩니다. 컨텍스트가 그대로 유지된 채 작업이 이어지는 경험이 꽤 인상적으로 느껴질 겁니다.