짧은 문장을 브라우저 로컬 임베딩으로 읽고, 결정적인 유기적 3D 오라로 피워내는 privacy-first 시각 경험입니다.
문장 → local embedding → MoodVector → AuraScenePlan → Three.js → PNG / WebM
- Xenova/multilingual-e5-small q8 모델을 첫 생성 요청 때 Web Worker에서 lazy-load합니다.
- WebGPU 우선, WASM fallback 순서로 로컬 추론하며 사용자 입력은 외부로 전송되지 않는다.
- 한국어·영어 anchor centroid로
valence,arousal,openness,direction,softness를 -1..1 범위로 계산합니다. seed = hash(normalizedInput)과 seeded random 하나만 사용해 같은 입력·variation에 같은 장면을 만듭니다.- 단일 Three.js render loop, 자동 모바일 화질, reduced motion, page visibility pause, 명시적 dispose를 제공합니다.
- PNG와 지원 브라우저의 WebM으로 내보냅니다.
Aura Bloom은 감정 또는 의료 진단이 아니다. 화면에는 문장에서 감지한 시각적 신호만 표시합니다. 서버, DB, API가 없다. 원격 AI API를 사용하지 않는다.
Node.js 22와 pnpm 10을 권장합니다.
pnpm install
pnpm dev첫 실모델 실행은 약 118MB q8 가중치를 Hugging Face에서 브라우저 캐시로 내려받습니다. 모델 파일은 앱 번들과 Vercel 배포물에 포함하지 않습니다.
pnpm lint
pnpm typecheck
pnpm test
pnpm exec playwright install chromium
pnpm test:e2e
pnpm checkpnpm check는 lint, typecheck, unit, build, E2E를 순서대로 실행합니다. CI/E2E는 deterministic mock embedding adapter를 사용하므로 실제 모델을 다운로드하지 않습니다.
모델과 revision은 src/ai/semantic.ts 및 scripts/generate-centroids.mjs에 고정되어 있습니다. anchor를 바꾼 경우에만 로컬에서 다시 생성합니다.
pnpm generate:centroids개발 script는 anchor에 passage: prefix를, 런타임 입력에는 query: prefix를 적용합니다. 생성된 384차원 centroid JSON은 재현성을 위해 commit합니다.
중앙 control plane은 okorion/self-improving-maintainer-bot입니다. 이 저장소에는 profile, eval, 문서, wrapper만 둡니다.
pnpm improve:dry
pnpm improve
pnpm improve:normal
pnpm improve:major기본 cadence는 normal 4회 후 major 1회이며, invocation이 아니라 전용 branch prefix로 성공적으로 merge된 PR만 셉니다. 자세한 안전 조건은 docs/SELF_IMPROVEMENT.md에 있습니다.
Vite 정적 앱이며 출력 폴더는 dist입니다. 서버리스 함수와 secret이 없습니다.
- Vercel에서
overtura/aura-bloom을 Import합니다. - Framework Preset은 Vite, Build Command는
pnpm build, Output Directory는dist를 확인합니다. - 환경 변수 없이 배포하고 실제 브라우저에서 모델 다운로드와 WebGPU/WASM fallback을 확인합니다.
