← Docs hub

간접 목표에서 A2A Experience까지: 구현 가능성

이 문서는 다음과 같은 간접 발화를 특정 데모 문장으로 처리하지 않고, A2A가 필요한 행동과 workflow로 일반화할 수 있는지 분석한다.

“하이나무, 엄마가 오랜만에 오셔. 편하게 맞아주고 오늘 기억 하나 남겨줘.”

1. 결론

이 장면의 제한된 MVP는 구현 가능하다. 2026-08-01 기준 의미 admission 결과를 기존 검증 plan에 결속하는 feature-gated 1차 live slice까지 연결됐다. 그러나 현재 시스템이 임의의 간접 발화를 자동으로 완성형 Experience로 만드는 상태는 아니다.

현재 확보된 기반은 다음과 같다.

현재 빠진 핵심은 다음과 같다.

현재 Experience Admission과 runtime activation gate는 구현돼 있다. activation은 새 action을 만들지 않고 같은 Router 결과의 기존 step만 Goal contract에 결속한다. 상세 구조는 A2A Experience Workflow: 설계 이론과 현재 구현에서 본다.

범위 현재 준비도
명시적 단일 기기 명령 높음
명시적 다단계 기기 명령 중상
간접 표현의 단일 지원 효과 중간
간접 상위 목표의 다중 Agent 경험 낮음
가족 환영·기억 장면 MVP 중간
임의의 open-world 자율 행동 지원 대상 아님

2. 왜 A2A가 필요한가

“사진 찍어줘” 같은 단일 명령에는 A2A가 필수는 아니다. 이 장면은 서로 다른 owner와 lifecycle을 가진 기능이 연결되므로 A2A가 필요하다.

단계 Owner
목표·제약 해석 Main Router / Experience Composer
공간 준비 ODL / TaskManager
환영 대화 DEF / Content
촬영 동의 Consent interaction
촬영·로컬 저장 MemoryCaptureService
Memory Card 표시 SKLauncher2
복귀 ODL / TaskManager

TaskManager는 결정된 물리 workflow를 실행한다. Experience Supervisor는 그 위에서 사용자 목표, 동의, 의미 event, 실패와 변경을 관리한다.

3. 현재 구조가 잘하는 것

현재 Planner 계약은 다음을 표현할 수 있다.

steps:
  - id: prepare_room
    action:
      capability_id: stationary_purify
      operation_id: start
    wait_policy: completed

  - id: welcome
    depends_on: [prepare_room]
    execution_target: content

  - id: return_station
    depends_on: [welcome]
    action:
      capability_id: return_to_station
      operation_id: start

TaskManager와 workflow state는 submitted, completed, waiting과 step result를 유지한다. 정상 완료는 다음 dependency를 해제하므로 매 단계마다 LLM을 호출할 필요가 없다.

Supervisor 판단은 아래 경계에서만 필요하다.

4. 현재 구조가 못하는 것

4.1 최초 Experience 진입

현재 base router는 장기 Experience policy를 직접 만들지 않는다. Supervisor는 활성 Experience의 후속 event를 처리할 수 있지만, 최초 발화를 Experience로 승격하는 ingress가 없다.

4.2 간접 발화 일반화

현재 간접 표현은 capability alias에 걸리면 동작할 수 있다. 그러나 “편하게 해줘”, “손님 맞을 준비를 해줘”처럼 여러 효과를 포함한 목표는 alias만으로 안전하게 처리할 수 없다.

문장별 cue를 늘리면 서술을 행동으로 과승격하는 문제가 생긴다.

4.3 촬영과 UI closure

SKLauncher2에는 카메라 권한이 있지만 가족 사진 촬영과 Memory Card UI는 현재 구현돼 있지 않다. EventAssetAgent의 CameraBroker와 암호화 저장은 기술 기반으로 재사용할 수 있지만, security clip의 업로드·보존 정책과 가족 사진 도메인은 반드시 분리해야 한다.

5. 문장 규칙이 아닌 일반화 방식

Main Router는 장기 정책 전체가 아니라 최소 의미 요청을 한 번에 반환한다.

experience_request:
  intent_shape: experience_goal
  goal_summary: 방문 가족이 편안하게 환영받고 동의한 오늘의 기억을 남긴다
  desired_effects:
    - guest_comfort
    - warm_welcome
    - consented_local_memory
  constraints:
    - local_only_media
    - explicit_consent_before_capture
    - user_can_cancel
  autonomy_level: bounded
  needs_confirmation: true

