Skip to content

PERSONA_SCENARIO_MODEL

lazybrain80 edited this page May 25, 2026 · 4 revisions

페르소나 + 상황 카드 모델 — 논의 자료

⚠️ 이 문서는 논의·검토용 자료입니다. 아직 확정된 설계 결정이 아니며, 7개 deliverable의 불변식을 바꾸지 않습니다. 2차 체험 시나리오(Figma 3061-1142, 3120-1161) 검토 과정에서 합의된 체험 구동 방식의 전환을 정리한 메모로, 팀 확정 시 SYSTEM_DESIGN §16에 2차 매핑 절로 흡수한다.

이 단계에서는 구체 구현(스키마·코드·설정 파일 형식)보다 개념과 데이터 흐름에 초점을 둔다. 구현 세부는 방향 확정 후 deliverable에서 다룬다.

작성일: 2026-05-25

1. 배경 — 무엇을 바꾸는가

2차 시나리오(하루 여정 / 장보기 기억 연속성)는 표면상 음성 인식, 냉장고 재고 비전, 반려동물 상태 인식, 업무량 감지, rPPG(remote PhotoPlethysmoGraphy, 원격 광용적맥파 측정) 등 다수의 실시간 인식(perception) 기능을 요구하는 것처럼 보인다. 그러나 전시 운영상 이들 대부분은 실제 동작이 아니라 연출(staging) 또는 사전 가정된 고정 상황으로 처리할 예정이다.

이 전제를 하나의 설계 모델로 정리한 것이 본 문서다:

체험자는 입장 전에 캐릭터(페르소나)를 고르고, 각 장소에는 사전 작성된 상황(situation) 카드가 그 캐릭터에 맞춰 추첨되어 상태 저장소에 올라간다. 이후 사건(zone 진입·명령 등)이 일어나면 AI가 그 "지정된 상황" 위에서 적절히 반응한다.

핵심 아이디어는 무작위성을 상황 카드 추첨 한 곳에만 가둔다는 것이다. 어떤 상황이 펼쳐질지는 매번 달라지지만, AI는 이미 정해진 상황 위에서 대사·옵션·로봇 동작만 변주하므로 체험은 매번 신선하되 서사와 안전은 통제된다.

2. 이 모델이 없애는 기술 부담

실시간 인식을 "사전 작성된 상황 카드"로 대체하면, 앞선 검토에서 큰 공백으로 지적했던 기능 대부분이 개발 대상에서 빠진다.

2차 시나리오 요구 종전 판정 본 모델 적용 후
음성 혼잣말 인식 + 위치 태깅 ❌ ASR(Automatic Speech Recognition, 자동 음성 인식) 신규 도메인 상황 카드 텍스트로 대체 — ASR 불요 (음성은 선택적 연출)
냉장고/세제/계란 재고 비전 ❌ 사물 CV(Computer Vision, 컴퓨터 비전) 신규 카드 텍스트 ("우유가 3일 뒤 떨어진다")
반려동물 상태(구토/활동) 🎭 연출 카드 텍스트
업무량 감지·선제 경고 🔶 외부 데이터 소스 카드 텍스트
수면/피로/rPPG 🔶 wearable 미결 카드 또는 페르소나의 '개인사정'

비전의 역할은 "누가 어느 zone에 있는가"(사람 입·퇴장)로 축소된다 — 현 Frigate 설계(SYSTEM_DESIGN §3.2)가 정확히 그 일을 하도록 만들어져 있어, 사물·동물·표정 인식이 전부 불필요해진다.

3. 두 가지 새 컨텍스트 — 페르소나와 활성 상황

이 모델은 세션(체험자 한 명의 한 번 방문) 컨텍스트에 두 가지 개념을 더한다. 둘 다 새 통신 경로를 만들지 않고, 기존 컨텍스트 흐름을 그대로 탄다.

개념 담는 내용 예시 정해지는 시점
페르소나 체험자가 고른 캐릭터 — 직업·성격·개인사정 세 축 개발자 · 내향적 · 야근이 잦음 입장 전 1회
활성 상황 지금 이 zone에서 뽑힌 상황 카드 1장 "우유가 3일 내 소진 예상" zone에 들어올 때마다 갱신

데이터 흐름·저장: 두 값 모두 기존 컨텍스트 갱신 흐름을 통해 Home Assistant(상태 저장소, SYSTEM_DESIGN §3.1)에 기록된다. 즉 별도 저장소·캐시를 두지 않는다. 세션이 끝나면 두 값 모두 다른 개인정보와 함께 폐기된다(SCRUB, SYSTEM_DESIGN §11.3).

4. 상황 카드와 상황 덱

상황 카드는 "지금 무슨 일이 일어났는지"를 한 장면으로 묘사한 사전 작성 데이터다. AI 입장에서는 이것이 곧 입력 — 실제 센서 대신 카드가 상황을 알려준다.

