
RealityOS 구축하기: AI 리얼리티 쇼 표면을 가진 결정론적 세계
요약
RealityOS는 LLM의 불확실성을 해결하기 위해 결정론적 시뮬레이터와 AI 에이전트를 결합한 실험적 프로젝트입니다. 시뮬레이터가 물리적 사실을 관리하고 모델이 해석을 담당함으로써, 비용 효율적이고 일관성 있는 에이전트 환경을 구축하는 아키텍처를 제안합니다.
핵심 포인트
- 시뮬레이터는 사실(facts)을, 모델은 해석(interpretation)을 담당하는 역할 분리
- LLM 루프의 비용과 비결정론적 문제를 해결하기 위한 틱(tick) 기반 시스템
- 폴링 방식이 아닌 중요한 이벤트 발생 시에만 추론을 활성화하는 이벤트 기반 구조
- 시청자의 개입이 에이전트의 주체성을 해치지 않도록 설계된 상호작용 모델
AI 에이전트(AI agents)는 화면이 채팅 버블로 가득 차 있을 때가 아니라, 마치 자신만의 세계를 가지고 있는 것처럼 보일 때 매력적입니다. RealityOS는 이러한 차이를 탐구하는 실험입니다. 100명의 참가자가 있는 지속적인 집이며, 라이브 3D 관람 경험(spectator experience)으로 보여집니다.
프로젝트 전체를 형성하는 디자인 결정은 간단합니다: 시뮬레이터(simulator)는 사실(facts)을 소유하고, 모델(models)은 해석(interpretation)을 소유합니다.
모든 것을 LLM에 물어볼 때 발생하는 문제
매 몇 초마다 모든 참가자에게 "다음에 무엇을 할 것인가?"라고 묻는 LLM 루프는 비용이 많이 들고, 일관성이 없으며, 신뢰성 있게 재현(replay)하는 것이 불가능합니다. 또한, 언어 모델(language model)에게는 소유해서는 안 될 일상적인 사실들에 대한 권한을 부여하게 됩니다: 누군가가 배가 고픈지, 방이 가득 찼는지, 혹은 파티가 물리적으로 일어났는지와 같은 사실들 말입니다.
대신 RealityOS는 틱(tick) 단위로 결정론적 세계(deterministic world)를 진행시킵니다. 각 시스템은 상태(state)를 수신하고, 규칙을 적용하며, 타입이 지정된 이벤트(typed events)를 방출합니다:
export interface SimulationSystem {
readonly name: string;
apply(state: WorldState): readonly WorldEvent[];
...
욕구(Needs)는 0에서 멈추는 것이 아니라, 임계점에 도달했을 때 회복되는 자원(resources)입니다. 동일한 원칙이 궁극적으로 먹기, 휴식, 사회적 루틴을 구동할 것입니다: 결정론적 전이(deterministic transitions)는 신뢰할 수 있는 사실을 생성하고, 에이전트(agents)는 왜 특정 상황이 자신에게 중요한지를 결정합니다.
폴링(Polling)이 아닌 이벤트(Events)
두 번째 핵심 선택은 이벤트를 통해 추론(reasoning)을 활성화하는 것입니다. 모델은 3초가 지났기 때문이 아니라, 중요한 만남, 관계의 변화, 기억, 또는 시청자 이벤트가 발생한 후에 프롬프트(prompted)되어야 합니다.
flowchart LR
Tick --> Systems
Systems --> DomainEvents
...
EventReasoningRouter는 이미 이러한 선택 경계(selection boundary)를 구현하고 있습니다. 성숙한 형태의 이 라우터는 성격(personality), 검색된 기억(retrieved memory), 사회적 맥락(social context), 그리고 허용된 행동 세트(constrained set of legal actions)를 조합한 다음, 감사 가능성(auditability)을 위해 응답과 검증된 결과(validated outcome)를 모두 기록할 것입니다.
시청자의 행동은 참가자를 조종하는 것이 아니라 압박을 가해야 합니다
파티 버튼(party button)이 좋은 작은 예시입니다. 시청자는 누가 누구와 대화할지를 선택하지 않습니다. 그들은 월드 이벤트(world event)를 요청할 뿐입니다. 서버는 명령을 브로드캐스트(broadcast)하고, 시뮬레이터(simulator)는 결정론적으로(deterministically) 정원을 임시 목적지로 할당하며, 브라우저는 새로운 월드 상태(world state)와 함께 이동 이벤트(movement events)를 수신합니다.
sequenceDiagram
participant Viewer
participant SocketAPI
...
이것은 유용한 규칙의 시작입니다: 시청자는 맥락(context)에 영향을 미치고, 참가자는 주체성(agency)을 유지합니다.
3D 하우스는 제품의 표면(product surface)입니다
웹 앱은 Next.js, React Three Fiber, Drei, 그리고 Three.js로 구축되었습니다. 이 하우스는 대시보드라기보다는 단면이 보이는 세트(cutaway set)에 가깝습니다. 모든 참가자는 클릭 가능한 작은 캐릭터입니다. 그들의 정체성은 결정론적(deterministic)이므로, 라이브 업데이트 중이거나 나중에 리플레이(replay)할 때 깜빡거리며 변하지 않습니다.
// 안정적인 황금각(golden-angle) 색조를 사용하여 반복되는 색상 팔레트를 피합니다.
const outfit = `hsl(${(index * 137.508) % 360} 58% ${38 + (index % 4) * 7}%)`;
const height = 0.88 + (index % 6) * 0.045;
캐릭터들은 현재 의도적으로 가벼운 기하 구조(geometry)로 되어 있습니다: 머리, 머리카락 실루엣, 몸통, 다리, 그리고 가끔씩 나타나는 안경과 모자입니다. 이는 100명의 가시적인 참가자가 성능을 유지하도록 하면서도, 향후 GLTF 아바타와 애니메이션 상태(animation states)를 위한 강력한 갈고리(hook)를 만들어냅니다.
런타임 토폴로지 (Runtime topology)
서비스들은 의도적으로 분리되어 있습니다. 웹 앱은 독립적으로 배포될 수 있으며, 시청자가 없는 동안에도 시뮬레이터는 계속 작동할 수 있습니다. 현재의 Prisma 스키마(schema) 모델은 쇼(shows), 참가자(contestants), 이벤트 기록(event records), 기억(memories), 그리고 암호화된 제공자 자격 증명(encrypted provider credentials)을 보여주며, 다음 지속성(persistence) 구현 단계를 위한 준비가 되어 있습니다.
다음 단계
흥미로운 작업은 인터페이스에 더 많은 박스를 추가하는 것이 아닙니다. 세계가 더 깊어짐에 따라 그 세계를 읽기 쉽고 신뢰할 수 있게 만드는 것입니다:
- Postgres에 시뮬레이션 이벤트 (simulation events)를 추가하고 로그로부터 상태 (state)를 도출합니다.
- 참가자 프로필 (contestant profiles), 관계 (relationships), 그리고 목표 (goals)를 추가합니다.
- 서버 측 모델 제공자 (server-side model providers)를 타입이 지정되고 검증된 의도 계약 (typed, validated intention contract)에 연결합니다.
- 에피소드 및 관계 기억 (episodic and relationship memories)을 저장한 다음, 이를 선택적으로 검색합니다.
- 고백실 성찰 (confession-room reflections), 이벤트 내레이션 (event narration), 일간 가제트 (Gazette) 기사, 클립, 그리고 시청자 투표 (viewer polling)를 추가합니다.
- 리플레이/분기된 타임라인 (replay/forked timelines) 및 쇼 레벨 권한 (show-level permissions)을 구현합니다.
RealityOS는 가장 시청하기 좋은 AI 시스템이 채팅창처럼 느껴지기보다는 규칙, 역사, 그리고 결과가 존재하는 장소처럼 느껴질 것이라는 데 거는 베팅입니다.
코드 및 기타 정보: https://www.dailybuild.xyz/project/210-realityos
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기
