단테가 만든 래퍼 jcc로, Claude Code에 일을 맡기기 직전에 Jev(TypeSafe)나 로컬 모델 Laya가 "어떤 모델로, 어떤 스킬만 들고 갈지"를 고르게 한 실험을 정리했습니다. 코딩 작업 16개와 스킬 120개를 준비해 Claude Code를 153번 돌리고 비용·토큰·채점 결과를 비교했습니다. Claude Code를 항상 Opus로 돌리며 비용을 줄이고 싶은 분, 훅과 서브에이전트를 어떻게 써야 할지 고민하는 분께 도움이 됩니다.
Jev와 Laya는 무엇을 하는 모델인가
Jev는 TypeSafe가 만든 모델로, 문장을 생성하지 않습니다. 보기를 주면 그중 하나를 고르고 보기마다 확률을 붙여 돌려줍니다. 고르는 일만 해서 빠르고, 영상에서 보낸 요청은 0.2초에서 0.5초 사이에 돌아왔습니다. 보기로 모델 이름 세 개를 넣으면 그대로 라우터가 됩니다.
Laya(laya-multilingual)는 같은 형식의 질문을 받을 수 있는 공개 모델로, 내 컴퓨터에서 돌립니다. 처음 불러오는 데 20초쯤 걸리지만 별도 사용료가 들지 않습니다.
jcc는 파이썬 파일 하나이고, 핵심은 세 군데입니다.
- 요청 한 번에 질문 두 개를 넣습니다. "이 작업이 얼마나 쉬운가"와 "스킬 보관함에서 어떤 스킬이 필요한가"입니다. 두 질문은 동시에 판단됩니다.
- "쉬운 일" 확률이 0.5 이상이면 Haiku, 아니면 Opus로 보냅니다. 이 규칙은 뒤의 실험 결과로 정했습니다.
- 고른 스킬 하나만 임시 플러그인 폴더에 담아 Claude Code를 실행합니다. 스킬을 전부 설치해 둘 필요가 없습니다.
실험 1: 모델 고르기는 생각보다 아끼지 못했다
작은 장바구니 계산기 저장소에 작업 10개를 준비했습니다. 변수 위치 찾기 같은 쉬운 일부터 쿠폰 중복 적용, 재고 예약의 멱등성처럼 까다로운 일까지 섞었습니다. 채점 테스트는 숨겨 두었다가 실행이 끝난 뒤 넣었고, 작업마다 어떤 모델이면 될지 단테의 예상을 미리 파일에 적어 두었습니다.
Jev는 Haiku·Sonnet·Opus 중 10개 중 8개를 단테의 예상과 같게 골랐습니다. 가장 어려운 두 작업에는 Sonnet을 골랐지만 Opus 확률도 36%, 47%로 남겨, 헷갈린다는 사실을 숫자로 보여 줬습니다. Laya는 10개 중 4개가 맞았고 Haiku는 한 번도 고르지 않아 비싼 쪽으로 기우는 편이었습니다.
작업마다 Claude Code를 헤드리스로 세 번씩 실행했습니다. 비용은 Claude Code가 보고하는 API 정가 환산값이고, 단테는 구독으로 돌렸기 때문에 실제 청구액과는 다릅니다.
- 항상 Opus: 1.29달러
- Jev가 고른 모델: 1.28달러 (−0.9%)
- Laya가 고른 모델: 약 12% 더 비쌈
- 채점은 세 방식 모두 30번 중 30번 통과
금액은 거의 같았는데 토큰은 Jev 쪽이 세 배 가까이 많았습니다.
이유: 턴이 곧 토큰이다
실행 기록을 열어 보면 원인이 바로 보입니다. 지역별 추가비를 넣는 작업에서 Opus는 명령 한 번으로 파일을 모두 읽고 수정도 한 번에 끝내 3턴 만에 마쳤습니다. Sonnet은 파일을 하나씩 열고 여섯 번에 나눠 고쳐 평균 18턴이 걸렸습니다. Claude Code는 턴마다 지금까지의 대화를 다시 보내기 때문에 턴 수가 곧 토큰입니다. 단가가 싸도 턴을 여섯 배 쓰면 더 비싸집니다.
반대로 Haiku로 보낸 쉬운 작업은 턴이 조금 늘어도 단가 차이가 커서 Opus보다 절반가량 쌌습니다. 그래서 규칙을 "쉬우면 Haiku, 아니면 Opus" 두 단계로 바꿨습니다. 결과를 보고 만든 규칙이므로 새 작업 6개를 만들고 규칙을 실행 전에 파일로 고정한 뒤 돌렸습니다. 항상 Opus는 0.70달러, 두 단계 규칙은 0.53달러로 약 26% 줄었고 18번 모두 통과했습니다. Sonnet을 섞은 세 단계 방식은 8% 줄이는 데 그쳤고 시간은 두 배 넘게 걸렸습니다.
실험 2: 스킬 120개 대신 하나만 들려 보내기
Claude Code는 설치된 스킬의 이름과 설명을 매번 컨텍스트에 넣습니다. 그래서 스킬 120개를 설치한 저장소를 만들었습니다. 대부분은 흔한 개발 스킬이고 4개만 사내 규칙입니다. 예를 들어 "쿠폰 로직을 바꾸면 체인지로그에 쿠폰 항목을 남긴다" 같은 규칙입니다. 요청에는 스킬 이름을 쓰지 않았습니다.
먼저 고르는 능력을 봤습니다. 문장 12개를 주고 120개 중 하나를 고르게 하자 Jev는 12개를 모두 맞췄고 Laya는 6개였습니다. 이어서 120개를 모두 설치한 경우와 Jev가 고른 1개만 설치한 경우로 Claude Code를 돌렸습니다.
- Opus: 두 경우 모두 사내 규칙을 12번 다 지켰습니다. 다만 하나만 줬을 때 비용이 25% 쌌습니다. 시작 컨텍스트가 약 4,600토큰 가벼워지고, 그 차이가 턴마다 쌓이기 때문입니다.
- Haiku: 120개 사이에서는 사내 규칙 스킬을 12번 중 한 번도 불러오지 않았습니다. 하나만 주자 12번 중 10번 지켰습니다. 재고 작업은 120개일 때 기능 테스트도 세 번 모두 실패했는데, 하나만 줬을 때는 모두 통과했습니다.
실제 사용에서는 영수증 라벨 변경에 Haiku와 영수증 규칙 스킬이, 쿠폰 유효기간 변경에 Opus와 쿠폰 정책 스킬이 붙었습니다. Laya로 바꾸면 모델은 Opus로 잘 골랐지만 스킬은 엉뚱한 것을 골랐습니다. 이번 한국어 문장에서는 Jev가 더 정확했고, 공식 문서에도 영어에서 가장 정확하며 다른 언어는 직접 시험해 보라고 적혀 있습니다.
하네스에 붙이기: 훅과 서브에이전트
jcc는 세션을 시작하기 전에 한 번 고르는 방식입니다. 대화 중에도 계속 쓰려면 Claude Code 훅에 붙이면 됩니다. UserPromptSubmit 훅은 요청을 보낼 때마다 먼저 실행되고, 훅이 출력한 글은 Claude가 보는 컨텍스트로 들어갑니다. 그래서 훅에서 Jev를 부르고 고른 스킬의 본문만 넣어 줍니다. 스킬 보관함은 .claude/skills 밖에 둡니다. 쿠폰 요청을 넣자 0.37초 만에 쿠폰 정책 스킬을 골라 규칙 본문을 붙였습니다.
쉬운 요청이면 Haiku 서브에이전트에게 맡기라는 안내도 붙여 봤습니다. 서브에이전트는 파일 하나로 만들고 model 항목에 haiku라고 적으면 됩니다. Opus는 안내대로 일을 넘겼고 답도 맞았지만, 비용은 0.123달러로 Opus 혼자 했을 때 평균 0.084달러보다 비쌌습니다. 넘기는 데도 토큰이 들고, 돌아온 답을 Opus가 다시 확인했기 때문입니다. 한 번 돌려 본 결과입니다. 공식 문서도 서브에이전트를 검색 결과나 로그처럼 메인 대화에 남길 필요가 없는 일을 따로 처리할 때 쓰라고 설명합니다. 비용보다 메인 대화를 가볍게 두는 도구입니다.
참고 자료: TypeSafe Confidence-gated routing, Claude Code Hooks, Claude Code Subagents
정리
- 모델은 입구에서 정합니다. 중간 난이도를 Sonnet으로 보내거나 작은 일을 위임하는 것보다, 시작할 때 쉬운 일만 골라 Haiku로 보내는 쪽이 효과가 있었습니다.
- 확률을 버리지 않습니다. "쉬운 일" 확률이 0.5 이상일 때만 Haiku로 보내고, 애매하면 Opus로 보냅니다. 쿠폰 유효기간 요청은 0.48이라 Opus로 갔습니다.
- 스킬과 규칙은 미리 골라 좁혀 줍니다. 특히 싼 모델에서 차이가 컸습니다(Haiku 규칙 준수 0/12 → 10/12).
- 중간 모델 라우팅은 턴이 늘어 절약분이 사라졌습니다. 결과를 유지하면서 비용이 4분의 1쯤 준 것은 "쉬운 일만 Haiku"와 "스킬 하나만"이었습니다.
- 작은 파이썬 저장소에서 Opus 5.5, Sonnet 5, Haiku 4.5로 잰 결과이므로 저장소 규모나 모델 버전이 바뀌면 숫자는 달라질 수 있습니다.

