# rb10508 → rb8001 이식 가이드

## 작성일: 2025-08-28
## 작성자: 서버 관리자
## 목적: rb10508의 검증된 기능을 rb8001에 선택적 이식

---

## 현재 상태 비교

### 메모리 사용량
- **rb8001**: 145MB (이미 경량화, skill-embedding 사용)
- **rb10508**: 136MB (동일하게 skill-embedding 사용)
- **결론**: 둘 다 이미 최적화됨, 메모리는 이식 대상 아님

### ChromaDB 버전
- **rb8001**: v0.5.20 (구버전, 984KB)
- **rb10508**: v1.0.16 (최신)
- **이식 필요**: ✅ 업그레이드 권장

---

## 핵심 이식 대상 (우선순위)

### 1. 🔥 메모리 알고리즘 개선 (즉시 가능)
```python
# rb10508의 고급 알고리즘
- add_composite_scores(): 복합 점수 계산
- maximal_marginal_relevance(): 다양성 확보 + 중복 제거

# rb8001 현재
- 단순 유사도 검색만 사용
```
**이식 방법**: `/app/memory/scoring.py` 함수만 복사

### 2. 📁 다중 컬렉션 구조 (중요)
```python
# rb10508: 메모리 타입별 분류
- episodic_memory   # 대화 이벤트
- semantic_memory   # 개념/지식
- procedural_memory # 작업 방법

# rb8001: 단일 컬렉션만 사용
```
**이식 방법**: ChromaDB 마이그레이션 필요

### 3. 🎮 Gmail 아이템 권한 체크 (높음)
```python
# rb10508: growth.py 시스템
async def check_item_equipped(user_id, "gmail"):
    # 스킬 호출 전 권한 확인
    if not is_equipped:
        return "Gmail을 먼저 연결해주세요!"

# rb8001: 체크 없이 바로 호출 → 에러 발생
```
**이식 방법**: `/app/core/growth.py` 추가

### 4. 👤 사용자별 메모리 격리 (필수)
```python
# rb10508: 사용자별 독립 컬렉션
f"{robeing_id}_{user_id}_episodic"

# rb8001: 기본 컬렉션 공유 문제
```
**이식 방법**: 컬렉션 명명 규칙 변경

---

## 구현 상태 vs 설계

| 모듈 | rb8001 | rb10508 | 실제 구현 여부 | 이식 가치 |
|------|--------|---------|--------------|-----------|
| **MMR 알고리즘** | ❌ | ✅ | 구현 완료 | ⭐⭐⭐⭐⭐ |
| **다중 컬렉션** | ❌ | ✅ | 구현 완료 | ⭐⭐⭐⭐ |
| **아이템 체크** | ❌ | ✅ | 구현 완료 | ⭐⭐⭐⭐ |
| **베이지안 메모리** | ❌ | 부분 | 부분 구현 | ⭐⭐⭐ |
| **Langchain** | ❌ | ✅ | 구현 완료 | ⭐⭐⭐ |
| **감정 시스템** | ❌ | 임시 | 미구현 | ⭐ |
| **윤리 필터** | ❌ | 빈 파일 | 미구현 | ⭐ |

---

## 단계별 이식 계획

### Phase 1 (즉시)
1. MMR 알고리즘 함수 복사
2. composite_scores 추가
3. 테스트 및 검증

### Phase 2 (1주)
1. ChromaDB 1.0 업그레이드
2. 다중 컬렉션 마이그레이션
3. 사용자별 격리 구현

### Phase 3 (2주)
1. growth.py 아이템 시스템
2. Gmail 권한 체크 미들웨어
3. 스킬 호출 전 검증 로직

---

## 주의사항
- 감정/윤리 모듈은 설계만 존재, 실제 구현 없음
- Stats 시스템은 rb8001이 더 완성도 높음 (유지)
- 이미 둘 다 skill-embedding 사용 중 (메모리 최적화 완료)