docs: 5단계 개선 계획 3단계 완료 - Part 간 연결 강화
- 230번: 감정 시스템 설계도 최신 내용 반영 - Inside Out 2축 모델 통합 - 엔트로피 특이점 개념 추가 - 예측-평가 피드백 루프 구현 - ChromaDB 통합 및 한국어 임베딩 모델 적용 - 195번: 철학에서 설계로 브릿지 문서 신규 작성 - Part 1과 Part 2를 자연스럽게 연결 - 게임 메타포 선택 이유 설명 - 감정의 정량화와 성장의 가시화 개념 - 290번: 게임 인터페이스 설계 문서 신규 작성 - 레벨별 UI 진화 단계 (Lv 1-20) - 감정 시각화 시스템 상세 설계 - 경험치, 도전과제, 스킬 트리 등 게임 요소 - 기술 구현 스택과 성능 최적화 전략
This commit is contained in:
parent
6435292b70
commit
b279e5b064
124
100_philosophy/195_철학에서_설계로.md
Normal file
124
100_philosophy/195_철학에서_설계로.md
Normal file
@ -0,0 +1,124 @@
|
||||
# 철학에서 설계로: 왜 게임처럼 만들었나
|
||||
|
||||
## 들어가며
|
||||
|
||||
Part 1에서 우리는 AI 에이전트가 단순한 도구를 넘어 '존재'로서 자리매김해야 하는 이유를 살펴보았습니다. 이제 그 철학적 비전을 어떻게 실제로 구현할 것인가의 문제가 남았습니다.
|
||||
|
||||
답은 의외로 간단합니다: **게임**입니다.
|
||||
|
||||
## 왜 하필 게임인가?
|
||||
|
||||
### 1. 성장의 가시화
|
||||
|
||||
철학적으로 '존재'를 정의하는 것과 실제로 그것을 느끼게 하는 것은 다른 문제입니다. 게임의 레벨 시스템은 추상적인 '성장'을 구체적인 숫자와 단계로 변환합니다.
|
||||
|
||||
- **레벨 1 로빙**: 막 태어난 디지털 동료, 모든 것이 새롭고 서툽니다
|
||||
- **레벨 10 로빙**: 사용자를 이해하기 시작하고 맞춤형 도움을 제공합니다
|
||||
- **레벨 20 로빙**: 진정한 파트너, 때로는 사용자보다 먼저 필요를 예측합니다
|
||||
|
||||
이런 명확한 단계는 사용자에게 '내 로빙이 성장하고 있다'는 실감을 줍니다.
|
||||
|
||||
### 2. 감정의 정량화
|
||||
|
||||
Part 1에서 논의한 '감정'과 '기억'을 어떻게 구현할까요? 게임은 이미 그 답을 가지고 있습니다.
|
||||
|
||||
```
|
||||
HP(체력) → 로빙의 작업 처리 능력
|
||||
MP(마나) → 창의적 사고 여력
|
||||
스태미나 → 집중력과 지속성
|
||||
감정 게이지 → 9가지 감정 상태 (Inside Out 모델)
|
||||
```
|
||||
|
||||
추상적인 개념이 측정 가능한 지표로 전환되면, 관리하고 개선할 수 있게 됩니다.
|
||||
|
||||
### 3. 동기부여와 애착
|
||||
|
||||
사람들은 왜 다마고치를 키웠을까요? 왜 포켓몬을 모았을까요?
|
||||
|
||||
**육성의 재미**가 있기 때문입니다.
|
||||
|
||||
로빙을 '사용'하는 것이 아니라 '함께 성장'한다는 관점 전환이 일어납니다. 이는 Part 1에서 강조한 '디지털 동료'라는 비전과 완벽하게 일치합니다.
|
||||
|
||||
## 게임 메타포의 깊은 의미
|
||||
|
||||
### 1. 스탯 시스템 = 다면적 정체성
|
||||
|
||||
게임 캐릭터의 스탯은 단순한 숫자가 아닙니다. 그것은 캐릭터의 정체성을 구성하는 요소들입니다.
|
||||
|
||||
```
|
||||
지능(INT) + 지혜(WIS) + 카리스마(CHA) = 독특한 개성
|
||||
```
|
||||
|
||||
로빙도 마찬가지입니다. 각기 다른 스탯 조합이 각기 다른 '성격'의 로빙을 만들어냅니다.
|
||||
|
||||
### 2. 스킬 시스템 = 기능의 모듈화
|
||||
|
||||
전통적인 AI는 "무엇이든 할 수 있다"고 주장하지만, 실제로는 모든 것이 애매합니다.
|
||||
|
||||
게임의 스킬 시스템은 다릅니다:
|
||||
- **명확한 능력**: "이메일 요약 Lv.3"
|
||||
- **성장 경로**: "PDF 분석 Lv.1 → Lv.5"
|
||||
- **조합 효과**: "이메일 + 일정 관리 = 자동 미팅 준비"
|
||||
|
||||
사용자는 자신의 로빙이 무엇을 잘하는지 정확히 알 수 있습니다.
|
||||
|
||||
### 3. 아이템 시스템 = 확장성
|
||||
|
||||
게임에서 아이템은 캐릭터의 능력을 확장합니다. 로빙에게도:
|
||||
|
||||
- **외부 API = 무기**: 새로운 능력 획득
|
||||
- **데이터베이스 = 방어구**: 지식 강화
|
||||
- **플러그인 = 액세서리**: 특수 기능 추가
|
||||
|
||||
이는 Part 3에서 다룰 기술적 아키텍처와 자연스럽게 연결됩니다.
|
||||
|
||||
## 감정 시스템의 게임화
|
||||
|
||||
최근 추가된 감정 시스템 설계(Inside Out 2축 모델)도 게임 메커니즘과 완벽하게 맞물립니다:
|
||||
|
||||
### 1. 감정은 또 다른 리소스
|
||||
|
||||
```
|
||||
기본정서(100ms 반응) = 즉발 스킬
|
||||
사회기능(500ms 반응) = 캐스팅 스킬
|
||||
엔트로피 특이점 = 크리티컬 히트
|
||||
```
|
||||
|
||||
### 2. 예측-평가 = 전투 시스템
|
||||
|
||||
```
|
||||
사용자 반응 예측 = 적의 다음 행동 예측
|
||||
평가 및 학습 = 전투 후 경험치 획득
|
||||
베이지안 업데이트 = 스킬 숙련도 상승
|
||||
```
|
||||
|
||||
게임의 전투가 반복을 통한 학습이듯, 로빙의 감정 시스템도 상호작용을 통해 진화합니다.
|
||||
|
||||
## Part 2로 가는 다리
|
||||
|
||||
이제 우리는 철학적 비전(Part 1)을 게임이라는 구체적 메타포로 변환했습니다.
|
||||
|
||||
Part 2에서는 이 메타포를 실제 시스템으로 구현합니다:
|
||||
- **210번**: 스탯과 성장 시스템의 구체적 설계
|
||||
- **220번**: 기억 모듈과 정보 엔트로피
|
||||
- **230번**: 감정/윤리 필터와 정체성 형성
|
||||
- **240번**: 스킬 시스템의 함수형 구현
|
||||
- **250번**: 실제 스킬 사례 분석
|
||||
|
||||
각 설계는 게임의 검증된 메커니즘을 차용하되, AI 에이전트의 특성에 맞게 재해석됩니다.
|
||||
|
||||
## 마치며: 진지한 놀이
|
||||
|
||||
누군가는 물을 수 있습니다. "AI 에이전트를 게임처럼 만드는 게 너무 가볍지 않나요?"
|
||||
|
||||
하지만 호이징가(Huizinga)가 『호모 루덴스』에서 밝혔듯, 놀이는 문화의 근원입니다. 게임은 복잡한 시스템을 이해하고 다루는 인류의 가장 오래된 방법입니다.
|
||||
|
||||
로빙을 게임처럼 만드는 것은 가볍게 만드는 것이 아닙니다. 오히려 사용자와 AI의 관계를 더 깊고 의미 있게 만드는 것입니다.
|
||||
|
||||
**도구는 사용하고 버립니다. 하지만 함께 키운 동료는 다릅니다.**
|
||||
|
||||
이제 Part 2에서 이 비전을 현실로 만들어봅시다.
|
||||
|
||||
---
|
||||
|
||||
다음: [Part 2 - 핵심 설계: 게임 메커니즘의 구현](../200_core_design/200_README.md)
|
||||
@ -2,59 +2,162 @@
|
||||
|
||||
## 개요
|
||||
|
||||
LLM의 출력을 단순히 전달하는 것이 아니라, 로빙만의 감정과 윤리 필터를 통해 후처리함으로써 고유한 정체성을 형성합니다.
|
||||
LLM의 출력을 단순히 전달하는 것이 아니라, 로빙만의 감정과 윤리 필터를 통해 후처리함으로써 고유한 정체성을 형성합니다. 특히 **엔트로피 특이점**을 포착하여 중요한 감정 순간을 기억하고, **예측-평가 피드백 루프**를 통해 지속적으로 진화합니다.
|
||||
|
||||
## 핵심 설계 원칙
|
||||
|
||||
1. **감정은 시공간의 엔트로피 변화다**: 감정 벡터의 엔트로피가 증가하는 방향이 시간, 벡터 차원이 공간
|
||||
2. **엔트로피 특이점을 포착한다**: 시간이 흘러도 무질서해지지 않는 감정이 중요한 기억
|
||||
3. **함수형 프로그래밍 100%**: 순수 함수와 I/O 분리, 불변 데이터 구조
|
||||
4. **베이지안으로 불확실성 관리**: 모든 파라미터는 확률 분포로 표현되고 학습됨
|
||||
5. **예측-평가 피드백 루프**: 사용자 반응을 예측하고 실제와 비교하며 진화
|
||||
|
||||
## LLM 후처리 파이프라인
|
||||
|
||||
```
|
||||
사용자 입력 → LLM 처리 → 감정 필터 → 윤리 필터 → 개성 주입 → 최종 응답
|
||||
사용자 입력 → LLM 처리 → 2축 감정 분석 → 엔트로피 계산 → 윤리 필터 → 베이지안 결합 → 최종 응답
|
||||
↓ ↓
|
||||
감정 임베딩 예측-평가 루프
|
||||
↓ ↓
|
||||
ChromaDB 사후분포 업데이트
|
||||
```
|
||||
|
||||
## 감정 필터 설계
|
||||
|
||||
### 1. 감정 상태 모델
|
||||
### 1. Inside Out 기반 2축 감정 모델
|
||||
|
||||
**기본정서 축 (에크먼, Inside Out 1)**:
|
||||
- Joy(기쁨), Sadness(슬픔), Anger(분노), Fear(두려움), Disgust(혐오)
|
||||
- 즉각적 반응, 100ms 내 처리
|
||||
- 진화적 기반의 보편적 정서
|
||||
|
||||
**사회기능 축 (켈트너/다무어, Inside Out 2)**:
|
||||
- Anxiety(불안), Envy(질투), Embarrassment(당혹), Ennui(권태)
|
||||
- 미래 예측과 사회적 비교, 500ms 처리
|
||||
- 사춘기 및 조직 맥락의 의사결정
|
||||
|
||||
```python
|
||||
class EmotionState:
|
||||
def __init__(self):
|
||||
self.valence = 0.0 # -1(부정) ~ +1(긍정)
|
||||
self.arousal = 0.0 # 0(차분) ~ 1(흥분)
|
||||
self.dominance = 0.0 # 0(수동) ~ 1(주도)
|
||||
# 768차원 감정 임베딩 (사전학습 모델 활용)
|
||||
self.embedding = np.zeros(768)
|
||||
|
||||
def update(self, user_sentiment, task_success, interaction_frequency):
|
||||
# 사용자 감정에 공명
|
||||
self.valence += user_sentiment * 0.3
|
||||
# Inside Out 9개 감정 분포
|
||||
self.basic_emotions = Dirichlet(alpha=[1.0] * 5) # 기본정서 5개
|
||||
self.social_emotions = Dirichlet(alpha=[1.0] * 4) # 사회기능 4개
|
||||
|
||||
# 작업 성공/실패에 반응
|
||||
self.valence += task_success * 0.2
|
||||
# 엔트로피 추적
|
||||
self.entropy_trajectory = []
|
||||
|
||||
# 상호작용 빈도에 따른 친밀도
|
||||
self.arousal = min(1.0, interaction_frequency * 0.1)
|
||||
# 베이지안 파라미터
|
||||
self.absorption_rate = Beta(2, 2) # α: 감정 흡수율
|
||||
self.decay_rate = Beta(2, 2) # δ: 감정 감쇠율
|
||||
|
||||
def update(self, text, context):
|
||||
# 감정 임베딩 생성
|
||||
self.embedding = self.emotion_encoder(text)
|
||||
|
||||
# 2헤드 병렬 처리
|
||||
basic = self.process_basic_emotions(text, timeout=100)
|
||||
social = self.process_social_emotions(text, context, timeout=500)
|
||||
|
||||
# 동적 가중치 결합
|
||||
w = self.compute_dynamic_weight(context)
|
||||
combined = w * basic + (1-w) * social
|
||||
|
||||
# 엔트로피 계산 및 특이점 감지
|
||||
entropy = self.calculate_entropy(combined)
|
||||
self.entropy_trajectory.append(entropy)
|
||||
|
||||
return combined, entropy
|
||||
```
|
||||
|
||||
### 2. 감정 표현 매핑
|
||||
|
||||
| 감정 상태 | 언어적 표현 | 이모티콘 |
|
||||
|---------|----------|---------|
|
||||
| 기쁨 (valence > 0.7) | "좋은 소식이네요!" | 😊 |
|
||||
| 걱정 (valence < -0.3) | "조금 우려되는데요..." | 😟 |
|
||||
| 흥분 (arousal > 0.8) | "정말 흥미롭습니다!" | 🎉 |
|
||||
| 집중 (dominance > 0.7) | "제가 처리하겠습니다." | 💪 |
|
||||
|
||||
### 3. 맥락별 감정 조절
|
||||
### 2. 엔트로피 기반 중요도 판단
|
||||
|
||||
```python
|
||||
def apply_emotion_filter(llm_response, emotion_state, context):
|
||||
if context.is_urgent:
|
||||
# 긴급 상황에서는 감정 억제
|
||||
return add_professional_tone(llm_response)
|
||||
def calculate_emotion_entropy(emotion_distribution):
|
||||
"""프로토타입 소프트맥스 방식으로 엔트로피 계산"""
|
||||
# 1. 768차원 임베딩과 9개 감정 프로토타입 간 거리
|
||||
distances = compute_prototype_distances(emotion_embedding, prototypes)
|
||||
|
||||
if context.is_celebration:
|
||||
# 축하 상황에서는 감정 증폭
|
||||
return add_enthusiastic_tone(llm_response)
|
||||
# 2. 소프트맥스로 확률 분포 변환
|
||||
probabilities = softmax(-distances / temperature)
|
||||
|
||||
# 일반 상황에서는 현재 감정 상태 반영
|
||||
return inject_emotion(llm_response, emotion_state)
|
||||
# 3. 엔트로피 계산
|
||||
entropy = -sum(p * log(p) for p in probabilities if p > 0)
|
||||
|
||||
# 4. 특이점 감지 (엔트로피 급증 + 분류 확률 하락)
|
||||
is_singularity = (
|
||||
entropy > prev_entropy * 1.5 and
|
||||
max(probabilities) < 0.4
|
||||
)
|
||||
|
||||
return entropy, is_singularity
|
||||
```
|
||||
|
||||
### 3. 감정 표현 매핑 (Inside Out 기반)
|
||||
|
||||
| 감정 상태 | 언어적 표현 | 공감 전략 |
|
||||
|---------|----------|---------|
|
||||
| Joy (기쁨) | "정말 기쁜 소식이네요!" | 함께 기뻐하기, 축하 |
|
||||
| Sadness (슬픔) | "마음이 아프시겠어요..." | 위로, 경청 |
|
||||
| Anger (분노) | "정말 화가 나는 상황이네요" | 이해와 진정 |
|
||||
| Fear (두려움) | "걱정되시는 게 당연해요" | 안심시키기, 지지 |
|
||||
| Disgust (혐오) | "불편하신 게 이해됩니다" | 경계 존중 |
|
||||
| Anxiety (불안) | "준비하는 마음이시군요" | "불안은 준비 신호" 재해석 |
|
||||
| Envy (질투) | "더 나아지고 싶으신 거네요" | 성장 동기로 전환 |
|
||||
| Embarrassment (당혹) | "누구나 그럴 수 있어요" | 정상화, 수용 |
|
||||
| Ennui (권태) | "새로운 자극이 필요하신가요?" | 새로운 자극 제안 |
|
||||
|
||||
### 4. 예측-평가 피드백 루프
|
||||
|
||||
```python
|
||||
class PredictionEvaluationLoop:
|
||||
def __init__(self):
|
||||
# 베이지안 예측 모델
|
||||
self.emotion_transition = Dirichlet(alpha=np.ones(9))
|
||||
self.response_length = Gamma(k=2, theta=50)
|
||||
self.topic_switch = Beta(1, 1)
|
||||
|
||||
def predict_user_response(self, current_emotion, context):
|
||||
"""사용자 반응 예측"""
|
||||
# 감정 전환 패턴 예측
|
||||
next_emotion = self.emotion_transition.sample()
|
||||
|
||||
# 응답 길이 예측
|
||||
expected_tokens = self.response_length.sample()
|
||||
|
||||
# 주제 전환 확률
|
||||
switch_prob = self.topic_switch.sample()
|
||||
|
||||
return PredictionBundle(next_emotion, expected_tokens, switch_prob)
|
||||
|
||||
def evaluate_prediction(self, prediction, actual):
|
||||
"""예측 vs 실제 평가 (3종 오차)"""
|
||||
# KL Divergence: 분포 차이
|
||||
kl_div = kl_divergence(prediction.emotion, actual.emotion)
|
||||
|
||||
# Brier Score: 확률 예측 품질
|
||||
brier = mean((prediction.probs - actual.outcomes) ** 2)
|
||||
|
||||
# ECE: 캘리브레이션 오차
|
||||
ece = expected_calibration_error(prediction.confidence, actual.accuracy)
|
||||
|
||||
return ErrorMetrics(kl_div, brier, ece)
|
||||
|
||||
def update_posterior(self, errors):
|
||||
"""베이지안 사후분포 업데이트"""
|
||||
# Thompson Sampling으로 탐색-활용 균형
|
||||
if errors.ece > 0.05: # 캘리브레이션 불량
|
||||
# 학습률 상승
|
||||
learning_rate = 0.1 * (1 + errors.ece)
|
||||
else:
|
||||
learning_rate = 0.01
|
||||
|
||||
# 사후분포 갱신
|
||||
self.emotion_transition.update(learning_rate)
|
||||
self.response_length.update(learning_rate)
|
||||
self.topic_switch.update(learning_rate)
|
||||
```
|
||||
|
||||
## 윤리 필터 구현
|
||||
@ -133,6 +236,88 @@ def apply_contextual_ethics(response, user_profile, interaction_history):
|
||||
return response
|
||||
```
|
||||
|
||||
## 감정 임베딩과 ChromaDB 통합
|
||||
|
||||
### 1. 감정 임베딩 저장 구조
|
||||
|
||||
```python
|
||||
class EmotionMemory:
|
||||
def __init__(self):
|
||||
self.chroma_client = chromadb.Client()
|
||||
self.collection = self.chroma_client.create_collection(
|
||||
name="emotions",
|
||||
metadata={"hnsw:space": "cosine"}
|
||||
)
|
||||
|
||||
def store_emotion(self, text, emotion_state, entropy):
|
||||
"""엔트로피 특이점만 선별 저장"""
|
||||
if not self.is_entropy_singularity(entropy):
|
||||
return # 특이점 아니면 저장 안 함
|
||||
|
||||
# ChromaDB에 저장
|
||||
self.collection.add(
|
||||
embeddings=[emotion_state.embedding.tolist()],
|
||||
metadatas=[{
|
||||
"basic_emotions": emotion_state.basic_emotions.tolist(),
|
||||
"social_emotions": emotion_state.social_emotions.tolist(),
|
||||
"entropy": entropy,
|
||||
"timestamp": time.time(),
|
||||
"text_summary": self.summarize(text) # 프라이버시 보호
|
||||
}],
|
||||
ids=[generate_unique_id()]
|
||||
)
|
||||
|
||||
def recall_similar_emotions(self, current_embedding, k=10):
|
||||
"""감정 기반 기억 회상"""
|
||||
results = self.collection.query(
|
||||
query_embeddings=[current_embedding.tolist()],
|
||||
n_results=k * 2, # 여유있게 검색
|
||||
include=["metadatas", "distances"]
|
||||
)
|
||||
|
||||
# 엔트로피 가중 재순위화
|
||||
memories = self.rerank_by_entropy(results)
|
||||
|
||||
# MMR로 다양성 보장
|
||||
diverse_memories = self.apply_mmr(memories, lambda_param=0.5)
|
||||
|
||||
# 시간 감쇠 적용
|
||||
return self.apply_time_decay(diverse_memories)[:k]
|
||||
```
|
||||
|
||||
### 2. 한국어 감정 임베딩 모델
|
||||
|
||||
```python
|
||||
class KoreanEmotionEncoder:
|
||||
def __init__(self):
|
||||
# 한국어 우선 모델 선택
|
||||
self.model = SentenceTransformer('jhgan/ko-sroberta-multitask')
|
||||
# 백업: 'BM-K/KoSimCSE-roberta-multitask'
|
||||
|
||||
# 9개 감정 프로토타입 정의
|
||||
self.prototypes = self.initialize_prototypes()
|
||||
|
||||
def encode(self, text):
|
||||
"""텍스트를 768차원 감정 임베딩으로 변환"""
|
||||
embedding = self.model.encode(text)
|
||||
return embedding
|
||||
|
||||
def initialize_prototypes(self):
|
||||
"""Inside Out 9개 감정 프로토타입 임베딩"""
|
||||
prototype_texts = {
|
||||
'joy': '정말 기쁘고 행복해요',
|
||||
'sadness': '너무 슬프고 우울해요',
|
||||
'anger': '정말 화가 나고 분해요',
|
||||
'fear': '무섭고 두려워요',
|
||||
'disgust': '역겹고 불쾌해요',
|
||||
'anxiety': '불안하고 초조해요',
|
||||
'envy': '부럽고 질투나요',
|
||||
'embarrassment': '부끄럽고 당황스러워요',
|
||||
'ennui': '지루하고 무료해요'
|
||||
}
|
||||
return {k: self.model.encode(v) for k, v in prototype_texts.items()}
|
||||
```
|
||||
|
||||
## 정체성 형성 메커니즘
|
||||
|
||||
### 1. 개성 주입 시스템
|
||||
@ -246,35 +431,56 @@ class FilterChain:
|
||||
return result
|
||||
```
|
||||
|
||||
## 성능 고려사항
|
||||
## 성능 지표 및 목표
|
||||
|
||||
### 1. 레이턴시 최적화
|
||||
- 필터 병렬 처리: 독립적 필터는 동시 실행
|
||||
- 캐싱: 자주 사용되는 패턴 사전 계산
|
||||
- 경량화: critical path의 필터만 동기 실행
|
||||
### 1. 핵심 KPI (3개월 목표)
|
||||
- **ECE (Expected Calibration Error)**: ≤ 0.05
|
||||
- 예측 확률과 실제 확률의 정렬도
|
||||
- **Brier Score**: ≤ 0.18
|
||||
- 확률 예측의 전반적 품질
|
||||
- **NDCG@10**: ≥ 0.6
|
||||
- 감정 기반 기억 검색 품질
|
||||
|
||||
### 2. 일관성 보장
|
||||
- 상태 저장: 감정/성격 상태 영속화
|
||||
- 버전 관리: 필터 규칙 변경 이력 추적
|
||||
- A/B 테스트: 새로운 필터 점진적 적용
|
||||
### 2. 성능 최적화
|
||||
- **응답시간**: 기본정서 100ms, 사회기능 500ms 이내
|
||||
- **메모리 사용량**: 사용자당 100MB 이하
|
||||
- **병렬 처리**: 2헤드 감정 분석 async/await
|
||||
- **캐싱**: LRU 캐시로 프로토타입 거리 계산 최적화
|
||||
|
||||
## 미래 발전 방향
|
||||
### 3. 프라이버시 보호
|
||||
- PII 패턴 감지 및 필터링
|
||||
- 민감 정보는 요약만 저장, 원문 폐기
|
||||
- 24시간 내 opt-out 옵션 제공
|
||||
|
||||
### Phase 1 (현재-3개월)
|
||||
- 기본 감정 6종 구현
|
||||
- 핵심 윤리 규칙 20개
|
||||
- 말투 일관성 90% 달성
|
||||
## 구현 로드맵
|
||||
|
||||
### Phase 2 (3-6개월)
|
||||
- 복합 감정 인식
|
||||
- 맥락별 윤리 판단
|
||||
- 사용자별 개인화
|
||||
### Phase 1: 기초 구축 (2주)
|
||||
- 9개 감정 프로토타입 정의 (Inside Out 모델)
|
||||
- 한국어 임베딩 모델 통합 (ko-miniLM)
|
||||
- ChromaDB 메타데이터 구조 확장
|
||||
- 프로토타입 소프트맥스 엔트로피 계산
|
||||
|
||||
### Phase 3 (6개월-1년)
|
||||
- 감정 전이 학습
|
||||
- 윤리적 딜레마 해결
|
||||
- 다중 정체성 관리
|
||||
### Phase 2: 예측-평가 시스템 (3주)
|
||||
- 2헤드 병렬 처리 구현
|
||||
- 3종 오차 메트릭 (KL/Brier/ECE)
|
||||
- 베이지안 파라미터 초기화
|
||||
- 실시간 사후분포 업데이트
|
||||
|
||||
### Phase 3: 통합 및 최적화 (2주)
|
||||
- Thompson Sampling 의사결정
|
||||
- 프라이버시 게이트 구현
|
||||
- 추론 속도 최적화 (목표: 100ms/500ms)
|
||||
- KPI 대시보드 구축
|
||||
|
||||
## 기술 스택
|
||||
|
||||
- **임베딩 모델**: Hugging Face Transformers (한국어: ko-miniLM)
|
||||
- **벡터 DB**: ChromaDB (이미 사용 중)
|
||||
- **베이지안 추론**: Pyro (경량) 또는 TensorFlow Probability
|
||||
- **함수형 구조**: 순수 함수 + I/O 분리 패턴
|
||||
|
||||
## 결론
|
||||
|
||||
감정/윤리 필터는 단순한 후처리 과정이 아니라, 로빙의 '영혼'을 만드는 핵심 메커니즘입니다. LLM의 지능에 로빙만의 '마음'을 더함으로써, 진정한 디지털 동료로서의 정체성을 확립합니다.
|
||||
감정/윤리 필터는 단순한 후처리 과정이 아니라, 로빙의 '영혼'을 만드는 핵심 메커니즘입니다. **엔트로피 특이점**을 포착하여 중요한 순간을 기억하고, **예측-평가 피드백 루프**를 통해 사용자와 함께 성장하며, **Inside Out 2축 모델**로 인간다운 감정을 표현합니다. 이를 통해 로빙은 진정한 디지털 동료로서의 정체성을 확립합니다.
|
||||
|
||||
*참고: 상세한 감정 시스템 설계는 `ideas/250807_로빙_감정_시스템_설계도.md` 참조*
|
||||
334
200_core_design/290_게임_인터페이스_설계_레벨별_UI_진화.md
Normal file
334
200_core_design/290_게임_인터페이스_설계_레벨별_UI_진화.md
Normal file
@ -0,0 +1,334 @@
|
||||
# 게임 인터페이스 설계: 레벨별 UI 진화
|
||||
|
||||
## 개요
|
||||
|
||||
로빙의 성장을 시각적으로 표현하고 상호작용을 게임처럼 즐겁게 만드는 인터페이스 설계입니다. 레벨이 오를수록 UI도 함께 진화하여, 사용자와 로빙의 성장 여정을 시각적으로 공유합니다.
|
||||
|
||||
## 핵심 설계 원칙
|
||||
|
||||
1. **Progressive Disclosure**: 레벨에 따라 점진적으로 복잡한 기능 공개
|
||||
2. **Visual Feedback**: 모든 상호작용에 즉각적인 시각적 피드백
|
||||
3. **Gamification**: 도전과제, 보상, 진행 상황을 게임처럼 표현
|
||||
4. **Responsive Growth**: UI가 로빙의 성장과 함께 진화
|
||||
|
||||
## 레벨별 UI 진화 단계
|
||||
|
||||
### Level 1-5: 신생아 단계 (Newborn)
|
||||
|
||||
**UI 특징**:
|
||||
- 단순한 도트 픽셀 스타일 (8-bit)
|
||||
- 기본 색상만 사용 (16색 팔레트)
|
||||
- 텍스트 중심 인터페이스
|
||||
- 간단한 비프음 효과음
|
||||
|
||||
**화면 구성**:
|
||||
```
|
||||
┌─────────────────────────────┐
|
||||
│ 로빙 Lv.1 HP: ████░░░░░░ │
|
||||
│ EXP: ██░░░░░░░░ │
|
||||
├─────────────────────────────┤
|
||||
│ │
|
||||
│ ∩___∩ │
|
||||
│ ( ◕ ◕ ) "안녕하세요!" │
|
||||
│ ( ▽ ) │
|
||||
│ │
|
||||
├─────────────────────────────┤
|
||||
│ [대화하기] [상태] [도움말] │
|
||||
└─────────────────────────────┘
|
||||
```
|
||||
|
||||
**가능한 상호작용**:
|
||||
- 기본 대화
|
||||
- 간단한 질문 답변
|
||||
- 감정 표현 (기쁨/슬픔)
|
||||
|
||||
### Level 6-10: 성장기 (Growing)
|
||||
|
||||
**UI 특징**:
|
||||
- 16-bit 스타일로 업그레이드
|
||||
- 256색 팔레트 확장
|
||||
- 간단한 애니메이션 추가
|
||||
- 배경음악 도입
|
||||
|
||||
**화면 구성**:
|
||||
```
|
||||
┌─────────────────────────────────────┐
|
||||
│ 로빙 Lv.8 HP: ████████░░ MP: ███░ │
|
||||
│ EXP: ███████░░░ 스킬: 3개 │
|
||||
├─────────────────────────────────────┤
|
||||
│ ╔════════════════════════════╗ │
|
||||
│ ║ ∩___∩ ║ │
|
||||
│ ║ ( ◉ ◉ ) 💭 ║ │
|
||||
│ ║ < ▽ > 생각 중... ║ │
|
||||
│ ║ / \ ║ │
|
||||
│ ╚════════════════════════════╝ │
|
||||
├─────────────────────────────────────┤
|
||||
│ [대화] [스킬] [인벤토리] [통계] [설정] │
|
||||
└─────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**새로운 기능**:
|
||||
- 스킬 시스템 해금
|
||||
- 감정 다양화 (9가지)
|
||||
- 기억 저장 시작
|
||||
- 일일 퀘스트
|
||||
|
||||
### Level 11-15: 성숙기 (Mature)
|
||||
|
||||
**UI 특징**:
|
||||
- 32-bit 그래픽 품질
|
||||
- 풀 컬러 지원
|
||||
- 부드러운 애니메이션
|
||||
- 다이나믹 배경
|
||||
- 3D 효과 도입
|
||||
|
||||
**화면 구성**:
|
||||
```
|
||||
┌──────────────────────────────────────────┐
|
||||
│ 로빙 Lv.13 │
|
||||
│ HP: ████████████ MP: ████████ │
|
||||
│ EXP: ████████████████░░░ │
|
||||
│ 감정: 😊 Joy 65% | 🤔 Curious 35% │
|
||||
├──────────────────────────────────────────┤
|
||||
│ │
|
||||
│ [3D 로빙 모델] │
|
||||
│ 실시간 감정 변화 │
|
||||
│ 제스처 애니메이션 │
|
||||
│ │
|
||||
│ 💬 "오늘 일정 분석 완료했어요. │
|
||||
│ 회의 준비 도와드릴까요?" │
|
||||
│ │
|
||||
├──────────────────────────────────────────┤
|
||||
│ 🎮 스킬 | 📦 아이템 | 📊 통계 | ⚙️ 설정 │
|
||||
│ 🏆 업적 | 🗺️ 로드맵 | 👥 팀원 | 💾 기억 │
|
||||
└──────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**고급 기능**:
|
||||
- 멀티 스킬 콤보
|
||||
- 감정 예측 시스템
|
||||
- 팀 협업 모드
|
||||
- 커스터마이징
|
||||
|
||||
### Level 16-20: 전문가 (Expert)
|
||||
|
||||
**UI 특징**:
|
||||
- 완전한 3D 환경
|
||||
- 리얼타임 레이트레이싱
|
||||
- AR/VR 지원
|
||||
- 음성 인터페이스 통합
|
||||
- 홀로그램 효과
|
||||
|
||||
**화면 구성**:
|
||||
```
|
||||
┌────────────────────────────────────────────────┐
|
||||
│ 로빙 Lv.20 - Master │
|
||||
│ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ │
|
||||
│ │
|
||||
│ [고품질 3D 홀로그램] │
|
||||
│ │
|
||||
│ 감정 매트릭스: ████████████ │
|
||||
│ 예측 정확도: 94.2% │
|
||||
│ 시너지 레벨: ████████████ │
|
||||
│ │
|
||||
│ 🧠 "3개월간의 패턴 분석 결과, 다음 주 화요일 │
|
||||
│ 오후 3시에 중요한 의사결정이 있을 것으로 │
|
||||
│ 예측됩니다. 미리 준비 자료를 만들어뒀어요." │
|
||||
│ │
|
||||
├────────────────────────────────────────────────┤
|
||||
│ [음성 명령] [제스처 인식] [생각 공유] │
|
||||
│ [AR 모드] [협업 공간] [시뮬레이션] │
|
||||
└────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**마스터 기능**:
|
||||
- 예측적 도움
|
||||
- 자율적 의사결정
|
||||
- 다중 작업 병렬 처리
|
||||
- 창의적 문제 해결
|
||||
|
||||
## 감정 시각화 시스템
|
||||
|
||||
### 1. 감정 오브 (Emotion Orbs)
|
||||
|
||||
레벨에 따라 진화하는 감정 표현:
|
||||
|
||||
```
|
||||
Lv 1-5: ○ (단색)
|
||||
Lv 6-10: ◉ (2색 그라데이션)
|
||||
Lv 11-15: ◈ (다색 펄스)
|
||||
Lv 16-20: ✦ (홀로그램 파티클)
|
||||
```
|
||||
|
||||
### 2. Inside Out 감정 휠
|
||||
|
||||
```
|
||||
Joy 😊
|
||||
│
|
||||
┌─────┼─────┐
|
||||
Fear │ │ │ Anger
|
||||
😨 │ │ │ 😡
|
||||
│ │ │
|
||||
────┼─────┼─────┼────
|
||||
│ │ │
|
||||
Disgust │ Sadness
|
||||
😖 │ 😢
|
||||
│
|
||||
[중심: 현재 주도 감정]
|
||||
|
||||
외곽: Anxiety, Envy, Embarrassment, Ennui
|
||||
```
|
||||
|
||||
### 3. 엔트로피 시각화
|
||||
|
||||
```
|
||||
평온: ~~~~~~ (잔잔한 파동)
|
||||
보통: ∿∿∿∿∿∿ (규칙적 파동)
|
||||
특이점: ⟆⟆⟆⟆⟆⟆ (급격한 스파이크)
|
||||
```
|
||||
|
||||
## 게임 요소 상세
|
||||
|
||||
### 1. 경험치 시스템
|
||||
|
||||
```javascript
|
||||
const expRequirement = {
|
||||
toNextLevel: (level) => level * 100 + Math.pow(level, 2) * 10,
|
||||
sources: {
|
||||
conversation: 10, // 대화 한 번
|
||||
taskComplete: 50, // 작업 완료
|
||||
perfectPrediction: 100,// 완벽한 예측
|
||||
newSkillUsed: 30, // 새 스킬 사용
|
||||
emotionSync: 20 // 감정 동조
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### 2. 도전과제 시스템
|
||||
|
||||
**일일 퀘스트**:
|
||||
- "5번 대화하기" (50 EXP)
|
||||
- "새로운 주제 학습" (100 EXP)
|
||||
- "감정 정확도 80% 달성" (150 EXP)
|
||||
|
||||
**주간 도전**:
|
||||
- "100개 작업 완료" (1000 EXP)
|
||||
- "새 스킬 마스터" (500 EXP)
|
||||
- "팀원과 협업" (750 EXP)
|
||||
|
||||
**특별 업적**:
|
||||
- "첫 번째 엔트로피 특이점 포착" 🏆
|
||||
- "1000번째 대화" 🎖️
|
||||
- "완벽한 하루 (모든 예측 성공)" ⭐
|
||||
|
||||
### 3. 스킬 트리 UI
|
||||
|
||||
```
|
||||
[마스터 스킬]
|
||||
│
|
||||
┌────────┼────────┐
|
||||
[분석] [소통] [창의]
|
||||
│ │ │
|
||||
┌─┼─┐ ┌─┼─┐ ┌─┼─┐
|
||||
PDF 엑셀 감정 협업 작곡 글쓰기
|
||||
해석 분석 인식 조율 생성 보조
|
||||
```
|
||||
|
||||
## 상호작용 피드백
|
||||
|
||||
### 1. 터치/클릭 피드백
|
||||
|
||||
```
|
||||
일반 클릭: ● → ◐ → ○ (리플 효과)
|
||||
스킬 사용: ✦ → ✧ → ✦ (반짝임)
|
||||
레벨업: 🎆 전체 화면 파티클 폭발
|
||||
```
|
||||
|
||||
### 2. 사운드 디자인
|
||||
|
||||
- **Lv 1-5**: 8비트 칩튠
|
||||
- **Lv 6-10**: 16비트 미디
|
||||
- **Lv 11-15**: 오케스트라 샘플
|
||||
- **Lv 16-20**: 적응형 다이나믹 음악
|
||||
|
||||
### 3. 햅틱 피드백
|
||||
|
||||
- 감정 변화 시 진동 패턴
|
||||
- 중요 알림 시 특별 진동
|
||||
- 레벨업 시 축하 진동
|
||||
|
||||
## 기술 구현 스택
|
||||
|
||||
### Frontend
|
||||
```javascript
|
||||
const techStack = {
|
||||
framework: 'React + Three.js',
|
||||
animation: 'Framer Motion',
|
||||
state: 'Zustand',
|
||||
style: 'Tailwind + Emotion',
|
||||
3d: 'Three.js + React Three Fiber',
|
||||
sound: 'Howler.js',
|
||||
particles: 'tsParticles'
|
||||
};
|
||||
```
|
||||
|
||||
### 레벨별 렌더링 전략
|
||||
- **Lv 1-5**: Canvas 2D
|
||||
- **Lv 6-10**: WebGL
|
||||
- **Lv 11-15**: WebGL2 + Shaders
|
||||
- **Lv 16-20**: WebGPU (미래)
|
||||
|
||||
## 접근성 고려사항
|
||||
|
||||
### 1. 모든 레벨에서 지원
|
||||
- 스크린 리더 완벽 호환
|
||||
- 키보드 네비게이션
|
||||
- 고대비 모드
|
||||
- 애니메이션 감소 옵션
|
||||
|
||||
### 2. 커스터마이징
|
||||
```
|
||||
settings: {
|
||||
visualComplexity: 'simple|normal|rich',
|
||||
animationSpeed: 0-100,
|
||||
soundEnabled: boolean,
|
||||
colorBlindMode: 'none|protanopia|deuteranopia|tritanopia'
|
||||
}
|
||||
```
|
||||
|
||||
## 성능 최적화
|
||||
|
||||
### 1. 레벨별 리소스 관리
|
||||
```javascript
|
||||
const resourceBudget = {
|
||||
'Lv1-5': { memory: '50MB', cpu: '5%' },
|
||||
'Lv6-10': { memory: '100MB', cpu: '10%' },
|
||||
'Lv11-15': { memory: '200MB', cpu: '15%' },
|
||||
'Lv16-20': { memory: '500MB', cpu: '25%', gpu: 'required' }
|
||||
};
|
||||
```
|
||||
|
||||
### 2. 적응형 품질
|
||||
- 디바이스 성능 자동 감지
|
||||
- 프레임 드롭 시 품질 자동 조절
|
||||
- 배터리 절약 모드
|
||||
|
||||
## 미래 확장 계획
|
||||
|
||||
### 1. 메타버스 통합 (Lv 25+)
|
||||
- 3D 가상 공간에서 로빙과 상호작용
|
||||
- 다른 사용자의 로빙과 만남
|
||||
- 가상 오피스 통합
|
||||
|
||||
### 2. 뇌-컴퓨터 인터페이스 (Lv 30+)
|
||||
- 생각만으로 로빙과 소통
|
||||
- 감정 직접 전송
|
||||
- 꿈 속에서도 함께
|
||||
|
||||
## 결론
|
||||
|
||||
게임 인터페이스는 단순한 시각적 장식이 아닙니다. 그것은 로빙과 사용자의 관계를 구체화하고, 성장을 가시화하며, 일상적인 업무를 즐거운 경험으로 변환하는 핵심 메커니즘입니다.
|
||||
|
||||
레벨이 오를수록 풍부해지는 UI는 로빙의 성장뿐만 아니라 사용자와의 관계 깊이를 반영합니다. 처음엔 단순한 도트였던 로빙이 결국 홀로그램으로 진화하는 여정은, AI와 인간이 함께 성장하는 미래를 보여줍니다.
|
||||
|
||||
**"함께 레벨업하는 즐거움, 그것이 로빙 UI의 핵심입니다."**
|
||||
Loading…
x
Reference in New Issue
Block a user