Sprag

클로드 코드 토큰 사용량 줄이는 법

도구 없이 바로 할 수 있는 일이 네 가지 있습니다. 세션이 자동 압축에 걸리기 전에 직접 /compact를 실행하기, 관련 없는 작업으로 넘어갈 땐 이전 맥락을 그대로 끌고 가지 말고 /clear로 끊기, 탐색 작업은 서브에이전트로 분리해서 메인 컨텍스트에 탐색 토큰이…

도구 없이 바로 할 수 있는 일이 네 가지 있습니다. 세션이 자동 압축에 걸리기 전에 직접 /compact를 실행하기, 관련 없는 작업으로 넘어갈 땐 이전 맥락을 그대로 끌고 가지 말고 /clear로 끊기, 탐색 작업은 서브에이전트로 분리해서 메인 컨텍스트에 탐색 토큰이 쌓이지 않게 하기, 큰 첨부 파일(PDF, pptx, docx, xlsx)은 붙여넣기 전에 마크다운으로 바꾸기입니다. 이 네 가지만 해도 효과가 큽니다. 나머지는 이걸 자동화하는 방법입니다.

압축과 초기화는 타이밍이 중요합니다

클로드 코드는 세션 사용량이 컨텍스트 윈도우에 가까워지면 자동으로 압축합니다. 문제는 그 시점까지 쌓인 턴들이 이미 한 번 이상 전체 요금으로 청구됐다는 점입니다. 작업이 곧 바뀔 거란 걸 알면(새 기능, 다른 파일 트리, 다른 사람의 질문) 자동 압축 임계값을 기다리지 말고 직접 /compact나 /clear를 실행해서 이어지는 맥락을 원하는 크기로 줄이는 편이 낫습니다. /clear가 더 확실한 선택지입니다. 이전 히스토리와 공유하는 게 전혀 없는 다음 작업이라면 아예 지우는 쪽이 맞습니다.

자동 압축 시점을 결정하는 설정은 autoCompactWindow입니다. 100만 토큰 모델에서 이 값을 비워 두면 압축은 80만 토큰 근처에서야 시작되고, 그때까지는 매 요청마다 누적된 전체 맥락을 다시 청구합니다. 이 값을 낮게 고정하면(Sprag가 기준으로 삼는 범위는 40만~70만 토큰입니다) 긴 세션의 꼬리 부분을 줄이면서도 너무 자주 압축돼서 맥락 연속성을 잃는 일은 막습니다. 한 번만 바꿔 두면 되는 설정이라 매번 신경 쓸 필요가 없습니다.

탐색은 서브에이전트로 넘기세요

파일 열 개를 읽어서 답 하나를 찾는 서브에이전트는 그 열 개의 토큰을 자기 컨텍스트 안에서 소비하고 짧은 요약만 돌려줍니다. 같은 탐색을 메인 스레드에서 하면 파일 열 개 분량이 그대로 메인 컨텍스트에 남아서, 다음 압축 전까지 매 턴 다시 청구됩니다. 기준은 간단합니다. 읽을 게 많고 결과는 짧은 작업("이거 어디에 정의돼 있어", "이 에러가 무슨 뜻이야", "이 로그 요약해줘")은 메인 스레드가 아니라 서브에이전트 몫입니다.

모델 선택도 마찬가지지만 흔히 생각하는 방향과는 다릅니다. 세션 중간에 메인 모델을 싼 모델로 바꾸면 겉보기와 달리 절감이 안 됩니다. 프롬프트 캐시는 모델별로 따로 유지되기 때문입니다. 모델을 바꾸는 순간 캐시가 콜드 상태로 초기화돼서 전체 대화를 전체 요금으로 다시 읽습니다. 대화 히스토리가 대략 2만 토큰만 넘어도 한 번의 전환이 싼 모델로 절감하려던 금액을 다 까먹을 수 있습니다. 대신 범위가 정해진 작업을 싼 모델 서브에이전트에 맡기고 메인 세션의 모델과 캐시는 건드리지 않으면 이 함정을 피할 수 있습니다.

첨부하기 전에 문서를 변환하세요

PDF, 파워포인트, 엑셀, 워드 파일을 첨부하면 클로드 코드가 파일을 직접 읽을 수는 있지만, 그 비용은 내용이 아니라 파일의 원시 구조 크기에 비례해서 청구됩니다. 7페이지짜리 보고서 PDF 하나만 첨부해도 같은 프롬프트보다 토큰이 약 2만 개 더 듭니다. 31.8메가바이트짜리 pptx를 내부 XML 그대로 읽으면 태그와 스타일 속성까지 합쳐 약 54만 토큰에 달해서, 그것만으로 20만 토큰 컨텍스트 윈도우에 들어가지도 않습니다. 같은 파일을 마크다운으로 먼저 변환해서 붙이면 내용은 그대로 두고 포장만 걷어낼 수 있습니다. 실측으로 같은 pptx가 약 22,600토큰으로 줄었으니 23.8배 차이입니다.

프롬프트 캐시 TTL 안에서 이어가세요

클로드 코드의 프롬프트 캐시에는 만료 시간이 있습니다. 그 시간이 지난 뒤 세션으로 돌아오면 다음 턴은 캐시 적중 시 드는 비용의 약 10배인 전체 요금으로 누적 맥락을 다시 읽습니다. 잠깐 자리를 비웠다가 돌아올 계획이면 TTL이 끝나기 전에 메시지 한 번만 더 보내면 캐시가 유지됩니다. 시간 안에 못 돌아올 걸 알면 그냥 만료되게 둬도 손해는 아니지만, 오래 쉬다 온 다음 메시지가 평소보다 비싼 이유가 이것이라는 건 알아 두면 좋습니다.

Sprag가 이걸 자동으로 처리하는 부분

위의 것들을 손으로 챙기는 것도 되긴 하지만, 매 세션 기억해야 한다는 약점이 있습니다. Sprag는 한 번 설치하면 이걸 기억이 아니라 하네스에 걸어 둡니다.

npm i -g sprag-cli

관련 문서: 클로드 코드 사용 한도 · 실시간 모델 라우팅이 더 비싼 이유 · 명령어 레퍼런스

다른 문서