카드 한 장이 담는 것:

항목 의미
상황 설명 AI에게 전달될 장면. 예: "냉장고 우유가 3일 내 소진 예상"
페르소나 가중치 어떤 캐릭터에게 더 자주 뽑힐지 (예: '반려동물과 산다'면 고양이 카드 ↑)
연출 힌트 어울리는 디스플레이 영상·태블릿 옵션 후보. 강제가 아니라 제안

상황 덱은 zone(집·공원·차량·카페)마다 묶인 카드 모음이다. 모든 카드는 한곳에서 관리한다 — zone 정의(zones.yaml)·로봇 정의(robots.yaml)와 같은 "단일 소스" 운영 방식이다.

안전 원칙: 카드의 연출 힌트는 시스템이 이미 허용한 행동 범위(capability 화이트리스트, SYSTEM_DESIGN §9.2) 안에서만 작성한다. 그래서 어떤 카드가 무작위로 뽑혀도 기존 안전 검증을 그대로 통과한다.

5. 상황은 어떻게 뽑히나 — 페르소나 가중 + 비복원

추첨은 결정 엔진(orchestrator) 안에서 일어난다. 새 서비스를 만들지 않으며, 뽑힌 결과는 컨텍스트 흐름을 타고 Home Assistant에 기록된다 → "상태 저장소는 Home Assistant" 원칙 유지.

방식은 페르소나 가중 + 비복원 추출이다. 풀어 쓰면:

  1. 체험자가 어느 zone에 들어오면, 그 zone의 카드 묶음을 후보로 본다.
  2. 이번 세션에서 이미 뽑힌 카드는 후보에서 뺀다(비복원) → 같은 사람이 같은 장면을 두 번 겪지 않는다.
  3. 페르소나와 카드의 가중치를 맞춰 캐릭터에 어울리는 카드가 더 잘 뽑히게 한다 → 캐릭터 선택이 체험을 실제로 바꾼다.
  4. 한 장을 뽑아 그 세션의 "활성 상황"으로 기록한다.
  5. 같은 사람에게 여러 반응이 동시에 가지 않도록 세션 단위로 순차 처리한다(SYSTEM_DESIGN §7.3.C의 기존 정책 그대로).

운영자 오버라이드: VIP 시연이나 장면 재현이 필요할 때는, 운영자가 특정 카드를 직접 지정해 무작위 추첨을 건너뛸 수 있다(기존 운영자 우선순위 정책 재사용).

6. 전체 데이터 흐름

한 줄 요약: 캐릭터 선택 → zone 진입 → 상황 추첨 → (상황 + 페르소나 + zone playbook) 합쳐 AI에 전달 → AI가 도구 호출로 반응.

단계별로:

  1. 입장 전 — 태블릿에서 페르소나를 고른다 → 세션 컨텍스트에 기록.
  2. zone 진입 — "누가 들어왔다"는 비전 이벤트가 결정 엔진을 깨운다.
  3. 상황 추첨 — 결정 엔진이 카드 한 장을 뽑아 '활성 상황'으로 기록(§5).
  4. 컨텍스트 조립 — 페르소나 + 활성 상황 + 그 zone의 playbook + 로봇 상태를 한데 모아 AI에 전달.
  5. 반응 — AI가 허용된 도구(로봇 동작·태블릿 메시지/옵션·디스플레이 연출)를 호출. 모든 호출은 안전 검증을 통과.

"지정 상황에 맞춰 AI가 적절히 반응한다"는 것은 4~5단계를 말한다. 기존 SYSTEM_DESIGN §5.1의 흐름(트리거 → 조립 → 안전검증 → 도구 호출)에 상황 추첨 한 단계만 끼워 넣는 것이라, 안전 검증과 도구 호출 구조는 손대지 않는다.

7. 입장 전 페르소나 선택

  • intro 단계(SYSTEM_DESIGN §16.2 1단계)에서 태블릿으로 직업·성격·개인사정을 차례로 고른다.
  • 선택 결과는 세션 컨텍스트로 기록되어, 이후 모든 상황 추첨과 AI 반응의 바탕이 된다.
  • 기존 태블릿 입력 방식을 그대로 쓴다 — 입력 종류에 '페르소나 선택'을 하나 더하는 정도이고, 새 통신 경로는 없다.

8. 불변식 정합성 체크

