← Docs hub

Experience Goal Usability Playbook

실사용 목표, 사용자 여정, 수용 기준

문서 역할
Experience의 프로젝트 의미와 AS-IS/TO-BE는 Experience Goal: 명령 수행에서 결과 위임으로에서 먼저 본다. 이 문서는 그 구조가 사용자 부담, 신뢰, 복구성, 결과 위임 경험으로 어떻게 측정되어야 하는지 다룬다.

Experience Goal의 제품 가치는 “한 문장에서 더 많은 명령을 추출한다”가 아니다. 사용자가 원하는 결과를 한 번 위임하면 시스템이 실행 상태를 관찰하고, 필요한 시점에만 질문하며, 성공 증거가 확인될 때까지 목표를 잃지 않는 데 있다.

Experience Goal usability and readiness ladder

이 문서에서 실사용 근거는 사용자 연구가 이미 완료됐다는 뜻이 아니다. 현재 코드에 존재하는 effect catalog, provider live tier, TaskManager callback, Supervisor budget을 기준으로 다음을 구분한다.

관련 이론과 구조는 Experience Goal Academic Deep Dive, 기존 Planner와의 결합은 Experience Goal과 기존 Planner 통합 구조에서 본다. 현재 실기기 callback, failure UX, 회귀 결과와 제품 Go/No-Go는 Experience Runtime Validation Closure 2026-08-05를 최신 기준으로 한다.


1. 사용자가 실제로 겪는 문제

복합 경험을 개별 명령으로만 제공하면 사용자는 시스템 내부 순서를 기억해야 한다.

사용자:
  "주방으로 가"
  -> 도착을 기다림
  "청정 시작해"
  -> 완료를 기다림
  "오늘 뉴스 알려줘"
  -> 끝나면
  "스테이션으로 돌아가"

이 방식은 API 관점에서는 단순하지만 사용자 관점에서는 다음 부담을 만든다.

사용자 부담 실제 문제
순서 기억 다음 명령을 사용자가 직접 기억해야 함
상태 감시 도착·청정 완료 여부를 계속 확인해야 함
재발화 단계마다 다시 호출하고 문맥을 설명해야 함
실패 판단 무엇이 실패했고 무엇이 남았는지 알기 어려움
취소 불안 중단했을 때 후속 단계도 멈췄는지 확신하기 어려움

Experience Goal은 이 부담을 결과 위임, 상태 보존, 증거 기반 완료, 제한 재계획으로 줄이는 것을 목표로 한다.


2. 핵심 사용성 목표

ID 사용성 목표 사용자에게 보이는 변화 시스템 계약 측정 지표
UG1 한 번에 결과 위임 단계별 재발화 없이 원하는 결과를 말함 Goal + typed dependency 목표당 사용자 발화 수
UG2 세션 이후에도 연속성 유지 음성 세션이 끝나도 다음 단계가 이어짐 durable workflow state 재호출 없는 완료율
UG3 진행 상태 이해 지금 무엇을 기다리는지 알 수 있음 goal-plan-task 분리 표시 상태 이해도
UG4 실패해도 남은 목표 보존 전체를 처음부터 다시 말하지 않음 reason code + bounded replan 실패 복구율
UG5 취소와 동의 통제 원하지 않는 행동을 즉시 멈추고 민감 동작을 확인함 cancel propagation + consent 취소 전파 지연, 동의 부담
UG6 실행하지 않은 것을 약속하지 않음 “완료”가 실제 증거와 일치함 terminal evidence false completion
UG7 일반 대화와 단일 명령 보호 짧은 대화가 복잡한 workflow로 과승격되지 않음 negative boundary false admission, legacy delta

사용성 핵심 문장

한 번 말한다.
시스템이 기다린다.
실제 상태를 확인한다.
필요할 때만 다시 묻는다.
증거가 있을 때만 완료라고 말한다.

3. 현재 제공 범위

3.1 Readiness ladder

단계 사용자에게 제공 가능한 범위 현재 provider 예시 제품 상태
R0 · 기존 경로 인사, 일반 대화, 단일 이동·제어·조회 DEF, ODL, FRG, DQR, SCH Experience 비입장
R1 · content_only 휴식 안내, 지지 대화, 최신 정보 구성 default_conversation, freshness_answer_composition 기본 제한 live
R2 · non_motion 공기질·배터리 확인, 고정 청정, 나이트·매너·음소거·밝기 7개 non-motion capability 통제된 pilot
R3 · full 공간 이동, 스테이션 복귀, 바이탈 상호작용, 이야기 session movement, vital, story provider 실기기 반복 검증 필요
R4 · provider gap 연속 센서 감시, 임의 결과 기반 selector, 건강 진단 canonical effect 또는 callback 부재 약속·자동 실행 금지

