
Claude Code의 컨텍스트 성능 저하를 방지하기: Context Engineering 스킬 모음 사용법
요약
Claude Code 사용 중 발생하는 컨텍스트 성능 저하 현상을 진단하고 방지하기 위한 Context Engineering 스킬 활용법을 소개합니다. OSS로 공개된 15가지 스킬을 설치하여 Lost-in-Middle, Poisoning 등 5가지 저하 패턴을 관리하고 캐시 효율을 높이는 전략을 다룹니다.
핵심 포인트
- 컨텍스트 중간 정보의 정확도가 떨어지는 U자형 어텐션 커브 이해
- OSS 기반 Agent Skills를 통한 컨텍스트 저하 5가지 유형 진단
- 시스템 프롬프트 구조 최적화를 통한 캐시 히트율 향상 및 비용 절감
- 진단 스킬과 컨텍스트 압축 명령어(/compact)의 차이점 숙지
Claude Code를 사용하다 보면 "최근 답변이 좀 이상한데?", "방금 말한 내용을 무시하네"라는 경험을 한 적이 없으신가요? 이는 **컨텍스트 성능 저하 (Context Degradation)**라고 불리는 현상으로, 대화가 길어짐에 따라 모델의 퍼포먼스가 떨어지는 문제입니다.
이 기사에서는 OSS(Open Source Software)로 공개된 Agent Skills for Context Engineering을 Claude Code에 도입하여, 성능 저하를 진단하고 방지하는 방법을 소개합니다.
다음 명령 하나로 ~/.claude/skills/에 15개의 스킬이 추가됩니다. 다음 세션부터 자동으로 인식됩니다.
cd /tmp && \
git clone --depth=1 https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering.git context-engineering && \
cp -r context-engineering/skills/* ~/.claude/skills/ && \
...
스킬 호출 방법은 두 가지가 있습니다.
- 자동: 대화 문맥을 통해 Claude가 판단하여 자동 활성화
- 수동: 채팅에
/context-degradation과 같이 입력
컨텍스트 윈도우(Context Window)에는 **U자형 어텐션 커브 (U-shaped Attention Curve)**가 존재합니다. 맨 앞과 맨 뒤의 정보는 확실하게 참조되지만, 중간 부분의 정보는 10~40%의 정확도 저하가 발생합니다.
또한, 컨텍스트가 늘어날수록 퍼포먼스는 떨어지지만, 그 저하는 선형적이지 않습니다.
퍼포먼스
↑
100%|████████████████
...
성능 저하는 완만하게 진행되는 것이 아니라, 특정 임계값을 넘어서면 급락합니다. 70%에 도달한 뒤에 대처하면 늦은 경우가 많습니다.
/context-degradation 스킬이 다루는 저하 유형은 5가지로 분류됩니다.
| 패턴 | 증상 | 원인 |
|---|---|---|
| Lost-in-Middle | 중간 부분의 정보가 무시됨 | U자형 어텐션 커브 |
| Poisoning | 할루시네이션 (Hallucination)이 연쇄적으로 반복됨 | 잘못된 정보가 컨텍스트에 잔존 |
| Distraction | 무관한 정보로 인해 정확도가 떨어짐 | 관련성이 낮은 컨텍스트의 혼입 |
| Confusion | 다른 태스크의 제약 사항이 혼입됨 | 태스크 전환에 의한 컨텍스트 오염 |
| Clash | 모순되는 올바른 정보가 충돌함 | 여러 소스의 버전 차이 또는 관점의 차이 |
Step 1: /clear 후 동일한 질문을 재전송
↓
답변이 개선됨 → 컨텍스트가 원인
...
/context-degradation 스킬과 /compact 명령어는 서로 다른 것입니다.
- 스킬 → 왜 저하되고 있는지를 진단하는 지식
/compact→ 실제로 컨텍스트를 압축하는 조작
/context-optimization 스킬이 다루는 전략을 우선순위 순으로 소개합니다.
프롬프트 구조를 안정화함으로써 추론 엔진의 캐시 (Cache)를 재사용합니다.
# 안정적인 순서 (캐시가 적용됨)
1. 시스템 프롬프트 (가장 안정적)
2. 도구 (Tool) 정의
...
시스템 프롬프트 내에 날짜나 동적 정보를 넣으면, 매번 캐시 미스 (Cache Miss)가 발생하여 비용이 증가합니다.
# NG: 캐시가 적용되지 않음
system = f"오늘은 {today} 입니다. ..."
# OK: 동적 정보는 사용자 메시지로 분리
...
목표: 캐시 히트율 (Cache Hit Rate) 70% 이상 → 비용 50% 절감 · 레이턴시 (Latency) 40% 절감
처리된 도구 출력을 컴팩트한 참조로 대체합니다.
# NG: 가공되지 않은 도구 출력을 그대로 유지 (8,000 토큰 잔존)
response = mcp.notion_get_page(page_id)
# → JSON 전체가 컨텍스트에 계속 남음
...
마스킹 (Masking) 판단 규칙
| 상황 | 대응 |
|---|---|
| 직전 1턴 이내의 출력 | 마스킹하지 않음 |
| ... |
목표: 60~80% 절감 · 품질 영향 2% 미만
if context_tokens / context_limit > 0.7:
context = compact(context)
# 목표: 50~70% 절감 · 품질 저하 5% 미만
우선순위: 도구 출력 → 오래된 대화 턴 → 가져온 문서
압축(Compaction)은 85% 이상이 되었을 때 실행하면 실패하기 쉽습니다. 압축 처리 자체가 컨텍스트 (Context)를 소비하기 때문에, 모델이 압축하는 동안 중요한 정보를 놓치게 됩니다.
단일 컨텍스트에 수용되지 않을 경우, 서브 에이전트 (Sub-agent)로 분할합니다.
오케스트레이터 (Orchestrator, 조정역)
├── 서브 에이전트 A: 태스크 A 전용 컨텍스트
├── 서브 에이전트 B: 태스크 B 전용 컨텍스트
...
분할에는 코디네이션 비용 (Coordination cost, 시스템 프롬프트 및 도구 정의의 중복)이 발생합니다. 독립적인 서브 태스크가 3개 이상 있을 때 효과적입니다.
| 명령 | 카테고리 | 사용 시점 |
|---|---|---|
/context-fundamentals | 기초 | 컨텍스트 윈도우 (Context window) · 어텐션 메커니즘 (Attention mechanism) 개념을 이해하고 싶을 때 |
/context-degradation | 진단 | 에이전트의 정밀도 저하 원인을 진단하고 싶을 때 |
/context-compression | 최적화 | 긴 세션을 핸드오프 요약 (Handoff summary)으로 압축하고 싶을 때 |
/context-optimization | 최적화 | 토큰 소비 · KV 캐시 (KV Cache)를 개선하고 싶을 때 |
/multi-agent-patterns | 아키텍처 | 다중 에이전트 설계 패턴을 검토하고 싶을 때 |
/memory-systems | 아키텍처 | 에이전트의 영구 메모리 · 검색층을 구축하고 싶을 때 |
/tool-design | 아키텍처 | 도구 정의의 설명문 · 파라미터 설계를 최적화하고 싶을 때 |
/filesystem-context | 아키텍처 | 큰 도구 출력을 프롬프트 외부로 빼고 싶을 때 |
/hosted-agents | 아키텍처 | 샌드박스 (Sandbox) · 원격 실행 환경을 설계할 때 |
/evaluation | 평가 | 에이전트 평가 시스템 · 품질 게이트 (Quality gate)를 구축하고 싶을 때 |
/advanced-evaluation | 평가 | LLM-as-judge · 루브릭 (Rubric) 설계를 사용하고 싶을 때 |
/harness-engineering | 운영 | 자율 에이전트의 리서치 루프 (Research loop)를 설계할 때 |
/project-development | 운영 | LLM 프로젝트의 전체 설계를 구상할 때 |
/bdi-mental-states | 고급 | BDI 인지 모델로 에이전트를 모델링할 때 |
/latent-briefing | 고급 | 다중 에이전트 간의 KV 캐시 공유로 토큰 폭발을 억제하고 싶을 때 |
| 조작 | 명령 | 효과 |
|---|---|---|
| 세션 종료 | exit → claude | 컨텍스트 완전 리셋 |
| 이전 세션 재개 | claude -r | 직전 대화 내용 계승 |
| 즉시 압축 | /compact | 현재 대화를 요약하여 경량화 |
| 저하 체크 | /clear 후 동일 질문 재전송 | 답변이 개선되면 컨텍스트가 원인 |
태스크의 경계에서 세션을 나누는 것이 가장 효과적입니다. 토큰 수보다는 "이 세션에서 무엇을 달성했는가"를 기준으로 나누면 사용하기 편리합니다.
Notion MCP의 응답은 특히 장황하여, 페이지 하나당 5,000~15,000 토큰에 달할 수 있습니다.
# NG: 가져온 결과를 그대로 컨텍스트에 남김
page = mcp.notion_get_page(page_id) # 5,000 토큰
# OK: 제목과 ID만 유지
...
| 조작 | 최적화 전 | 최적화 후 | 절감률 |
|---|---|---|---|
| 페이지 가져오기 | ~5,000 tok | ~50 tok | 99% |
| ... |
스킬은 호출될 때 로드되며, 그만큼 토큰을 소비합니다. 글로벌 CLAUDE.md에 상시 규칙을 적어두기보다, 필요할 때만 /스킬명으로 호출하는 것이 토큰 효율이 더 좋습니다.
| 할 일 | 효과 |
|---|---|
| 컨텍스트 70%에서 컴팩션 (Compaction) | 한계치 도달 방지 |
| ... | 성능 저하 시 /clear 후 재전송 |
| 원인 분리 |
컨텍스트 엔지니어링 (Context Engineering)은 한 번 설정하면 끝나는 것이 아니라, 대화의 진행에 따라 지속적으로 관리해야 하는 것입니다. 이 스킬 모음을 활용하여 긴 대화 속에서도 Claude Code의 성능을 유지해 보세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기