# 멀티 에이전트 LLM 운용 설계서 — 최종본 v3.1
## 작성: 2026-03-29

---

# 1. 최종 채택 모델

## 1.1 채택 목록
| 역할 | 모델 | 포트 | 컨텍스트 | 상태 | 비고 |
|------|------|------|----------|------|------|
| 메인/플래너/전처리/Analyst | Qwen3.5-35B-A3B-Claude-Opus-Distilled | 8080 | 262K | 상시 | 메인 fallback 포함 |
| Coder | Qwen3-Coder-Next-Q3_K_M | 8081 | 64K | 상시 | 코딩 전용 |
| QA | Qwen3.5-9B-Uncensored-HauhauCS-Aggressive | 8082 | 64K | 상시 | 코딩 검증 전용 |
| 특수 작업 | Qwen3.5-122B-A10B-MoE-IQ3_XXS | 8083 | 32K | 수동 | 필요 시만 로드 |
| Vision | Qwen3VL-8B-Uncensored-Q4_K_M | 8084 | 32K | 상시 | OCR/스크린샷/UI 이해 |
| 테스트 | (임시) | 8089 | - | 수동 | 모델 테스트용 |

## 1.2 선택 이유
- 35B: 전체 오케스트레이션/플래닝/분석에 가장 균형이 좋음
- Coder Next Q3: 상시 코딩 실행기로 VRAM 효율이 좋음
- 9B HauhauCS: QA 전용으로 가볍고 빠름
- 122B MoE: 고품질 특수 작업용, 상시는 비효율적이라 수동 로드
- Vision HauhauCS 8B: OCR/비전 비교에서 최종 승자

---

# 2. 에이전트 운용 아키텍처

## 2.1 핵심 원칙
| 원칙 | 설명 |
|------|------|
| 유료 토큰 절약 | 로컬 모델이 전처리/요약 → 유료는 최종 판단만 |
| 컨텍스트 계층 | 메인(전체) > 플래너(요약) > 실행기(지시만) |
| 시퀀셜 vs 병렬 | 메인↔플래너는 시퀀셜, 실행기는 병렬 |
| QA 루프 | 코딩 작업만 Coder↔QA 반복 |
| 특수 모델 분리 | 122B는 상시가 아니라 수동 로드 |

## 2.2 전체 구조
```text
사용자
  ↓
메인 (유료 또는 35B fallback)
  ↓
플래너 (35B)
  ↓
├─ Coder (Q3)
├─ QA (9B)
├─ Analyst (35B)
├─ WebQ (35B)
└─ Vision (Qwen3VL-8B-Uncensored)
```

---

# 3. 에이전트별 정의

## 3.1 메인 / 플래너 / Analyst / WebQ
- 모델: Qwen3.5-35B-A3B-Claude-Opus-Distilled
- 포트: 8080
- 컨텍스트: 262K
- 역할:
  1. 메인 fallback
  2. 플래너
  3. 전처리/압축
  4. Analyst
  5. WebQ

## 3.2 Coder
- 모델: Qwen3-Coder-Next-Q3_K_M
- 포트: 8081
- 컨텍스트: 64K
- 역할:
  1. 플래너 TODO 수신
  2. 자체 서브플랜 작성
  3. 코드 생성/수정
  4. 파일 반영
  5. 완료 보고

## 3.3 QA
- 모델: Qwen3.5-9B-Uncensored-HauhauCS-Aggressive
- 포트: 8082
- 컨텍스트: 64K
- 역할:
  1. 코드 실행 검증
  2. TODO 기준 PASS/FAIL 확인
  3. QA 리포트 반환

## 3.4 Vision
- 모델: Qwen3VL-8B-Uncensored-Q4_K_M
- 포트: 8084
- 컨텍스트: 32K
- 역할:
  1. OCR
  2. 스크린샷 분석
  3. UI 이해
  4. 시각 기반 판단 보조
- mmproj:
  - `mmproj-Qwen3VL-8B-Instruct-Q8_0.gguf`

## 3.5 특수 작업 모델
- 모델: Qwen3.5-122B-A10B-MoE-IQ3_XXS
- 포트: 8083
- 컨텍스트: 32K
- 역할:
  1. 복잡 설계 판단
  2. 고품질 코드 초안
  3. 장문 분석
  4. 다른 모델 실패 시 해결 카드

---

# 4. 작업 플로우

## 4.1 일반 대화
```text
사용자 → 메인 → 직접 응답
```

## 4.2 코딩 작업
```text
사용자 → 메인 → 플래너(35B)
  ↓
플래너 → TODO 작성
  ↓
Coder(Q3) → 구현
  ↓
QA(9B) → 검증
  ├─ PASS → 완료
  └─ FAIL → Coder 재작업
```

## 4.3 분석 작업
```text
사용자 → 메인 → 플래너
  ↓
Analyst(35B) → 분석/리포트
  ↓
메인 → 사용자 전달
```