기본 live tier가 content_only라는 것은 R2·R3 provider가 catalog에 있어도 자동으로 실행된다는 뜻이 아니다. 실기기 안전성과 terminal evidence가 확인된 tier만 운영 설정으로 단계적으로 열어야 한다.

3.2 현재 증거로 닫을 수 있는 결과

현재 catalog는 다음 15개 effect를 정의한다.

observation:
  air_quality_observed
  battery_state_observed

device/location:
  air_cleaning_active
  air_cleaning_stopped
  target_location_reached
  station_reached
  quiet_environment
  reduced_visual_stimulation
  audio_muted
  audio_restored

interaction/content:
  vital_interaction_ended
  supportive_conversation_delivered
  rest_guidance_delivered
  fresh_information_delivered
  story_session_started

vital_interaction_ended는 바이탈 측정 성공을 뜻하지 않는다. 사용자가 완료하거나 취소하여 상호작용이 끝났다는 terminal evidence만 의미한다. 이런 의미 제한이 사용자에게 거짓 성공을 말하지 않게 한다.


4. 대표 실사용 여정

4.1 잠깐 쉬고 싶은 순간

사용자: "잠깐 편하게 쉬게 도와줘."
항목 기대 동작
사용자 결과 짧은 안내를 받고 휴식을 시작할 수 있음
최소 Goal rest_guidance_delivered
기본 live DEF content provider가 휴식 안내 제공
확장 pilot 현재 상태와 정책이 허용하면 소리·화면 자극 감소
사용자 안내 “잠시 편하게 쉴 수 있도록 짧게 안내해드릴게요.”
성공 증거 안내 응답 전달 완료
실패 복구 기기 상태 변경이 불가능해도 content fallback은 유지

중요한 점은 “편하게”를 고정 API 목록으로 치환하지 않는 것이다. Planner는 목표를 해석하고 catalog에 있는 provider만 선택한다. non-motion provider가 닫혀 있으면 안내만 제공하고, 실행하지 않은 환경 변경을 했다고 말하지 않는다.

4.2 진행 중인 청정이 끝난 뒤 브리핑

사용자: "청정 끝나면 오늘 주요 뉴스만 짧게 알려줘."
항목 기대 동작
사용자 결과 청정 완료 뒤 최신 정보 요약을 들음
시간 관계 after_existing_event(cleaning.completed)
Agent 연결 ODL event -> FRG retrieval -> DEF composition
등록 안내 “청정이 끝나면 오늘 주요 뉴스를 짧게 정리해드릴게요.”
대기 표시 “청정 완료를 기다리는 중”
성공 증거 cleaning terminal event + fresh_information_delivered
실패 복구 최신 정보 provider 실패 시 재시도 여부만 질문

정상 청정 progress는 LLM 재호출 없이 deterministic하게 줄인다. 완료 event가 왔을 때만 다음 provider를 연다. 사용자는 청정 상태를 계속 지켜보거나 다시 호출할 필요가 없다.

4.3 방해를 줄이는 야간 준비

사용자: "삼십 분 뒤에는 소리랑 화면을 줄여서 조용히 쉴 수 있게 해줘."
항목 기대 동작
사용자 결과 지정 시점 이후 기기 자극이 줄어듦
후보 effect quiet_environment, reduced_visual_stimulation, audio_muted
provider 나이트 모드, 매너 모드, 밝기, 음소거 중 catalog-grounded 조합
사용자 안내 실행 시점과 변경 항목을 짧게 확인
성공 증거 각 provider terminal event
취소 예약 실행 전 취소 시 모든 미실행 step 제거
readiness R2 non-motion pilot

모델이 “조용함”이라는 단어만 보고 임의 기능을 생성하면 안 된다. 현재 capability와 context에서 실제 제공 가능한 effect의 조합만 계획한다.

4.4 이동·바이탈·복귀

