CATEGORY

카테고리 (654)
AI (52)
Language & Specs (260)
FrameWork (36)
Library (20)
App (41)
Git (10)
Build & Dependency (2)
AWS (15)
DataBase (45)
OS (33)
Tool (17)
IT (120)
반응형
SEEMINGLY ONLINE

Seemingly
Online

이모저모 방방곡곡 두루두루 개발지식 저장소

RECENT POSTS

AI/Claude

클로드 코드 컨텍스트 관리 — compact와 clear 제대로 쓰는 법

반응형

클로드 코드에서 대화가 길어지면 초반에 시킨 지시를 슬슬 잊습니다. 컨텍스트가 꽉 차서 오래된 내용이 요약으로 뭉개졌기 때문입니다. 대응은 세 가지뿐입니다. /context로 무엇이 자리를 차지하는지 보고, 작업이 바뀌면 /clear로 비우고, 이어서 해야 하면 /compact 남길 내용으로 요약 방향을 직접 지정하는 것입니다. 그리고 오래 지켜야 할 규칙은 대화가 아니라 CLAUDE.md에 둬야 합니다. Claude Code v2.1.204 기준으로 정리합니다.

1. 컨텍스트에는 내가 친 말만 들어가지 않는다

먼저 오해부터 풀어야 합니다. 컨텍스트 창에는 내가 입력하기도 전에 이미 여러 가지가 올라가 있습니다.

  • 시스템 프롬프트 — 클로드 코드의 기본 지시. 화면에 안 보입니다.
  • CLAUDE.md — 프로젝트 규칙 파일.
  • 자동 메모리(MEMORY.md) — 지난 세션에서 클로드가 스스로 적어 둔 메모. 앞 200줄 또는 25KB 중 먼저 닿는 만큼만 올라갑니다.
  • 스킬 설명 목록 — 스킬 본문이 아니라 한 줄 설명만.
  • MCP 도구 이름 — 기본적으로 이름만 올라가고, 상세 명세는 실제로 쓸 때 불러옵니다.
  • 작업 환경 정보 — 작업 폴더, OS, 깃 브랜치·상태·최근 커밋.

그 위에 대화가 쌓이고, 클로드가 읽은 파일 내용과 명령 실행 결과가 전부 그대로 얹힙니다. 파일 하나 읽을 때마다 컨텍스트가 줄어드는 셈입니다. 체감상 "몇 마디 안 했는데 왜 벌써 차지?" 싶은 이유가 여기 있습니다.

2. 먼저 볼 것 — /context

추측하지 말고 /context를 치면 됩니다. 지금 무엇이 얼마나 차지하고 있는지 항목별로 보여 주고, 줄일 방법도 함께 제안합니다. 어떤 CLAUDE.md와 메모리 파일이 실제로 올라왔는지도 여기서 확인됩니다.

MCP 서버를 여러 개 붙였다면 /mcp로 서버별 비용을 따로 볼 수 있습니다. 예전엔 MCP 도구 명세가 컨텍스트를 크게 먹었지만, 지금은 도구 이름만 올라가고 명세는 필요할 때 불러오는 방식이 기본이라 부담이 줄었습니다.

💡 메모리 파일을 열어 고치려면 /memory를 씁니다. /context로 "메모리가 생각보다 크다"는 걸 확인하고 /memory로 정리하는 흐름입니다.

3. /clear와 /compact — 언제 뭘 쓰나

둘을 헷갈리면 손해를 봅니다. 기준은 앞의 대화가 다음 작업에 필요한가 하나입니다.

명령 하는 일 쓸 때
/clear 대화를 통째로 비운다 관련 없는 작업으로 넘어갈 때
/compact 대화를 요약본으로 바꾼다 같은 작업을 이어서 해야 할 때

공식 문서가 /clear를 권하는 이유는 단순합니다. 지난 작업의 대화가 남아 있으면 다음 작업에 필요한 파일이 들어갈 자리를 잡아먹고, 매 메시지마다 토큰 비용도 계속 나갑니다. 버그 하나 고치고 전혀 다른 기능으로 넘어간다면 아까워 말고 비우는 게 이득입니다.

/compact는 그냥 치지 말고 방향을 주자

/compact를 인자 없이 치면 무엇이 중요한지 클로드가 알아서 판단합니다. 대신 이렇게 방향을 주면 원하는 걸 남길 수 있습니다.

/compact focus on the auth bug fix

/compact API 응답 형식 결정사항과 남은 할 일만 남겨줘

긴 새 작업을 시작하기 직전에 방향을 준 /compact를 한 번 돌리는 습관이 좋습니다. 자동 압축이 알아서 하도록 두는 것보다 정확합니다.

4. 압축하면 무엇이 살아남나 (중요)

여기가 실무에서 제일 중요한 부분입니다. 내 지시가 어디에 적혀 있었느냐에 따라 압축 후 운명이 갈립니다.

어디에 있었나 압축 후
시스템 프롬프트·출력 스타일 그대로 (대화 기록이 아님)
프로젝트 루트 CLAUDE.md ✅ 디스크에서 다시 읽어 올린다
자동 메모리 ✅ 다시 읽어 올린다
paths:가 붙은 규칙 파일 ❌ 해당 파일을 다시 읽기 전까지 사라진다
하위 폴더의 CLAUDE.md ❌ 그 폴더 파일을 다시 읽기 전까지 사라진다
불러 쓴 스킬 본문 ✅ 다시 올라가지만 스킬당 5,000 · 합계 25,000 토큰 상한, 넘치면 오래된 것부터 버림
대화로 시킨 지시 ❌ 요약에 녹아 사라질 수 있다

