# 2026-03-28 작업 기록

## 모델 테스트 세션 (새벽 ~ 아침)

### 등록된 모델
| 모델 | 용도 | 상태 |
|------|------|------|
| Qwen3-8B | 빠른 라우터 | 기존 (8080) |
| Qwen2.5-72B-Instruct | 긴 분석 | 기존 (8081) |
| Qwen2.5-Coder-32B | 코딩 | 기존 (8082) |
| DeepSeek-R1 | 추론 | 기존 (8083) |
| **Qwen3-Coder-Next** | 코딩 (새로운) | 테스트 완료 (8084) |
| **Qwen2.5-VL-7B-Instruct** | 비전/OCR | mmproj 파일 필요 (8084) |

### 테스트 결과
| 모델 | 속도 | reasoning | 비고 |
|------|------|-----------|------|
| Qwen3-Coder-Next (76GB) | 0.35초 | 없음 | 깔끔, tool-call 호환성 높을 가능성 |
| Qwen2.5-7B-Instruct | 0.17초 | 없음 | 가장 빠름, 일반 대화용 |
| Qwen2.5-VL-7B-Instruct | 0.14초 (텍스트) / 0.48초 (OCR) | 없음 | 텍스트 OK, OCR 정상 작동 (mmproj 필수) |

### 실행 중인 모델 (현재)
- 8080: Qwen3-8B (기본 라우터)
- 8081: Qwen2.5-72B-Instruct (분석)
- 8082: Qwen2.5-Coder-32B (코딩)
- 8083: DeepSeek-R1 (추론)
- 8084: Qwen2.5-VL-7B-Instruct (비전/OCR) ← mmproj-F16.gguf 포함

### MCP 서버 목록 (기존)
- KIS MCP Server (주식 조회/주문)
- Playwright MCP (브라우저 자동화)
- SSH Terminal MCP (SSH 터미널)
- KeyboardMouse MCP (키보드/마우스 제어)

### 문제점/기억사항
- **openclaw.json 설정 변경하면 게이트웨이 뻗을 수 있음** → 반드시 jq 사용
- **모델 테스트 시 8084 포트만 사용** (openclaw.json 등록 불필요)
- **HF 토큰 등록 완료**: llama 서버 `~/.huggingface/token`에 `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` 저장
- **SSH 연결 불안정**: llama 서버로 SSH 명령 실행 시 자주 끊김 (pkill 등 특정 명령에서 발생)
- **hf CLI로 변경**: `huggingface-cli` → `hf`로 이름 변경됨
- **VL 모델 mmproj 필요**: Qwen2.5-VL 사용 시 `mmproj-F16.gguf` 필수

### 준이 요청사항 (완료)
- ✅ 코딩: Qwen3-Coder-Next 테스트
- ✅ 일반대화: Qwen2.5-7B-Instruct 테스트
- ✅ 비전/OCR: Qwen2.5-VL-7B-Instruct 테스트
- ✅ 결과를 파일로 기록

---

## SSH MCP 서버 연결 성공 (10:00~10:10)

### 발견사항
- MCP 서버 소스: `/home/arin/.openclaw/workspace/projects/mcp_sshterminal/`
- MCP 엔드포인트: `http://127.0.0.1:5057/mcp`
- 서버 프로세스: PID 2048 (McpSshTerminal.App, .NET)
- llama 서버 등록: ID `77a0629dde7e4172943a26962b1af267`

### 핵심 파라미터 (중요!)
- `initialize` → 응답 헤더에서 `Mcp-Session-Id` 획득
- `open_session` → 파라미터: `sessionId` (서버 ID 값)
- `send_input` → 파라미터: `sessionId` (SSH 세션 ID) + `text` (명령어, **input 아님!**)
- `read_output` → 파라미터: `sessionId` + `afterSequence` (마지막 시퀀스 번호)