불변식 상태
MQTT(Message Queuing Telemetry Transport, 메시지 큐 텔레메트리 전송 프로토콜)가 유일한 이벤트 백본 / 신규 토픽 최소화 ✅ 신규 토픽 0, 태블릿 입력 종류만 추가
Home Assistant가 상태 저장소 ✅ 페르소나·활성 상황 모두 Home Assistant가 보관
가드레일(안전 검증) 필수 ✅ 카드 힌트를 허용 범위 내에서 작성, 추첨 결과도 동일 검증 통과
별도 상태 서버·서비스 금지 ✅ 추첨은 결정 엔진 안에서 처리
세션 종료 = 개인정보 폐기(SCRUB) ✅ 페르소나·활성 상황도 함께 폐기

9. 상황 카드 ↔ AI 도구 매칭 매트릭스

캐릭터 선택 → zone별 상황 추첨 → 사건 발생 시 AI가 호출하는 도구(로봇·태블릿·홈기기 제어)의 매칭표다. 카드의 '연출 힌트'는 어울리는 도구 후보를 제시할 뿐, 실제 호출·문구·옵션 구성은 AI가 그때그때 정한다. 모든 호출은 안전 검증을 통과한다.

도구 약칭 (legend)

약칭 AI 도구 설명
RC 로봇 명령 이동·따라가기·정지·앉기·서기·제스처·바라보기 (+ 미결: 물건 들기†, 잠금‡)
SO 선택지 제시 태블릿/디스플레이에 선택지를 띄움
SM 메시지·미디어 메시지·영상 표시 (창문형 디스플레이 포함)
CU 컨텍스트 갱신 세션 상태를 갱신
HA:* 홈기기 제어 조명·냉난방·미디어·잠금 등

† 물건 들기 · ‡ 잠금은 아직 미결 동작 — KAIST 로봇 결정 / SYSTEM_DESIGN §11.3.3 정책 적용 후 추가. 잠금은 AI 자율 발행 금지(운영 규칙 경로 전용).

9.1 입장 전 — 캐릭터 선택

단계 트리거 매칭 도구 산출
직업/성격/사정 선택 신규 페어링·입장 SO (3회 순차) → CU(페르소나) 세션 페르소나 확정

9.2 zone별 상황 카드 ↔ 도구

zone 상황 카드 페르소나 가중 트리거 매칭 AI 도구
(기) 수면 부족, 힘든 기상 야근잦음 ×3 zone 진입 HA(따뜻한 조명) · RC(제스처) · HA(잔잔한 음악) · SM(부드러운 기상)
집 (기) 우유 3일 내 소진 zone 진입 SM("주문 안내") · SO("주문할까요?") → CU(장보기 목록 추가)
집 (기) 반려묘 헤어볼, 상태 정상 반려동물 ×3 zone 진입 SM(상태 리포트) · HA(창문: 고양이 영상) · RC(바라보기)
차량 (승) 업무량 많음, 야근 예상 개발자 ×2 zone 진입 SM("오늘 늦을 수도") · SO(스트레칭/일정조정)
차량 (승) 정체, 최적경로 연출 zone 진입 SM(차량 디스플레이) · HA(미디어)
공원 (전) 러닝 동행 활기참 ×2 zone 진입 RC(따라가기·페이스 맞춤) · SM(페이스 코칭)
공원 (전) 30분 뒤 비 예보 zone 진입 SM(우산 안내) · RC(따라가기)
공원 (전) 피로 누적, 휴식 권유 야근잦음 ×2 zone 진입 RC(따라가기·저속) · SM(휴식 제안)
(결) 귀가, 회복 분위기 zone 재진입 HA(은은한 조명) · HA(냉난방) · RC(맞이 인사) · HA(창문: 평온한 밤)
집 (결) 수면 유도 컨텍스트 변화(가정) HA(점진 디밍) · HA(소리↓ + 수면음악) · SM(굿나잇)
돌발 (병행) 가전기사 조기 방문 미등록 인물 감지 HA(잠금)‡ (운영 규칙 경로) · SM(알림) — AI 자율 금지

9.3 아웃트로

트리거 매칭 도구 산출
세션 종료 AI 하루 요약 생성 → HA(일기 기록) · SM(하루 요약) 동행일기 (SYSTEM_DESIGN §11.3.2, 최대 7일) → 이후 폐기

매트릭스의 모든 도구는 현 허용 범위 안(또는 미결 동작 2개)이고, 신규 통신 경로를 만들지 않는다. 카드의 힌트는 후보일 뿐, 실제 조합·문구·인자는 AI가 페르소나·zone playbook과 함께 결정한다.

10. 확장안 — 페르소나 효과를 playbook 분기까지 넓히기

§5에서 정한 모델은 페르소나가 ① 카드 추첨 가중치 + ② AI 대사 톤에만 영향을 준다(Tier 1). 본 절은 이를 ③ zone playbook 자체의 분기까지 넓히는 확장안(Tier 2)을 정리한다. 두 단계는 배타적이지 않고 누적 — Tier 2는 Tier 1 위에 얹는다.

10.1 효과 단계(tier) 정리