결론은 하나입니다. 계속 지켜야 하는 규칙을 채팅으로 말하지 말고 프로젝트 루트 CLAUDE.md에 적으세요. 대화로 시킨 건 압축 한 번에 사라질 수 있지만, 루트 CLAUDE.md는 압축 때마다 파일에서 다시 읽혀 올라갑니다.

하위 폴더에 CLAUDE.md를 두거나 규칙에 paths:를 붙여 특정 파일에만 적용되게 했다면, 그건 해당 파일을 읽는 순간에만 올라갑니다. 압축 후에는 사라졌다가 그 파일을 다시 읽을 때 돌아옵니다. 반드시 살아 있어야 하는 규칙이면 paths:를 떼거나 루트 CLAUDE.md로 옮기세요.

💡 스킬 본문은 앞부분부터 잘려 나갑니다. 그래서 claude skills 사용법에서 SKILL.md를 쓸 때 가장 중요한 지시를 파일 위쪽에 두라고 하는 겁니다.

5. 자동 압축은 어떤 순서로 도나

내가 아무것도 안 해도 클로드 코드는 한계에 가까워지면 알아서 정리합니다. 순서가 정해져 있습니다.

  1. 오래된 도구 출력부터 비웁니다. (파일 읽은 내용, 명령 실행 결과)
  2. 그래도 모자라면 대화를 요약합니다.

이때 내 요청과 핵심 코드 조각은 보존되지만, 초반에 길게 설명한 지시사항은 사라질 수 있습니다. 압축 방향을 미리 정해 두고 싶다면 CLAUDE.md"Compact Instructions" 절을 만들어 무엇을 남길지 적어 두면 됩니다.

⚠️ 파일 하나나 명령 출력 하나가 너무 커서 요약하자마자 다시 꽉 차는 상황이면, 클로드 코드는 몇 번 시도한 뒤 무한 반복을 멈추고 오류를 보여 줍니다. 이때는 그 거대한 출력을 만드는 작업을 쪼개거나 서브에이전트에 넘겨야 합니다.

6. 압축에 기대지 않고 아끼는 방법

압축은 결국 정보를 잃는 일입니다. 애초에 컨텍스트를 덜 쓰는 쪽이 낫습니다.

  • 큰 조사는 서브에이전트에 맡긴다. 서브에이전트는 자기만의 별도 컨텍스트에서 일하고 결과 요약만 돌려줍니다. 파일 스무 개를 읽어도 내 컨텍스트는 그대로입니다. 긴 세션에 가장 효과가 큽니다.
  • 직접 부를 스킬은 목록에서 뺀다. 스킬 설명은 세션 시작 때 전부 올라갑니다. disable-model-invocation: true를 주면 /이름으로 부를 때까지 컨텍스트에 아예 안 올라갑니다.
  • 작업 단위로 /clear한다. 기능 하나 끝나면 비우고 시작하는 습관이 가장 단순하고 확실합니다.
  • 안 쓰는 MCP 서버는 끈다. /mcp로 서버별 비용을 보고 정리합니다. 어떤 서버를 붙일지는 Claude MCP 서버 추천 글을 참고하세요.

대화를 짧게 유지하는 대신 창 자체를 키우는 방법도 있습니다. Fable 5, Sonnet 5, Opus 4.6 이상, Sonnet 4.6은 100만 토큰 컨텍스트를 지원합니다(플랜별로 제공 여부가 다릅니다). 다만 창이 커져도 압축 동작은 똑같으니, 관리 습관은 그대로 필요합니다. 모델별 차이는 Claude 모델 비교 글에서 다뤘습니다.

자주 묻는 질문 (FAQ)

Q. 컨텍스트가 차면 세션이 끊기나요?
아닙니다. 한계에 가까워지면 자동으로 압축하므로 세션은 이어집니다. 다만 초반 지시가 사라질 수 있어서, 품질이 떨어진다 싶으면 직접 개입하는 편이 낫습니다.

Q. /clear를 하면 이전 대화를 못 보나요?
대화 기록은 로컬에 파일로 저장되므로 claude --resume이나 --continue로 이전 세션을 다시 열 수 있습니다. /clear는 지금 세션의 컨텍스트를 비우는 것입니다.

Q. 자동 압축은 몇 퍼센트에서 도나요?
공식 문서는 "한계에 가까워지면"이라고만 하고 구체적인 비율을 밝히지 않습니다. 지금 상태가 궁금하면 /context로 직접 확인하는 게 정확합니다.

Q. 압축했는데도 클로드가 규칙을 자꾸 어깁니다.
그 규칙이 대화에만 있었을 가능성이 큽니다. 루트 CLAUDE.md로 옮기세요. 하위 폴더 CLAUDE.mdpaths:가 붙은 규칙이라면 해당 파일을 읽기 전까지는 적용되지 않는다는 점도 함께 확인해 보세요.

마무리

정리하면 이렇습니다. 상태는 /context로 보고, 작업이 바뀌면 /clear, 이어서 하면 방향을 준 /compact, 오래 갈 규칙은 루트 CLAUDE.md, 큰 조사는 서브에이전트. 다섯 개가 전부입니다. 세션이 길어질 때 답변이 이상해진다면 모델을 탓하기 전에 /context를 한 번 쳐 보세요. 대개 원인이 거기 보입니다.


📚 참고 출처 (2026년 7월 22일 확인 · Claude Code v2.1.204 기준)
· Claude Code 공식 문서 — Explore the context window
· Claude Code 공식 문서 — How Claude Code works

반응형

COMMENTS