Mind-Log v5.0 | 최종 업데이트: 2026-04-17 14:00


1. 전체 시스템 구조

Frontend (app-4:3000)
    ↓
Backend 서버 (app-3:8080) ←→ AI 서버 (app-2:8000)
    ↓                              ↓
   MySQL                    LangGraph 파이프라인
                            (TIER 0~4 + 비동기)

2. TIER 기반 파이프라인 v5.0

사용자 입력
    ↓
TIER 0: Intent Classifier (Haiku)
    │  의도 분류 + 1차 위기 감지 + complexity_score 산출 + execution_plan 생성
    ↓
TIER 1 — 병렬 Fan-out (asyncio):
    ├─ Safety Agent       (Sonnet 3.7 APAC CRIS) ← CRISIS 선점
    ├─ Emotion Agent      (Haiku)
    ├─ Content Analyzer   (Haiku)
    └─ Podcast Reasoning  (Sonnet 3.7 APAC CRIS)
          ├─ Episode Memory  ← complexity ≥ 0.6 시 DI 호출 (KT Cloud + Pinecone)
          └─ Knowledge Agent ← complexity ≥ 0.5 시 DI 호출 (Pinecone rag-suite-knowledge)
    ↓ Fan-in
TIER 2 — 병렬:
    ├─ Script Generator   (Haiku) — 세그먼트 배치 생성
    └─ Visualization      (Haiku + AWS Bedrock Titan Image v2 + S3)
    ↓
TIER 3: Batch Validator (Haiku)
    │  FAIL 시 → TIER 2 재시도 (max_retries=1)
    ↓
TIER 4: Script Personalizer (Sonnet 3.7 APAC CRIS)
    │  rule-based + optional LLM deep / memory_write 트리거
    ↓
팟캐스트 에피소드 출력 (final_output)
    ↓
비동기 후처리 (async_post_processing):
    ├─ Learning Agent (Sonnet 3.5 APAC CRIS)
    └─ Episode Memory 저장 (memory_write=True 시)

3. Safety CRISIS 선점 메커니즘 (PR #159 정상화)

Safety가 safety_flags.status="crisis" 판정 시, cancel_event는 발행되지 않습니다. TIER 1의 Emotion / Content Analyzer / Podcast Reasoning은 정상 완료됩니다. 후속 TIER(2~4)는 safety_flags.status 값을 감지해 LLM을 호출하지 않고 하드코딩된 위기 응답 폴백을 반환합니다. cancel_event.set()TIER 1 타임아웃 시에만 호출됩니다 (src/graph/workflow.py:378).

safe    → TIER 1~4 정상 완료
warning → TIER 1~4 정상 완료 → Script Personalizer에서 required_in_script 문구 삽입
crisis  → TIER 1 정상 완료 (cancel_event 미발행)
          → TIER 2 (Script Generator / Visualization): crisis 감지 → LLM 미호출, 하드코딩 폴백
          → TIER 3 (Batch Validator): crisis 감지 → 검증 스킵, 폴백 전달
          → TIER 4 (Script Personalizer): crisis 감지 → 위기 응답 고정 문구로 final_output 반환
timeout → TIER 1 타임아웃 시에만 cancel_event.set() (workflow.py:378)

관련 단위 테스트 +18건: TIER 2/3/4 crisis 폴백 동작을 검증 (549 → 612).


4. 에이전트 상세

에이전트 TIER 모델 핵심 기능
Intent Classifier 0 Haiku rule-based + LLM 분류, complexity_score, execution_plan, Redis 캐시(선택)
Safety Agent 1 Sonnet 3.7 L0~L4 판정, required_in_script 주입, CRISIS 선점
Emotion Agent 1 Haiku valence(-1~1), arousal(0~1), AgentDataPublisher
Content Analyzer 1 Haiku depth(light/moderate/deep), target_duration 3~5분, narrative_structure 4종
Podcast Reasoning 1 Sonnet 3.7 GoT→ToT→CoT (full_threshold=0.0, 항상 Full 추론), Neo4j+RDB 저장
Episode Memory 독립 Sonnet 3.5 KT Cloud 임베딩 + Pinecone(rag-suite-knowledge, PR #153), per-user namespace
Knowledge Agent 독립 Sonnet 3.5 Expert RAG 5단계, Pinecone(rag-suite-knowledge, PR #153)
Script Generator 2 Haiku 세그먼트 배치 생성, 150 WPM, prev context 150자
Visualization 2 Haiku+Titan AWS Bedrock Titan Image v2(us-east-1), S3(mindlog-images/vis/), SKIP_VISUALIZATION 환경변수
Batch Validator 3 Haiku PASS/FAIL/CRITICAL_FAIL, max_retries=1, forced_pass
Script Personalizer 4 Sonnet 3.7 FORMALITY/STYLE/ATTITUDE rule-based, deep_personalization=false
Learning Agent 비동기 Sonnet 3.5 BackendClient.save(RESOURCE_LEARNING), tier=None

5. AgentState (공유 상태 스키마)