Soldato — 기능명세서 v0.2
코드네임: Pizza | 베이스: Gemma 4 (Apache 2.0) Opus 4.6급 코딩 퍼포먼스를 로컬에서 달성하는 커스텀 AI 모델. BigBoss OS 에이전트용. Capomastro, Consigliere와 함께 독립 라이브러리.
1. 배경 및 목적
현재 문제
- 전체 에이전트가 opus 사용 → API 비용 높음
- 단순 코딩 작업에도 opus급 모델 사용 → 비효율
- 외부 API 의존 → 오프라인 불가, 레이턴시
목표
- Opus 4.6급 코딩 퍼포먼스 (풀 파이프라인 적용 시 94-96%)
- 비용 99% 절감 (완전 로컬, 하이브리드 시 ~$5-10/월)
- BigBoss OS 도메인 특화 (Capomastro 구조, MVVM, SwiftUI/Compose 패턴)
- 3티어 제품 라인업 (Lite/Main/Pro → 16GB~96GB 커버)
- 독립 라이브러리 (
bin/Soldato)
2. 접근 방식
2.1 베이스 모델: Gemma 4 (2026-04-02 출시)
Gemma 4 31B Dense (raw)
코딩: LiveCodeBench 80%
수학: AIME 2026 89.2%
에이전트: τ2-bench 86.4%
Arena Elo: 1452 (#3)
컨텍스트: 256K
멀티모달: 텍스트/이미지/비디오/오디오
Function calling: 네이티브
라이선스: Apache 2.0
2.2 증류 (Knowledge Distillation)
Opus 4.6 (교사) → Gemma 4 31B (학생)
↓ CoT 포함 18만건 풀스택 데이터
↓ QLoRA (mlx-lm 또는 Unsloth)
↓
Pizza-Distilled → 87% (Sonnet 4.5 근접)
2.3 LoRA + RLHF/DPO
Pizza-Distilled
↓ 도메인 LoRA 9종 (Swift/Kotlin/TS/서버/DB/웹/보안/인프라/디버그)
↓ BigBoss OS xcodebuild/gradle/jest → 성공/실패 → DPO
↓
Pizza-Tuned → 92% (Sonnet 4.5 초과)
2.4 셀프 블랜딩 (SLERP)
Gemma 4 31B ──┬── 코딩 FT (LoRA merge) ──── Pizza-Code
│
└── 추론/에이전트 FT ────────── Pizza-Reason
Pizza-Code (60%) + Pizza-Reason (40%) → SLERP → Pizza-Blend
동일 아키텍처이므로 SLERP 완벽 호환
→ 94% (Opus 근접)
2.5 하이브리드 서빙 (최종)
유저 쿼리 → 난이도 판정 (confidence score)
├── 90% 쉬움/보통 → Pizza 로컬 ($0)
└── 10% 어려움 → Opus 4.6 API (~$5-10/월)
└→ 응답을 온라인 증류로 재활용
→ 시간 경과: 10% → 5% → 2% 감소
최종: 96% (Opus 4.6 동급~초과)
3. 기술 스택
| 구성 | 1순위 | 2순위 |
|---|
| 베이스 모델 | Gemma 4 31B Dense | Gemma 4 26B MoE |
| Speculative Draft | Gemma 4 E2B (2.3B) | |
| 파인튜닝 | QLoRA (Unsloth) | LoRA (mlx-lm) |
| 블랜딩 | mergekit SLERP | |
| RLHF | trl DPO (HuggingFace) | |
| 추론 (로컬) | llama.cpp / MLX (Mac Metal) | Ollama |
| 추론 (서버) | vLLM / SGLang | |
| 양자화 | GGUF Q4_K_M | |
| KV 최적화 | Prefix Caching + Q4 KV + PagedAttention | |
| 에이전트 스케줄러 | BigBoss OS 자체 구현 (Active/Warm/Cold) | |
| 증류 데이터 | Opus 4.6 API CoT 출력 수집 | |
| 언어 | Python (학습), Go (CLI 래퍼) | |
4. CLI 인터페이스
# 모델 관리
bin/Soldato list # 설치된 모델 목록
bin/Soldato pull deepseek-coder # 모델 다운로드
bin/Soldato pull soldato-v1 # 커스텀 증류 모델
# 추론
bin/Soldato run "SwiftUI로 로그인 뷰 만들어"
bin/Soldato run --model soldato-v1 "Compose NavHost 구현"
# 증류 데이터 수집
bin/Soldato collect --source opus # opus 출력 수집 시작
bin/Soldato collect --export data/ # 수집 데이터 내보내기
# 파인튜닝
bin/Soldato train --base deepseek-coder --data data/ --output models/v1
bin/Soldato train --method lora --epochs 3
# 평가
bin/Soldato eval --model soldato-v1 --benchmark bigbossos-bench
bin/Soldato eval --compare opus,deepseek,soldato-v1
# 서버 (에이전트 연동)
bin/Soldato serve --port 8080 # OpenAI 호환 API 서버
5. BigBoss OS 연동
에이전트별 모델 매핑
server/.env:
# C레벨 (CTO/CPO/CDO/CSO/CMO): 분석/위임 — 정확도 최우선
CLEVEL_MODEL=opus
# Developer: 코딩 — Soldato 사용
DEVELOPER_MODEL=soldato-v1
# Researcher/Designer: 가벼운 작업
UTILITY_MODEL=deepseek-coder
llm.ts 변경
// 역할별 모델 매핑 (2026-04-15 기준: PM/Director 패기, C레벨로 통합)
const roleModel: Record<string, string> = {
cto: process.env.CLEVEL_MODEL || 'opus',
cpo: process.env.CLEVEL_MODEL || 'opus',
ios_developer: process.env.DEVELOPER_MODEL || 'opus',
android_developer: process.env.DEVELOPER_MODEL || 'opus',
// ...
};
// callAgent에서 역할별 모델 사용
const agentModel = roleModel[role] || model;
args.push('--model', agentModel);
Soldato API 서버
bin/Soldato serve → localhost:8080 (OpenAI 호환)
↓
Claude CLI --model 대신 → OpenAI 호환 클라이언트로 호출
또는
LLM_PROVIDER=openai LLM_MODEL=soldato-v1 → .env 설정
6. 증류 데이터 수집 전략
Phase 1: 자동 수집
- BigBoss OS 에이전트 실행 시 입출력 자동 기록
- ios_dev_1의 입력(task) + 출력(코드) = 학습 데이터 1건
- 매 실행마다
data/distillation/ 에 자동 저장
Phase 2: 벤치마크 생성
- BigBoss OS 실제 태스크에서 벤치마크 추출
- "할일앱 iOS 구현", "가계부 Android 구현" 등
- opus 출력을 정답으로
Phase 3: 학습
- 수집 데이터 1000건+ → LoRA 파인튜닝
- 평가: 벤치마크에서 opus 대비 정확도 비교
7. 성능 목표
| 항목 | Pizza-Lite | Pizza | Pizza-Pro |
|---|
| 베이스 | Gemma 4 E2B | Gemma 4 E4B | Gemma 4 31B |
| 풀파이프 코딩 | ~72% | ~83% | 94-96% |
| 비용 | 0원 | ~$5-10/월 | ~$5-10/월 |
| 메모리 (모델) | 1.5 GB | 3 GB | 18 GB |
| 타겟 RAM | 16GB+ | 24GB | 64GB+ (권장 96GB) |
| 에이전트 수 | 8-12개 | 5-8개 | 16개 |
| 오프라인 | ✅ | ✅ | ✅ |
| Opus 대비 | Haiku급 | Sonnet급 | Opus 동급 |
8. 개발 로드맵
| Phase | 기능 | 복잡도 |
|---|
| 1 | Gemma 4 31B 로컬 서빙 (llama.cpp/MLX) | 낮음 |
| 2 | 증류 데이터 자동 수집 (에이전트 실행 로그) | 낮음 |
| 3 | Opus 4.6 증류 (CoT 18만건 QLoRA) | 높음 |
| 4 | 도메인 LoRA 9종 파인튜닝 | 중간 |
| 5 | RLHF/DPO (빌드 피드백 자동화) | 중간 |
| 6 | 셀프 블랜딩 (코딩FT + 추론FT → SLERP) | 중간 |
| 7 | 하이브리드 서빙 (로컬 90% + Opus 10%) | 높음 |
| 8 | KV Cache 최적화 + Agent Scheduler | 높음 |
| 9 | Pizza-Lite/Main 티어 파생 (E2B/E4B 베이스) | 중간 |
| 10 | 지속적 학습 (온라인 증류 + 주기적 재학습) | 중간 |
9. 리스크
| 리스크 | 대응 |
|---|
| 증류 모델 품질 부족 | 하이브리드로 어려운 건 Opus fallback + 온라인 증류 |
| GPU 없음 (학습) | Google Colab Pro ($10/월) 또는 RunPod |
| 로컬 추론 느림 | Q4_K_M + Metal 가속 + Speculative Decoding |
| Opus API 비용 (증류 데이터 수집) | 에이전트 실행 로그 재활용 (추가 비용 0) |
| 31B 모델 24GB에 안 맞음 | 3티어 분리 (24GB 메인 타겟 = E4B) |
| 16에이전트 메모리 부족 | KV cache 최적화 6종 + Agent Scheduler |
| Gemma 4 파인튜닝 생태계 미성숙 | Unsloth/HF TRL 이미 지원 확인 |
10. BigBoss OS 라이브러리 전체 구조
BigBoss OS Libraries:
├── Capomastro — 프로젝트 생성 (Go, 단일 바이너리)
│ bin/Capomastro --platform ios --pkg ... --out .
│
├── ProjectMemory — 메모리/검색 (Go, SQLite+벡터)
│ bin/ProjectMemory search "보안 결정"
│ bin/ProjectMemory index docs/
│
└── Soldato — AI 모델 (Python+Go, Ollama)
bin/Soldato serve --port 8080
bin/Soldato train --base deepseek --data data/
bin/Soldato eval --compare opus,soldato-v1