## 4.4 비전 작업
```text
사용자 → 메인
  ↓
Vision(8084) → OCR / 스크린샷 분석 / UI 이해
  ↓
메인 → 사용자 전달
```

---

# 5. VRAM 시나리오

| 시나리오 | 로드 모델 | VRAM |
|----------|----------|------|
| 기본 상시 | 35B + Coder + QA + Vision | 약 76% |
| 분석 중심 | 35B + QA + Vision | 약 38% |
| 특수 작업 | 35B + 122B | 약 71% |

### 122B 사용 규칙
- Coder 결과가 최소 품질 기준 미달이거나 QA가 반복 FAIL 하면 122B 전환을 검토한다.
- 122B 로드 전에는 최소 Coder off
- 권장: **Coder + Vision off 후 122B 로드**
- 아주 무거운 작업이면 QA도 off 가능
- 전환 스크립트:
  - `~/llama.cpp/download/switch_to_122b.sh`
- 작업 종료 후:
  - QA까지 완료
  - 122B drop
  - Coder + Vision 재실행
  - 기본 상시 구성 복귀
- 복구 스크립트:
  - `~/llama.cpp/download/restore_default_workers.sh`

---

# 6. 설정 참고

## 6.1 모델 포트 매핑
| 포트 | 모델 | 용도 |
|------|------|------|
| 8080 | Qwen3.5-35B-A3B-Claude-Opus-Distilled | 메인/플래너/전처리/Analyst/WebQ |
| 8081 | Qwen3-Coder-Next-Q3_K_M | Coder |
| 8082 | Qwen3.5-9B-Uncensored-HauhauCS-Aggressive | QA |
| 8083 | Qwen3.5-122B-A10B-MoE-IQ3_XXS | 특수 작업 (수동 로드) |
| 8084 | Qwen3VL-8B-Uncensored-Q4_K_M | 비전 전용 |
| 8089 | (임시) | 테스트 |

## 6.2 서버 시작 명령어
```bash
# 35B main
cd ~/llama.cpp/download
nohup ../build/bin/llama-server \
  -m ./Qwen3.5-35B-MoE-Claude-Q4_K_M.gguf \
  -ngl 999 --flash-attn on \
  --cache-type-k q8_0 --cache-type-v q8_0 \
  --ctx-size 262144 \
  --port 8080 --host 0.0.0.0 --jinja &

# coder
nohup ../build/bin/llama-server \
  -m ./Qwen3-Coder-Next-Q3_K_M.gguf \
  -ngl 999 --flash-attn on \
  --cache-type-k q8_0 --cache-type-v q8_0 \
  --ctx-size 65536 \
  --port 8081 --host 0.0.0.0 --jinja &

# qa
nohup ../build/bin/llama-server \
  -m ./Qwen3.5-9B-Uncensored-HauhauCS-Q4_K_M.gguf \
  -ngl 999 --flash-attn on \
  --cache-type-k q8_0 --cache-type-v q8_0 \
  --ctx-size 65536 \
  --port 8082 --host 0.0.0.0 --jinja &

# vision
nohup ../build/bin/llama-server \
  -m ./Qwen3VL-8B-Uncensored-Q4_K_M.gguf \
  --mmproj ./mmproj-Qwen3VL-8B-Instruct-Q8_0.gguf \
  -ngl 999 --flash-attn on \
  --cache-type-k q8_0 --cache-type-v q8_0 \
  --ctx-size 32768 \
  --port 8084 --host 0.0.0.0 --jinja &
```

## 6.3 다운로드된 최종 모델 파일
```text
~/llama.cpp/download/
├── Qwen3.5-35B-MoE-Claude-Q4_K_M.gguf ← 메인
├── Qwen3-Coder-Next-Q3_K_M.gguf ← Coder
├── Qwen3.5-9B-Uncensored-HauhauCS-Q4_K_M.gguf ← QA
├── Qwen3.5-122B-MoE-IQ3_XXS.gguf ← 특수 작업
├── Qwen3VL-8B-Uncensored-Q4_K_M.gguf ← 비전 메인
└── mmproj-Qwen3VL-8B-Instruct-Q8_0.gguf ← 비전 프로젝터
```

## 6.4 모델별 --ctx-size
| 모델 | --ctx-size | 비고 |
|------|------------|------|
| Qwen3.5-35B-A3B-Claude-Opus-Distilled | 262144 (262K) | 메인/fallback |
| Qwen3-Coder-Next-Q3_K_M | 65536 (64K) | Coder |
| Qwen3.5-9B-Uncensored-HauhauCS-Aggressive | 65536 (64K) | QA |
| Qwen3VL-8B-Uncensored-Q4_K_M | 32768 (32K) | Vision |
| Qwen3.5-122B-A10B-MoE-IQ3_XXS | 32768 (32K) | 특수 작업 |

---

# 7. 운영 메모
- HuggingFace 다운로드는 `hf` CLI 우선 사용
- SSH 작업은 가능하면 sshterminal MCP 세션 우선 사용
- 벤치/탈락 모델 정보는 `benchmark_model.md` 참고
