Skip to main content

긴 대화는 친절해 보이지만, Claude Code에서의 "긴 세션"은 종종 정확도를 떨어뜨리고 비용과 지연을 올립니다. 컨텍스트 윈도우는 모델의 작업 기억이고, 시스템 지침·대화 히스토리·도구 출력·검색 결과·응답까지 모두 같은 공간을 경쟁합니다.1 그래서 대화를 계속 쌓는 방식은, 결국 중요한 정보가 밀려나거나(누락/잘림) "있긴 있는데 못 쓰는" 상태(주의 분산, lost-in-the-middle)에 빠지기 쉽습니다.46

이 챕터의 목표는 단순합니다. 컨텍스트 부패(context rot)와 컨텍스트 비대화(context bloat)의 징후를 빠르게 감지하고, /clear로 재시작하거나 /compact로 압축하고, 애초에 작업을 세션 단위로 쪼개서 품질을 일정하게 유지하는 것입니다.65

컨텍스트가 길어질수록 '느려지고, 흔들리는' 이유

컨텍스트 윈도우 제한은 "토큰이 넘으면 에러" 같은 단순한 문제만이 아닙니다. 실제로는 에러가 나기 전부터 다음 현상이 먼저 나타납니다.

첫째, 길어진 입력은 계산량과 지연을 키웁니다. 모델이 더 긴 시퀀스를 처리할수록 비용과 지연, 타임아웃 리스크가 함께 올라가며, 운영팀은 토큰 예산을 CPU/메모리 예산처럼 다뤄야 합니다.1 실험 기반 글에서도 컨텍스트가 특정 지점에 가까워지면 응답 시간이 급격히 튀는 구간이 관찰됩니다.2

둘째, "긴 컨텍스트 = 더 똑똑함"이 아닙니다. 길이가 커질수록 모델이 중요한 단서를 제대로 집어 쓰지 못하는 경향이 있고, 특히 중간에 묻힌 정보가 약해지는 문제가 자주 보고됩니다.46

셋째, 에이전트형 워크플로에서는 도구 출력이 컨텍스트를 가장 빠르게 태웁니다. 파일 여러 개를 읽고, grep 결과를 쌓고, 테스트 로그를 그대로 누적하면, 몇 번의 도구 호출만으로도 작업 공간이 "데이터 더미"로 바뀝니다.1

여기서 핵심 결론은 하나입니다.

긴 대화가 답이 아니라, 짧고 선명한 세션이 답이다.

컨텍스트 부패/블로트의 징후: "지금 리부트할 타이밍"을 잡아라

컨텍스트 관리에서 가장 어려운 건 명령을 외우는 게 아니라, 리부트 타이밍을 감으로 버티지 않는 것입니다. 아래 징후가 보이면, '더 설명'이 아니라 '컨텍스트 정리'가 먼저입니다.65

  • 같은 제약을 반복해서 말했는데도, Claude가 계속 무시하거나 반대로 행동한다.1

  • 이미 확인한 파일을 다시 읽고 또 읽으며, 계획이 원점으로 돌아가는 느낌이 든다.19

  • 수정 범위가 커지지 않았는데도 응답이 점점 장황해지고, 결론이 흐려진다(주의 분산).[^^6]

  • 테스트 로그/스택트레이스/검색 결과 같은 "원자료"가 대화 안에 산처럼 쌓여 있다.1

  • auto-compact가 애매한 타이밍에 터지면서, 중요한 디테일이 요약에서 사라진다.11

이런 상태에서 "조금만 더"를 하면, 대부분은 더 꼬입니다. 다음 섹션부터는 이때 쓸 수 있는 두 가지 리셋 버튼(/clear와 /compact)을 구분해 봅니다.

/clear: 완전 리부트(작업 단위 종료용)

/clear는 대화 히스토리를 완전히 지우고 새 세션처럼 시작합니다. 별도의 요약도 남기지 않기 때문에, 컨텍스트 공간을 가장 크게 회복합니다.1115

/clear가 가장 강력한 순간은 "문제 해결이 아니라 문제 전환"입니다. 예를 들어, 인증 버그를 고치다가 갑자기 UI 작업으로 넘어가면, 방금까지의 대화는 거의 전부 소음이 됩니다. 이때 /compact로 요약을 남기면, 소음을 압축해서 들고 가는 셈이 될 수 있습니다.11

실전에서는 /clear를 작업 단위 경계로 사용합니다.

  • 버그 수정 1건 완료 → /clear

  • PR 하나 준비 완료 → /clear

  • 전혀 다른 모듈로 이동 → /clear