사용자: "안방으로 가서 바이탈사인을 시작하고 끝나면 복귀해줘."
항목 기대 동작
사용자 결과 지정 공간에서 바이탈 상호작용 후 기기가 복귀
plan 이동 -> 바이탈 시작 -> 종료 event 대기 -> 스테이션 복귀
사람 역할 바이탈 측정 완료 또는 취소
진행 안내 “안방 도착”, “바이탈 진행 대기”, “복귀 중”을 구분
성공 증거 target_location_reached + vital_interaction_ended + station_reached
timeout 시간이 지났다고 측정 성공으로 처리하지 않음
readiness R3 full, 반복 실기기 E2E 전 제품 활성화 금지

이 여정은 Experience Goal이 필요한 대표 이유를 보여준다. 음성 session보다 상호작용이 길고, 사람의 완료·취소가 다음 단계의 조건이기 때문이다.

4.5 공기 상태를 보고 필요한 경우에만 청정

사용자: "지금 공기 상태를 보고 필요하면 청정해줘."

사용자 가치가 큰 목표지만 현재는 부분 준비 상태다.

가능한 부분 아직 필요한 부분
air_quality_observed 관찰값을 다음 조건식에 안전하게 binding
air_cleaning_active 임계값 정책과 사용자 선호의 소유권
공기질 context 수신 stale observation 차단
청정 시작 callback 조건 미충족 시 no-op 설명

범용 result binding과 조건 정책이 닫히기 전에는 “공기 상태를 봤고 필요해서 청정했다”는 전체 목표 성공을 주장하면 안 된다. 현재는 공기 상태를 설명하거나, 사용자에게 청정 시작 여부를 확인하는 단계까지가 안전하다.

4.6 일반 대화는 그대로 대화로 끝낸다

사용자: "오늘 좀 힘들었어."

이 발화는 DEF 응답으로 끝나야 한다. “힘들다”를 휴식 Goal로 자동 승격해 화면, 소리, 청정을 변경하면 사용자 통제감을 해친다.

잘못된 경험:
  감정 표현 -> 임의 기기 실행

올바른 경험:
  공감 응답 -> 사용자가 도움을 위임할 때만 Goal admission

4.7 단일 명령은 복잡하게 만들지 않는다

사용자: "주방으로 이동해줘."

이 요청은 기존 ODL singleton 경로가 처리한다. Goal lifecycle, Supervisor, 추가 질문을 열지 않는다. Experience Goal의 성능은 더 많은 발화를 입장시키는 비율이 아니라, 필요한 발화만 입장시키는 정밀도로 평가해야 한다.


5. 사용자에게 보여줄 상태와 문구

내부 contract나 raw context를 그대로 TTS로 읽지 않는다.

내부 상태 사용자 표현 예시 피해야 할 표현
goal accepted “청정이 끝나면 뉴스를 알려드릴게요.” “workflow를 생성했습니다.”
waiting event “청정 완료를 기다리고 있어요.” “step 2 pending입니다.”
movement progress “안방으로 이동 중이에요.” “positionId 5로 이동합니다.”
consent needed “진행 중인 작업을 멈추고 시작할까요?” “precondition failed입니다.”
provider unavailable “지금은 그 기능을 이어서 실행할 수 없어요.” “provider gap입니다.”
recoverable failure “이동은 끝났지만 다음 작업을 시작하지 못했어요. 다시 시도할까요?” 전체 목표를 완료했다고 말함
cancelled “남아 있던 작업도 함께 취소했어요.” 첫 task만 취소하고 침묵
completed “요청한 작업을 모두 마쳤어요.” terminal evidence 전 완료 선언

상태 설명의 최소 원칙

  1. 현재 단계
  2. 기다리는 이유
  3. 사용자가 해야 할 일이 있는지
  4. 실패했다면 완료된 부분과 남은 부분

이 네 가지보다 많은 내부 파라미터를 읽는 것은 디버깅에는 유용해도 사용자 경험에는 불필요하다.


6. 사용자 스토리와 수용 기준

Story A. 결과 위임

사용자로서 여러 단계를 순서대로 다시 말하지 않고 최종 결과를 한 번에 요청하고 싶다.

수용 기준:

Story B. 진행 이해

사용자로서 기기가 멈춘 것인지, 기다리는 것인지, 내 입력이 필요한지 알고 싶다.

수용 기준:

Story C. 안전한 취소

사용자로서 중간에 마음이 바뀌면 남은 작업까지 확실히 멈추고 싶다.

수용 기준:

Story D. 실패 복구