단계 페르소나가 바꾸는 것 방식 차별화 강도
Tier 0 없음 (화면 표시용) 없음
Tier 1 (현 결정) 카드 추첨 가중 + 대사 톤 페르소나를 컨텍스트로 넘기고 AI 재량에 맡김 약함
Tier 2 (확장안) + zone playbook 분기 playbook에 페르소나별 안내 조각을 덧붙임 강함(명시적)

10.2 분기 방식 — "조합 변형" 대신 "조각 더하기"

캐릭터 조합마다 별도 playbook을 두는 방식(개발자용 집-playbook, 간호사용 집-playbook…)은 직업 × 성격 × 사정 × zone으로 수가 폭발한다.

대신 차원별로 짧은 안내 조각을 더한다. 기본 zone playbook 위에 "이 직업이면 이런 비유로", "이 성격이면 이런 톤으로", "이 사정이면 이걸 먼저 챙기도록" 같은 작은 조각을 덧붙이는 식이다. 조각은 차원마다 하나씩이라 수가 곱이 아니라 합으로만 는다 (선형).

페르소나 차원 playbook 분기가 바꾸는 것
직업 대사의 도메인·비유·예시
성격 톤·길이·능동성
개인사정 케어 우선순위·강조점

10.3 비용·지연에 주는 영향 (중요)

현재 설계(SYSTEM_DESIGN §9.1)는 시스템 프롬프트와 zone playbook이 잘 변하지 않는다는 점을 이용해 프롬프트 캐싱으로 비용·지연을 줄인다. playbook이 페르소나마다 달라지면 이 캐시 이점이 깨질 수 있다.

해법은 순서다. 모든 체험자가 공유하는 부분(시스템 프롬프트 + 기본 zone playbook)을 에 두어 캐시를 그대로 살리고, 사람마다 달라지는 페르소나 조각·상황은 에 붙인다(짧아서 캐시 못 받는 양이 작다). "조각 더하기" 방식이 곧 캐시 친화적인 이유다.

10.4 Tier 1 vs Tier 2 트레이드오프

항목 Tier 1 (현 결정) Tier 2 (확장)
페르소나 차별화 약함 — AI 재량 강함 — 명시적 안내
결정성·재현성 낮음 높음
작성·유지 부담 최소 차원별 조각 관리 (합이라 선형, 곱 아님)
비용·지연(캐싱) 영향 없음 순서 설계로 유지 (§10.3)
검증 부담 적음 조각 × zone 조합 확인 필요
신규 통신 경로 없음 없음 (안내 조각 추가뿐)

10.5 권장

  • 페르소나가 체험의 핵심 차별 축이면 Tier 2, 분위기 양념 정도면 Tier 1로 충분하다.
  • 단계적 도입을 권한다: Tier 1로 시작 → 캐릭터별 차이가 부족하면 안내 조각을 zone 단위로 점진 추가(통신·구조 변경 없음).
  • 어느 단계든 카드 추첨 가중(§5, 이미 결정)은 그대로 둔다 — playbook 분기는 "카드가 주어졌을 때의 반응 방식"을 다듬는 별도 레버다.

10.6 §9 매트릭스에 주는 함의

§9.2의 "매칭 도구"는 Tier와 무관하다 — 쓸 수 있는 도구 집합은 안전 허용 범위로 고정되어 있다. 달라지는 것은 같은 카드·같은 도구라도 페르소나에 따라 AI가 만드는 문구·선택지 구성이며, Tier 2에서 그 차이가 더 또렷하고 재현 가능해진다.

11. 정식 반영 시 손볼 곳 / 미결

논의가 확정되면 deliverable에서 구체화할 항목과, 아직 열린 결정이다.

항목 영향 위치 비고
페르소나 항목·상황 덱 정의 (단일 소스) config, SERVICES §5 카드 힌트는 허용 범위 내
페르소나·활성 상황 컨텍스트 항목 SYSTEM_DESIGN §4.1
상황 추첨 로직 (페르소나 가중·비복원) SERVICES §5 (결정 엔진)
페르소나 선택용 태블릿 입력 추가 MQTT_SCHEMA §3.5
운영자 상황 오버라이드 경로 OPERATIONS, 대시보드 VIP·재현용
페르소나 효과 범위 확정 Tier 1(현 결정) vs Tier 2(playbook 분기, §10). 단계적 도입(§10.5) 권장
순차 고정 비트 필요 여부 상황 덱 기·승·전·결 핵심 장면을 zone별로 고정할지 — 본 안은 순수 가중 추첨, 서사 보강 필요 시 재논의
창문 디스플레이: 사전 제작 영상 vs 생성형 별도 검토 사전 제작 영상을 카드가 고르는 방식이 현실적(연출 정합)

Clone this wiki locally