4B 파라미터 모델로 벤치마크 87%를 달성한 코딩 에이전트 개발기
핵심 요약
거대 모델 없이도 로컬 환경에서 효율적으로 작동하는 경량 코딩 에이전트 'SmallCode' 개발 및 성능 최적화 전략.
- 경량 모델 최적화 — 4B 파라미터 모델로도 복잡한 코딩 작업을 수행할 수 있도록 설계됨.
- 오류 해결 루프 — 코드 작성 즉시 컴파일 및 린트 검사를 수행하여 자동 수정 루프를 구현함.
- 토큰 관리 전략 — 컨텍스트 오버플로우를 방지하고 중요한 코드만 선별적으로 제공하는 토큰 버짓팅 적용.
- 코드 그래프 활용 — 파일 전체를 읽는 대신 심볼 그래프를 통해 필요한 코드 조각만 효율적으로 탐색함.
모든 코딩 에이전트(OpenCode, Cursor, Claude Code)가 GPT-5.4나 Claude Opus를 사용한다고 가정하는 것에 좌절감을 느꼈습니다. Gemma나 Qwen 같은 로컬 모델로 시도하면 에이전트들이 제대로 작동하지 않죠. 도구 호출 실패, 컨텍스트 오버플로우, 다단계 작업 붕괴가 빈번하게 발생합니다.
그래서 저는 SmallCode를 만들었습니다. 처음부터 작은 로컬 모델을 위해 설계된 도구입니다.
결과: 4B 파라미터만 활성화하는 Gemma 4 모델로 100개의 벤치마크 작업 중 87개를 통과했습니다. OpenCode는 14B 모델로 약 75%의 점수를 기록합니다. 모델의 크기가 아니라 하네스(harness)가 핵심적인 역할을 합니다.
작동 방식 (작은 모델을 신뢰할 수 있게 만드는 비결):
- 복합 도구(Compound tools): 모델이 4개의 도구 호출(파일 찾기 → 파일 읽기 → 파일 수정 → 검증)을 연쇄적으로 수행하게 하는 대신, SmallCode는 이 4가지를 한 번에 수행하는 도구를 제공합니다. 작은 모델은 3번 이상의 순차적 호출 이후에는 일관성을 잃기 때문입니다. 이 방식으로 실패율을 절반으로 줄였습니다.
- 개선 루프(Improvement loop): 모델이 코드를 작성할 때마다 SmallCode는 즉시 컴파일/린트 검사를 수행합니다. 실패하면 자동으로 오류를 피드백합니다. 모델이 첫 시도에 완벽할 필요는 없습니다. 오류가 발생했을 때 수정만 할 수 있으면 됩니다.
- 실패 시 분해(Decompose on failure): 모델이 같은 작업을 두 번 실패하면, SmallCode는 재시도를 멈추고 문제를 더 작은 단위로 쪼갭니다. "이 200줄짜리 파일을 수정해"라는 작업이 "45번째 줄만 수정해"로 바뀝니다.
- 에스컬레이션(Escalation): 분해조차 실패하고 Claude/OpenAI 키가 설정되어 있다면, 해당 작업에 대해서만 더 큰 모델로 자동 에스컬레이션합니다. 95%는 로컬에서, 5%는 클라우드에서 처리하게 됩니다.
- 토큰 버짓팅(Token budgeting): 작은 모델은 32k~256k의 컨텍스트를 가집니다. SmallCode는 전체 파일을 덤프하지 않습니다. 중요한 코드 중간에 "..."로 생략되는 일이 없도록 모든 토큰을 요약, 절단 및 관리합니다.
- 코드 그래프(Code graph): grep으로 코드베이스를 검색하는 대신, SmallCode는 코드를 심볼 그래프(함수, 클래스, 호출 관계)로 인덱싱합니다. "인증 기능이 어떻게 작동해?"라고 물으면 그래프를 탐색하여 무작위 파일 15개가 아닌, 관련성 높은 연결 코드만 반환합니다.
기능:
전체 화면 터미널 UI(OpenCode/vim과 유사), 스크롤 가능한 채팅, / 명령 팔레트, 플러그인 시스템, 세션 간 지속되는 메모리.
미지원 기능:
- LSP 통합 (아직)
- 다중 세션 (아직)
- 데스크톱 앱
- Claude Code와 같은 프론티어 모델 사용자용 도구와 경쟁하지 않음
설치:
npm install -g smallcode
cd your-project
smallcode
LM Studio, Ollama 또는 OpenAI 호환 엔드포인트에 연결하세요.


