
Yumii 제작 — 오픈 소스 AI 컴패니언 (AI Companion)
요약
Yumii는 Live2D 아바타, 실시간 음성, 6가지 성격을 갖춘 오픈 소스 로컬 실행형 AI 컴패니언입니다. 사용자와의 대화를 기억하는 장기 기억 기능을 갖추었으며, 쉬운 설치와 CLI 온보딩을 통해 접근성을 높였습니다.
핵심 포인트
- Live2D 아바타와 실시간 음성 반응 지원
- 세션 간 대화를 유지하는 장기 기억 기능 구현
- 한 줄 설치 명령어 및 간소화된 CLI 온보딩 제공
- MIT 라이선스의 오픈 소스 프로젝트
이 게시물은 GitHub Finish-Up-A-Thon Challenge를 위한 제출물입니다.
내가 만든 것
Yumii는 Live2D 아바타, 실시간 음성, 그리고 6가지의 뚜렷한 성격을 가진 오픈 소스(open-source) 기반의 로컬 실행형 AI 컴패니언 (AI companion)입니다. 그리고 이제 그녀는 실제로 당신을 기억합니다.
그녀는 당신의 목소리를 듣습니다. 애니메이션 아바타를 통해 응답합니다. 당신이 말하는 것에 따라 그녀의 얼굴이 반응합니다. 그리고 이번 스프린트(sprint)를 기점으로, 그녀는 모든 대화, 모든 세션, 모든 재시작에 걸쳐 당신이 누구인지에 대한 장기 기억 (long-term memory)을 구축합니다.
핵심적인 AI 경험을 넘어, Yumii는 접근성(accessibility)과 사용 편의성에 크게 집중했습니다. 이 프로젝트는 전용 웹사이트, 포괄적인 문서 (documentation), 한 줄 설치 명령어, 그리고 사용자가 빠르게 시작할 수 있도록 돕는 간소화된 CLI 온보딩 (onboarding) 프로세스를 특징으로 합니다.
GitHub: https://github.com/CodeNeuron58/Yumi
License: MIT
데모
재기 스토리
저는 Project Ava와 몇몇 다른 AI 컴패니언 (AI companion) 데모들을 보며 — '나도 저걸 만들 수 있겠다'라고 생각했습니다.
저는 애니메이션을 즐깁니다. 실제로 대화하고 반응하는 애니메이션 스타일의 AI라는 아이디어는 저를 진심으로 설레게 했습니다. 그래서 저는 간신히 돌아갈 정도로 조잡한 버전을 만들었습니다. 작동은 했고, 저는 행복했고, 그대로 내려놓았습니다. 제 말은, 그냥 재미로 만든 것이라 그렇게까지 신경 쓰지 않았다는 뜻입니다.
몇 달 후, 저는 동일한 컨셉이 구독형 제품으로 판매되는 것을 보았습니다. 그것이 저를 불편하게 만들었습니다. 저는 이미 이것을 만들었습니다. 비록 조잡한 버전이었을지라도, 어쨌든 저는 만들었습니다. 그래서 저는 스스로에게 생각했습니다. 제대로 만들어서, 무료로 혹은 오픈 소스 (open-source)로 만들 수 있을 것이라고 말이죠.
그래서 저는 다시 시작했습니다. 제대로 된 CLI (Command Line Interface), 웹 인터페이스 (Web interface), 그리고 깔끔한 아키텍처 (Architecture)를 갖추고 말이죠. VAD (Voice Activity Detection), STT (Speech-to-Text), LLM (Large Language Model), TTS (Text-to-Speech) — 실시간 음성 루프 (real-time voice loop)의 전체 과정을 구현했습니다. 그리고 한 가지 엄격한 규칙을 세웠습니다. 반드시 CPU에서 실행되어야 한다는 것이었습니다. 저에게는 GPU가 없습니다. 대부분의 사람들도 마찬가지고요. 만약 GPU가 필요하다면, 그것은 진정으로 모두를 위한 것이 아니라고 생각했습니다.
지금 여러분이 보고 계신 것이 바로 그것입니다. 아직 알파 (alpha) 단계이며, 곳곳이 거칠고, 저 이외의 사용자 테스트를 거치지 않았습니다. 하지만 작동하며, 무료이고, 여러분의 로컬 머신 (local machine)에서 실행됩니다.
데모에 관한 참고 사항: 영상 가이드는 생략합니다. 제가 로컬에서 사용하는 Live2D 모델에 재배포 제한이 있어, 해당 모델이 포함된 영상을 공개적으로 공유할 수 없기 때문입니다. 제가 파악한 바로는 음성, 메모리, 그리고 그 외 모든 기능이 잘 작동하며, 직접 체험해보고 싶다면 아바타 없이도 작동합니다.
다음 단계
그녀가 실제로 무언가를 수행하게 만드는 것입니다.
현재 Yumii는 대화만 가능합니다. 제가 원하는 것은 그녀가 행동하는 것입니다 — 웹을 검색하고, 이메일을 읽고, 쇼핑을 도와주며, 사용자를 대신해 브라우징을 하는 것이죠. 단순한 컴패니언 (companion)이 아닌, 진정한 어시스턴트 (assistant) 말입니다.
이는 MCP (Model Context Protocol)를 통해 그녀에게 도구 접근 권한 (tool access)을 부여함으로써 이루어질 것입니다.
기여하기
Yumii는 MIT 라이선스로 완전히 오픈 소스 (open source)입니다. 만약 여러분이 LangGraph, 벡터 데이터베이스 (vector databases), 음성 파이프라인 (voice pipelines)을 사용하여 개발하거나, 단순히 이런 종류의 프로젝트에 흥미를 느끼는 개발자라면, 기여를 진심으로 환영합니다.
다른 개발자들이 이 아키텍처나 접근 방식에 대해 어떻게 생각하는지, 혹은 이 기술을 바탕으로 무엇을 구축하고 싶은지에 대해 듣고 싶습니다. 이슈 (issue)를 생성하거나, 토론을 시작하거나, 혹은 여기에 댓글을 남겨주세요. 모든 관점이 도움이 됩니다.
작은 참고 사항
Yumii는 아직 매우 초기 단계이며 활발히 개발 중이므로, 여기저기 다듬어지지 않은 부분이 있을 수 있습니다.
이 프로젝트를 LinkedIn 외부로 제대로 공유하는 것은 이번이 처음입니다. 개발하는 동안 동료 개발자분들의 피드백, 아이디어, 또는 기여를 진심으로 바랍니다.
GitHub Copilot 사용 경험
이번 스프린트 (sprint) 동안 Copilot은 주로 탭 완성 (tab completion) 기능을 통해 계속 실행되었으며, 바로 그 지점에서 진정으로 도움이 되었습니다.
세션(session) 및 메모리(memory) 모듈 전반에 걸쳐 반복되는 비동기(async) 패턴이야말로 이 도구가 제 역할을 톡톡히 해낸 지점이었습니다. 첫 번째 메서드(method)의 구조를 파악하자마자, 나머지 부분들을 거의 완벽하게 완성해냈습니다. 정확한 SQL, 정확한 await 배치, 그리고 정확한 에러 핸들링(error handling)까지 말이죠. 한 시간이 걸렸을 작업이 15분 만에 끝났습니다.
SQLite 스키마(schema)를 작성할 때도 마찬가지였습니다. 제가 CREATE TABLE sessions (라고 입력하자, 아직 생각지도 못했지만 결국 필요하게 될 컬럼(column)들을 포함한 전체 스키마를 제안했습니다.
이 도구가 어떤 결정을 내린 것은 아니었습니다. 아키텍처(architecture), 3중 데이터베이스 설계, fire-and-forget 방식의 정보 추출(fact extraction), 비동기 큐 파이프라인(async queue pipeline) 등 이 모든 것은 수동으로 고민하여 설계한 것이었습니다. 하지만 결정된 사항들을 빠르고 정확한 보일러플레이트(boilerplate) 코드로 변환하는 데 있어서는 진정으로 유용했습니다.
또한 통합 지점(integration points)을 교차 검증하기 위해 Claude를 사용하기도 했습니다. 특히 웹 검색 기능을 추가할 때 LangChain 도구 인터페이스(tool interface)를 검증하는 용도로 활용했습니다. 두 도구 모두 각기 다른 역할을 수행했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기