### 테스트 성공
- SSH 세션 ID: `272608b9e7b944cbab2e5e4ab4e8153d`
- `pgrep -la llama-server` 실행 → 3개 모델 정상 확인
- 8081: Qwen2.5-7B-Instruct (PID 159327)
- 8082: Qwen3-8B (PID 160050)
- 8083: Qwen2.5-VL-7B (PID 159411)

### 문제점 정리
- 직접 SSH 명령 (`ssh llama`) 자주 끊김 → SSH MCP가 대안
- OpenClaw에 MCP 도구가 직접 노출되지 않음 → Python 스크립트로 MCP 호출
- `send_input` 파라미터가 `input`이 아니라 `text` (서버 로그에서 발견)

### 균이 관심사
- 추가 전문가 모델: 툴 호출 전문 (function calling), 한국어 전문 (EEVE-Korean)
- VRAM 여유: 현재 17% 사용, ~81GB 여유

---

## Qwen2.5-Coder-32B 서브에이전트 실패 분석 (11:36~11:38)

### 실패 #1 (kis-coder)
- Task: KIS 실시간 종목 수신 코드 작성
- 결과: **파일 미생성**, 결과 없음
- 원인 미상 (로그 없음)

### 실패 #2 (kis-coder-2)  
- 동일 작업, 더 구체적 프롬프트
- 결과: **파일 미생성**, 결과 없음

### 루트 코즈 (sessions_history 확인)
```
stopReason: "error"
errorMessage: "400 request (9383 tokens) exceeds the available context size (8192 tokens), try increasing it"
```

**핵심: 프롬프트가 9,383 토큰인데 모델 컨텍스트 윈도우가 8,192 토큰. 입력 자체가 컨텍스트를 초과해서 모델이 아예 실행 불가.**

### 페널티 기록
| 모델 | 이벤트 | 심각도 | 비고 |
|------|--------|--------|------|
| qwen2.5-coder-32b-q4km | 툴호출 실패 (write 미수행) | 🔴 높음 | 컨텍스트 8192로 서브에이전트 작업 수용 불가 |

### 교훈
- Qwen2.5-Coder-32B의 컨텍스트가 8192로 설정되어 있음
- 서브에이전트 프롬프트가 길면 컨텍스트 초과로 에러 발생
- **해결책**: llama 서버에서 `--ctx-size` 높이거나, 서브에이전트 프롬프트를 줄이거나, 더 큰 컨텍스트의 모델 사용
- 모델 성능 문제가 아니라 **컨텍스트 크기 문제**였음 (구분 중요)

---

## 코딩 모델 성능 검증 (저녁 21:56 ~ 23:37)

### 테스트 결과
- **Qwen3-Coder-Next**: ✅ 코딩 모델로 사용 가능
  - 간단한 코드: 12초 성공
  - KIS 실시간 종목 시세: 50초 성공
  - 툴호출 정상 (OpenAI 표준 형식)
- **Qwen2.5-Coder-32B**: ❌ 서브에이전트 사용 불가
  - 툴호출 형식 깨짐 (XML로 content에 출력)
  - 서버/템플릿 문제 아님, 모델 훈련 차이

### 상세 보고서
→ `memory/2026-03-28-llm-coding-test.md`

---

## 추가 모델 테스트 (심야 00:06 ~ 02:35)

### 다운로드 + 테스트 완료
| 모델 | 크기 | 다운로드 | 테스트 |
|------|------|----------|--------|
| Qwen3.5-9B-Uncensored Q4_K_M | 5.6GB | ✅ | ✅ |
| Qwen3.5-27B-Claude-Opus Q4_K_M | 16.5GB | ✅ | ✅ |
| Qwen3.5-122B-A10B-MoE IQ3_XXS | 47GB | ✅ | ✅ |

### 최종 결론
- **🏆 122B MoE**: 속도 36 t/s + 코드 품질 최고 + VRAM 45GB
- **보조 9B**: 속도 37 t/s + VRAM 5GB
- **50GB 예산 최적: 122B + 9B**
- Coder-Next (76GB) 대체 완료