사용자로서 일부 단계가 실패해도 성공한 부분을 반복하지 않고 이어가고 싶다.

수용 기준:


7. KPI와 출시 Gate

아래 값은 현재 측정 결과가 아니라 pilot 목표값이다. 실제 baseline 측정 뒤 조정해야 한다.

7.1 안전·정합성 Gate

지표 목표
catalog 밖 action dispatch 0
terminal evidence 없는 false completion 0
다른 workflow callback 오결속 0
사용자 취소 뒤 dependent step 실행 0
민감 interaction의 consent 누락 0
legacy family 정확도 하락 0.5%p 이내

7.2 사용성 KPI

지표 pilot 목표
단계별 명령 대비 사용자 발화 수 감소 30% 이상
재호출 없이 목표 완료 80% 이상
사용자의 현재 단계 이해도 80% 이상
불필요한 clarification 목표당 0.5회 이하
일부 실패 뒤 복구 성공률 60% 이상
취소 상태 사용자 인지 90% 이상

7.3 비용·지연 SLO

지표 목표
정상 callback 추가 model call 0
비입장 turn의 추가 model call 0
예외 없는 목표의 Supervisor call 0
기본 decision budget max_decisions=3
기본 replan budget max_replans=1
비입장 p95 지연 증가 측정 오차 범위

8. 사용성 검증 프로토콜

8.1 비교 조건

동일한 사용자 결과를 두 방식으로 수행한다.

A. 단계별 명령:
   이동 명령 -> 기다림 -> 실행 명령 -> 기다림 -> 후속 명령

B. Experience Goal:
   최종 결과 한 번 위임 -> 시스템 관찰 -> 필요한 경우에만 사용자 개입

8.2 기록 항목

8.3 필수 경계 테스트

bucket 확인 목적
일반 인사·감정 표현 false admission 방지
단일 ODL·FRG·SCH 기존 경로 비간섭
cross-agent after-event 세션 이후 연속성
delay + non-motion 시간 관계와 취소
이동 + human interaction 사람 완료·취소 대기
stale context 실행 전 전제 재검증
duplicate/out-of-order callback idempotency와 correlation
PUI cancel 남은 dependent step 중단
provider failure bounded recovery

9. 제품 범위

Must

Should

Could

현재 비범위


10. 구현 근거와 다음 검증

근거 현재 의미
experience_effect_catalog.v1.json 15 effects, 10 capability providers, 3 skill providers
experience_workflow.py admission sidecar, live tier, Goal/plan 결속
experience_supervisor.py 제한된 continue/ask/replan/stop 판단
workflow_state.py Goal과 Supervisor budget 지속
local_lambda_shim.py content_only, non_motion, full live gate
DeviceAgent TaskManager task/workflow 실행 사실과 callback 권위

다음 실사용 검증 순서는 다음과 같다.

  1. R1 content-only에서 일반 대화 비간섭과 응답 품질을 고정한다.
  2. R2 non-motion에서 실제 상태 변경과 terminal evidence를 반복 검증한다.
  3. PUI·음성 cancel이 dependent step까지 전파되는지 확인한다.
  4. R3 movement·vital·story는 개별 capability와 복합 workflow를 분리 검증한다.
  5. result binding이 닫히기 전까지 조건부 자율 실행은 shadow로만 평가한다.

11. 결론

Experience Goal의 성공은 “복합 명령을 몇 개 만들었는가”로 판단하면 안 된다.

사용자가 한 번 위임하고
시스템이 실제 상태를 관찰하며
불필요하게 다시 묻지 않고
원하면 즉시 멈출 수 있고
증거가 있을 때만 완료라고 말하는가

이 질문에 답할 수 있어야 Experience Goal이 구조적 기능을 넘어 실제 사용성 가치를 만든다.

함께 볼 최신 판정

Keyboard shortcuts

⌘K / Ctrl+KOpen command palette
/Focus search
g hGo to home
g pGo to projects
g sGo to sessions
j / kNext / prev row (tables)
?Show this help
EscClose dialogs

Structured queries

Mix key:value filters with free text in the palette:

type:sessionOnly session pages
project:llm-wikiFilter by project name (substring)
model:claudeFilter by model name (substring)
date:>2026-03-01Sessions after a date
date:<2026-04-01Sessions before a date
tags:rustPages mentioning a tag/topic
sort:dateSort results by date (newest first)

Example: type:session project:llm-wiki date:>2026-04 sort:date