2 minute read

Claude Code 새 세션을 띄우자마자 아무 질문도 안 던지고 /context all을 쳐봤다가 진짜 턱이 빠질 뻔했다. 코드 한 줄 건네지 않았는데 기본 시작 토큰이 무려 35,000개를 찍고 있었다. 숨만 쉬었는데 토큰이 활활 타오르고 있던 셈이다(내 지갑 살려…).

r/ClaudeCode에 바로 이 ‘컨텍스트 비만’을 뼈저리게 느끼고 극한의 다이어트를 감행한 u/LorenzoSith의 삽질기가 올라왔다. 읽는 내내 무릎을 탁 치며 폭풍 공감했다. 이것저것 편하다고 스킬 추가하고, MCP 서버 붙이고, CLAUDE.md에 규칙 덕지덕지 써두다 보면 어느새 모델의 뇌 용량 절반이 쓰레기 데이터로 가득 찬다. 컨텍스트 창이 아무리 200K로 넓어졌어도, 시작부터 35K를 깔고 가는 건 명백한 낭비다.

35K는 도대체 어디서 샌 걸까

시작하자마자 타버리는 35K 토큰의 정체를 까보면 대충 견적이 나온다. 시스템 기본 프롬프트, 내장 툴 스키마, 등록된 온갖 스킬 설명문, 그리고 습관적으로 늘려놓은 CLAUDE.md 메모리 파일. 하나하나는 귀여운 수준이지만, 다 모아놓으면 웬만한 논문 한 편 분량이다.

가장 뻔뻔한 주범은 의외로 ‘쓰지도 않는 내장 시스템 도구’들이었다. DesignSync, Artifacts, Dynamic Workflows 같은 화려한 기능들. 평소엔 손도 안 대는데 세션 켤 때마다 상전처럼 컨텍스트 한자리를 차지하고 앉아있었다.

스킬도 마찬가지다. 프로젝트별로 온갖 작업 절차를 스킬로 만들어두면 뿌듯하긴 한데, 지금 당장 쓰지도 않을 스킬의 세부 가이드라인이 매 세션마다 기본 장착되는 건 순도 100% 낭비다.

여기에 MCP(Model Context Protocol) 서버까지 붙으면 난리가 난다. 툴 스키마 JSON 덩어리가 생각보다 엄청나게 무겁다. 최신 버전에서 온디맨드 검색(Tool Search)이 들어왔다고는 하지만, 서버를 상시로 띄워두는 것만으로도 무시 못 할 밑천이 털린다.

군살 싹 빼고 13K로 만든 비결

Lorenzo의 다이어트 방법은 아주 단순하고 확실했다. 덩치 큰 놈부터 사정없이 쳐냈다.

첫째, CLAUDE.md는 프로젝트 핵심 정보와 자주 밟는 지뢰(Pitfall)만 남기고 싹 다 쳐냈다. 장황한 워크플로우나 절차는 평소엔 숨겨두고, 진짜 필요할 때만 호출하는 개별 스킬로 분리했다.

둘째, 안 쓰는 스킬은 가차 없이 삭제하고, 가끔 쓰는 스킬은 사용자가 수동으로 직접 칠 때만 동작하도록(User-invoked only) 바꿔서 기본 스킬 목록에서 치워버렸다.

셋째, MCP 서버도 실시간으로 꼭 필요한 녀석들만 남기고 나머지는 가차 없이 연결을 끊었다.

결과는 대성공이었다. 35K에서 13K로 63%가량 수직 낙하했다. 모델이 일하기 전에 먹는 밥통 크기를 3분의 1 토막 낸 거다.

댓글에서 터져 나온 진짜 복병 (MCP의 배신)

그런데 이 글의 백미는 본문보다 댓글에 있었다. u/Lexeik이라는 유저가 자기가 만든 MCP 서버를 직접 패킷 단위로 뜯어본 충격적인 결과를 공유했다.

서버가 뱉어내는 44KB짜리 데이터 중 무려 26KB가 outputSchema였다는 거다. 모델은 쳐다보지도 않는 스키마 정의가 고스란히 유료 토큰으로 청구되고 있었다(황당해서 웃음만 나온다).

더 끔찍한 건 ‘응답 중복’ 버그다. MCP 스펙이 구버전 호환성을 챙긴답시고 구조화된 JSON과 텍스트 필드 양쪽에 똑같은 데이터를 복붙해서 반환하도록 권장하는데, 이 짓거리 때문에 툴이 한 번 실행될 때마다 응답 토큰이 조용히 2배씩 뻥튀기되고 있었다.

/context all 명령어로는 잡히지도 않는 이 숨은 누수 때문에 세션이 조금만 길어져도 컨텍스트가 광속으로 차올랐던 거다. 글쓴이는 응답 텍스트에 전체 JSON 대신 짧은 한 줄 요약만 넣고, 거대 데이터는 별도 온디맨드 툴로 분리해서 이 거품을 걷어냈다.

왜 토큰 다이어트에 목숨을 걸어야 할까

“요즘 컨텍스트 창이 200K, 1M인데 토큰 몇만 개 좀 새면 어때?”라고 쿨한 척할 수도 있다(물론 회삿돈으로 API 쓰는 사람이라면).

하지만 이건 돈 문제를 떠나서 모델의 ‘지능’과 직결된다. 컨텍스트가 방대해질수록 모델의 주의력(Attention)은 필연적으로 흐려진다. 35K짜리 노이즈 더미 속에서 내 질문을 던지는 것과, 군더더기 없는 13K 상태에서 질문을 던지는 건 모델이 내는 답변의 깊이가 완전히 다르다.

Lorenzo 역시 다이어트 후에 가장 짜릿했던 건 토큰 비용 절감이 아니라, Claude가 내 말귀를 귀신같이 찰떡같이 알아듣기 시작했다는 점을 꼽았다. 머릿속 잡생각을 비워주니 본업에 집중하는 거다.

한 줄 요약

지금 당장 터미널 켜고 Claude Code 세션에서 /context all을 한번 쳐보자. 시작 토큰 숫자가 30K를 넘어가고 있다면, 내 모델은 이미 시작도 전에 묵직한 숙취에 시달리고 있는 거다.

안 쓰는 내장 툴 끄고, CLAUDE.md 군더더기 털어내고, MCP 서버 정리하자. 작업 공간이 깨끗해야 코딩이 잘 되는 건 사람이나 AI나 똑같다.