단, 완전 리부트는 "아무 것도 남지 않는" 것이 단점입니다. 그래서 /clear 직전에 남겨야 하는 최소한의 상태가 있습니다.

첫째, 현재 브랜치에서 바뀐 파일 목록입니다. 둘째, 어떤 테스트가 왜 실패했는지(혹은 무엇으로 검증 완료했는지)입니다. 셋째, 다음 세션에서 이어갈 다음 행동입니다. 이 셋만 있으면, 대화 히스토리가 없어도 다시 달릴 수 있습니다.

/compact: 체크포인트 압축(같은 작업을 이어갈 때)

/compact는 세션을 끝내지 않고, 지금까지의 대화를 요약(압축)한 상태로 재시작하는 명령입니다. 도구 출력(파일 읽기/grep/명령 출력 등)처럼 토큰을 많이 먹는 덩어리를 정리하고, 작업의 핵심만 남기게 설계되어 있습니다.11

여기서 중요한 차이를 하나만 기억하면 됩니다.

  • /compact는 기억을 남긴다(요약)

  • /clear는 기억을 지운다(초기화)

즉, 같은 작업을 계속하는데 컨텍스트가 무거워졌다면 /compact, 작업을 끝내고 다른 일로 간다면 /clear가 기본값입니다.1115

auto-compact를 기다리지 말고, 수동으로 '좋은 지점'에서 압축하기

자동 압축(auto-compact)은 컨텍스트가 임계치에 가까워졌을 때 시스템이 판단해 실행될 수 있는데, 이 타이밍이 항상 작업 흐름의 "좋은 끊김"과 일치하지는 않습니다.11 실제 사용자들도 자동 압축이 중간에 터지면 모델이 다시 헤매는 사례를 자주 이야기합니다.1219

그래서 권장되는 습관은 하나입니다.

압축은 "마무리 지점"에서 내가 건다.

예를 들어,

  • 원인 분석(탐색) 끝

  • 해결 방향(계획) 확정

  • 1차 수정 + 테스트 실패 확인까지 끝

이런 지점에서 /compact를 걸면, 요약에 담아야 할 정보가 명확해집니다.

/compact에 '무엇을 남길지' 지시하라(Compact Prompt)

요약은 본질적으로 손실 압축입니다. 무엇을 남길지 지정하지 않으면, "디버깅을 진행했고 몇 파일을 수정했다" 같은 뭉뚱그린 요약이 남아 다음 스텝에서 다시 파일을 전부 재탐색하게 됩니다.11

그래서 /compact는 보통 이렇게 씁니다.

/compact 다음을 반드시 남겨줘:
1) 수정한 파일 경로와 변경 요약
2) 현재 실패 중인 테스트/에러 메시지 원문(가능하면 1~3줄)
3) 원인 가설과 반증/확인한 것
4) 다음에 바로 할 명령 1~3개

이 방식은 "대화 내용을 요약해 주세요"가 아니라, 다음 세션을 위한 인수인계 문서를 만드는 방식입니다.12

세션 분리: '한 세션 = 한 목표'가 가장 싸고 정확하다

컨텍스트 비대화의 가장 흔한 원인은 사실 기술이 아니라 습관입니다. 하나의 세션을 너무 오래, 너무 다양한 목적에 재사용하는 겁니다.5 그러면 모델은 지금 문제를 풀 때도 과거의 잡다한 맥락을 함께 읽어야 하고, 그만큼 집중력이 떨어집니다.6

세션 분리의 기준은 간단합니다.

  • 사용자 의도가 바뀌면 세션도 바꾼다.

예를 들어 "버그 수정"과 "리팩터링"은 인간에게는 이어진 작업처럼 느껴져도, Claude Code에는 다른 목표 세트일 때가 많습니다. 버그 수정은 재현/원인/최소 수정이 핵심이고, 리팩터링은 변경 범위 통제/회귀 테스트/코드 구조가 핵심입니다. 목표가 바뀌면 필요한 컨텍스트도 바뀝니다.

실무 팁으로는 세션을 끊기 전에 /rename으로 이름을 붙이고, 나중에 /resume로 다시 여는 방식이 유용합니다.15 이렇게 하면 "세션을 버리는" 부담이 줄고, 오히려 더 자주 끊을 수 있습니다.

두 번 수정 규칙: 컨텍스트를 '기능'과 '품질'로 분리하라

