문제의 발견: "벌써 47%?"
오늘 아침, 가볍게 "오늘 준비되었는지 확인해줘!"라고 물었을 뿐인데...
[Sonnet 4.5] ▓▓▓▓▓▓▓▓░░ 47%
✓ Bash ×12 | ✓ Read ×1
12번의 Bash 호출이라니. 😱
단순 상태 확인 질문에 Context Window의 거의 절반을 소비했다는 걸 깨달았습니다.
범인을 찾아라: 13개 Tool Calls 부검
실제로 뭘 했는지 추적해보니:
✅ 필요했던 것들 (5개)
ls data/2026/0215/- 로컬 폴더 확인gdrive.py list 0215- Drive 파일 확인gdrive.py pull 0215- 파일 다운로드 시도ls templates/template.xlsx- 템플릿 확인ls scripts/members.txt- 명부 확인
❌ 과도했던 것들 (3개)
find . -maxdepth 2- 이미 gdrive pull로 확인됨 (중복!)process_offering.py --help- 시스템 동작 확인은 불필요wc -l members.txt- 파일 존재만 확인하면 됨
🤦 완전히 불필요했던 것들 (5개)
9-13. CLAUDE.md 분석 (사용자가 두 번째로 "분석해줘"라고 별도 요청)
결론: 2-3개면 충분할 질문에 13개를 실행했습니다.
해결책 1: Tool Calls 효율성 원칙
질문 유형별 적정 Tool Calls 수
| 질문 유형 | 적정 수 | 예시 |
|---|---|---|
| 상태 확인 | 2-3개 | "준비됐어?" → 폴더/파일/Drive만 |
| 분석 요청 | 3-5개 | "구조 분석해줘" → 필요한 정보만 |
| 실행 요청 | 5-10개 | "OCR 처리해줘" → 실제 작업 수행 |
체크리스트 (앞으로 이렇게)
- 의도 파악: 상태 확인? 분석? 실행?
- 최소 범위: 답변에 필요한 최소 정보만
- 병렬 실행: 독립적 명령은 한 메시지에
- 검증 지양: 문제 없으면 과도한 검증 생략
해결책 2: CLAUDE.md 다이어트
컨텍스트 소비의 또 다른 범인: 비대한 CLAUDE.md (608줄, 32KB)
Before
프로젝트 개요: 9줄
아키텍처: 138줄 ← 폴더 구조가 너무 상세
핵심 설계 결정: 171줄 ← Phase 18, 15 구현 포함
개선 계획: 62줄 ← Phase 1-19 전체 이력
...
최적화 전략
Phase 1-14 아카이빙
ARCHIVE.md생성 (191줄)- 완료된 Phase를 별도 문서로 분리
- 개선 계획: 62줄 → 13줄 (49줄 감소)
폴더 구조 간소화
- 상세 주석 제거, 핵심만 표시
- 71줄 → 29줄 (42줄 감소)
핵심 설계 결정 압축
- 구현 상세는 scripts/*.py 주석으로 이관
- Phase 18: 32줄 → 9줄
- Phase 15: 31줄 → 11줄
Tool Calls 효율성 원칙 추가
- 새 섹션으로 이번 학습 내용 문서화
- 다음 세션에서도 이 원칙 유지
After
CLAUDE.md: 608줄 → 527줄 (81줄 감소, 13% 감소)
토큰 추정: ~8,000 → ~6,000 (~2,000 절감)
컨텍스트 비율: 20% → 15% (-5%p)
교훈: AI와의 효율적인 대화
1. 질문 의도를 명확히
"확인해줘" = 상태 체크만 (2-3개 tool calls)
"분석해줘" = 구조 파악 (3-5개)
"처리해줘" = 실제 작업 (5-10개)
2. 컨텍스트 관리도 최적화 대상
- 프로젝트 문서도 주기적으로 다이어트
- 현재 필요한 정보 vs 과거 기록 분리
- 200줄 제한 있는 MEMORY.md보다 CLAUDE.md 활용
3. 메타인지가 중요
"AI가 뭔가 많이 하는 것 같은데?" → 체크!
47% 컨텍스트 소비 → 원인 분석 → 개선
다음 세션을 위한 메모
이제 CLAUDE.md에 "Tool Calls 효율성" 섹션이 추가되었으니, 다음 세션에서도:
- 질문 유형별 적정 tool calls 수 확인
- 불필요한 검증 지양
- 병렬 실행 적극 활용
AI와의 대화도 효율이 필요하다는 걸 오늘 배웠습니다. 🎯
P.S. 이 블로그 글을 작성하는 데는 6개의 tool calls만 사용했습니다. 처음보다 7개 적네요. 😎