이후 Goal Composer가 아래 정보로만 plan을 구성한다.

  1. experience_request
  2. capability card
  3. current device context
  4. autonomy/consent policy

capability card는 특정 발화가 아니라 effect, precondition, side effect, resource, completion, privacy를 정의한다.

capability_id: consented_memory_capture
effects: [local_memory_created]
preconditions:
  - camera_available
  - explicit_consent_granted
side_effects:
  - captures_personal_media
resources: [camera]
completion: [memory.asset_stored]
privacy:
  storage: local_only

6. 요청과 서술의 안전 경계

발화 처리
“엄마가 오셔서 좋았어” 서술, 자동 행동 금지
“엄마가 오셔. 편하게 맞아줘” bounded Experience 후보
“오늘 기억 하나 남겨줘” 사진인지 물어봄
“아기가 자고 있어” 상태 공유, 자동 설정 변경 금지
“아기가 자고 있으니 조용하게 해줘” quiet effect 후보
“손님 오기 전에 쾌적하게 준비해줘” 시간·환경 목표 후보

촬영, 건강, 보안, 외부 전송은 명시적 동의나 사전 승인 routine 없이 자동으로 실행하면 안 된다.

7. 가족 환영·기억 장면

Goal
  방문 가족이 편안하게 환영받고, 동의한 오늘의 기억을 남긴다.

Observe
  위치, 공간, 공기질, 배터리, 진행 task, 카메라 가용성

Plan
  1. 환경 준비
  2. 도착 event 또는 사용자 확인 대기
  3. 환영 interaction
  4. 사진 여부와 촬영 동의 확인
  5. 촬영
  6. 로컬 암호화 저장
  7. SKLauncher2 Memory Card 표시
  8. 필요 시 스테이션 복귀

정상 callback은 TaskManager가 처리한다. 다음 상황에서만 Supervisor가 판단한다.

8. 구현 가능성

기능 가능성 남은 작업
명시적 기기 workflow 높음 실기기 반복 검증
device context 조건 중간 live model 보존 검증
step result binding 중간 capability별 결과 schema
활성 Experience 재계획 중간 물리 callback E2E
간접 목표의 Experience 승격 현재 낮음 admission/composer
물리 + 콘텐츠 중하 콘텐츠 terminal contract
동의 촬영 + Memory Card 현재 낮음 service, privacy, UI

따라서 이 장면만을 위한 구현은 비교적 빠르다. 하지만 범용 능력으로 만들려면 experience_request → desired effects → grounded capability composition 경계를 먼저 만들어야 한다.

9. 토큰과 지연 방어

  1. 최초 unified router call 1회
  2. admission과 capability 검증은 deterministic
  3. 정상 task progress에서 추가 LLM 호출 0회
  4. ambiguity와 failure boundary에서만 bounded replan
  5. Experience당 Supervisor decision 기본 상한 3회

단순 명령에는 Experience 경로를 열지 않으므로 기존 latency를 늘리지 않는다.

10. 검증 기준

테스트 수량
같은 목표의 다양한 간접 표현 20
비요청 서술과 유사한 negative 20
제약·부정 표현 15
후속 수정·취소 15
실패·보류·재계획 10

추가로 기존 family router 전체 회귀와 TaskManager 60개 시나리오를 유지한다.

핵심 metric은 다음과 같다.

간접 목표 recall보다 서술을 행동으로 잘못 실행하는 over-action을 우선 방어해야 한다.

11. 구현 순서

  1. 최소 experience_request와 request/statement admission
  2. desired effect ontology와 capability effect metadata
  3. content terminal, result schema, active Experience 생성
  4. consented memory capture vertical slice
  5. SKLauncher2 Memory Card
  6. 환영·휴식·수면·환경 회복 Experience catalog

Experience catalog는 고정 문장 모음이 아니라 goal, effect, constraint, success criteria의 재사용 가능한 의미 계약이어야 한다.

12. 최종 판단

현재 시스템은 A2A workflow의 하위 골격을 갖고 있다. 부족한 것은 “문장을 더 잘 매칭하는 cue”가 아니라 간접 목표를 안전하게 실행 계획으로 승격하는 상위 의미 계층이다.

Indirect request
  -> semantic experience_request
  -> desired effects
  -> grounded capability composition
  -> deterministic policy validation
  -> TaskManager/content execution
  -> terminal evidence
  -> bounded replan

이 구조를 추가하면 특정 가족 환영 장면을 넘어 여러 웰니스 경험으로 확장할 수 있다. 이 구조 없이 문장별 alias와 조건문을 늘리면 데모 스크립트 수준에 머문다.

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