긴 세션이 망가지는 대표적인 패턴은 이렇습니다.

  1. 탐색과 실험이 길어지며 컨텍스트가 더러워진다.

  2. 그 상태에서 리팩터링/정리까지 한 번에 하려다가, Claude가 스스로 만든 흔적(임시 코드, 실패한 시도)을 제대로 지우지 못한다.19

이를 막기 위한 실전 규칙이 두 번 수정 규칙입니다.

첫 번째 수정은 "기능/버그" 자체를 최소 변경으로 해결하는 데만 집중합니다. 이때 목표는 깔끔한 코드가 아니라, 재현 케이스가 사라지고 테스트가 통과하는 상태를 만드는 것입니다.

두 번째 수정은 "품질"을 위한 세션으로 분리합니다. 첫 세션에서 필요한 결과물은 이미 확보했으니, 두 번째 세션은 컨텍스트를 새로 시작(/clear)하거나 최소한 정리(/compact)한 뒤, 코드 정리·중복 제거·이름 개선·주석/문서·추가 테스트 같은 일을 수행합니다.

이 규칙이 주는 이점은 명확합니다. 첫 세션은 탐색 로그와 시행착오를 마음껏 쌓아도 됩니다. 대신 그 더러움은 두 번째 세션으로 가져가지 않습니다. 결국 '정답을 찾는 컨텍스트'와 '코드를 다듬는 컨텍스트'를 분리하게 됩니다.5

30~60분 운영 루틴: 짧고 선명하게 끝내는 세션 템플릿

컨텍스트 관리를 습관으로 만들려면, "언제 끊을지"가 자동화되어야 합니다. 아래는 실전에서 잘 작동하는 템플릿입니다.

1) 시작 3분: 목표와 검증만 고정

세션 시작 시점에 딱 두 가지만 못 박습니다.

  • 이번 세션의 목표(한 문장)

  • 검증 방법(실행할 테스트/명령)

컨텍스트가 길어질수록 지침과 데이터가 경쟁한다는 점을 생각하면, 이 두 문장은 세션 끝까지 살아남아야 할 "우선순위 1등 토큰"입니다.1

2) 중간 20~40분: 탐색 로그가 쌓이면 '좋은 끊김'을 만든다

파일 탐색, grep 결과, 로그가 쌓이기 시작하면 '마무리 지점'을 의도적으로 만듭니다. 예를 들어 "원인 후보 2개로 줄이기", "재현 테스트 만들기" 같은 중간 산출물을 만들고 끊습니다.

3) 40~60분: 압축 또는 초기화로 다음 스텝 준비

  • 같은 목표를 이어가야 하면 /compact

  • 목표가 끝났거나 바뀌면 /clear

여기서 중요한 건 "세션을 끊는 결정"이 아니라, 다음 세션이 바로 달릴 수 있게 최소 정보를 남기는 결정입니다. /compact를 쓰든, /clear 전에 짧게 메모를 남기든, 다음 행동 1~3개가 보이게 만들어두면 속도가 유지됩니다.11

정리: 컨텍스트는 디스크가 아니라 '작업대'다

컨텍스트 윈도우는 저장소가 아닙니다. 작업대입니다. 작업대에 공구와 부품이 너무 많이 올라오면, 손이 느려지고 실수가 늘어납니다.6

그래서 이 챕터의 결론은 기술이 아니라 운영 원칙입니다.

  • 다른 일로 넘어가면 /clear

  • 같은 일을 이어가되 무거워지면 /compact

  • 세션은 한 목표에만 쓰고, 목표가 바뀌면 세션을 바꾼다

  • 두 번 수정 규칙으로 '정답 찾기'와 '품질 다듬기'를 분리한다

다음 챕터에서는 이 원칙을 "일상 개발 워크플로 10선"으로 내려, 버그 수정·리팩터·테스트·문서·리뷰에서 어떤 세션 구조가 가장 빠른지 구체적인 레시피로 정리합니다.

참고

1Navigating llm context window limitations in modern LLM systems

2Understanding LLM performance degradation: a deep dive into Context Window limits

4Context Window Limitations: Maximizing Information Usage in LLMs

5LLM Context Management: How to Improve Performance and Lower Costs

6Context window overflow: What it is & how to fix it

11Claude Code Compact: The Complete Guide to /compact, Compact Prompt, and Micro Compact

12Context Compaction Research: Claude Code, Codex CLI, OpenCode, Amp · GitHub

15Claude Code Commands Cheat Sheet — Full Reference

19Claude Code Gotchas | DoltHub Blog

책 목록

Claude Code 실전 활용법: 설치부터 자동화·MCP·운영까지

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기