Leon: 인텐트 우선에 오프라인 실행이 가능한 오픈소스 개인 비서, 코어를 TypeScript로 재작성 중

Published · AI Daily — AI-assisted deep research, methodology & disclosure

Leon은 MIT 라이선스의 오픈소스 개인 비서로, 자신의 서버에서 음성과 텍스트를 다루며 완전히 오프라인으로 실행할 수 있습니다. NLU는 인텐트 우선이고 LLM 대신 자체 모델을 쓰며 기능은 스킬로 묶습니다. 1.0.0-beta.8에서 바이너리 배포와 TypeScript 재작성이 진행되었습니다. 외부 기여는 중단 상태이며 벤치마크는 없습니다.

위치: 내 서버에서 살 수 있는 오픈소스 개인 비서

Leon은 MIT 라이선스의 오픈소스 개인 비서입니다. 슬로건은 "당신의 오픈소스 개인 비서"입니다. 또 하나의 클라우드 챗봇이 아니라, 자신의 서버에 설치해 상주시키는 프로그램입니다. 말을 걸면 음성으로 답하고, 글을 보내면 글로 답하며, 먼저 연락을 줄 수도 있습니다. 무엇보다 완전히 오프라인으로 실행해 개인정보를 지킬 수 있습니다. 대규모 언어 모델이 화제를 독점한 지금, 이 방향은 흐름을 거스르는 것처럼 보입니다. 그래서 더 꼼꼼히 읽을 가치가 있습니다.

작성자는 README에서 다섯 가지 동기를 밝힙니다. 첫째, 일상에 도움이 되는 작은 도구를 많이 만들고 싶은 개발자가 아이디어마다 별도 프로젝트를 만드는 대신 Leon의 스킬 구조에 담을 수 있습니다. 둘째, 범용 구조 덕분에 누구나 스킬을 만들고 공유할 수 있어 코어는 하나면 됩니다. 셋째, AI 개념을 쓰기 때문에 재미있습니다. 넷째, 개인정보가 중요하므로 제3자 서비스 없이 오프라인으로 대화하도록 설정할 수 있습니다. 다섯째, 오픈소스는 훌륭합니다.

핵심 구조: 협력하는 여러 노드

README에 따르면 이 저장소에는 Leon의 여러 노드가 들어 있습니다. 서버, 스킬, 웹 앱, 핫워드 노드, TCP 서버, Python 브리지입니다. TCP 서버는 Leon과 spaCy 같은 외부 노드 사이의 프로세스 간 통신을 맡습니다. 메인 프로세스와 전담 보조 프로세스로 나누는 설계는 현실적입니다. 자연어 처리 자산은 대부분 Python에 있고, 서버와 웹 쪽은 TypeScript가 어울립니다. 로컬 TCP로 둘을 이으면 각자의 강점을 살릴 수 있습니다.

최신 릴리스 1.0.0-beta.8의 블로그 글 제목은 "바이너리와 TypeScript 재작성"입니다. 여기서 두 가지를 알 수 있습니다. 코어를 TypeScript로 다시 쓰고 있다는 것, 그리고 미리 빌드한 바이너리를 제공해 설치 문턱을 낮추고 있다는 것입니다. README는 현재의 Python 브리지와 나란히 JavaScript 브리지가 추가될 예정이라고도 말합니다. 스킬 작성자는 익숙한 언어로 스킬을 쓸 수 있게 됩니다.

동작 원리: 인텐트 우선 NLU

Leon의 자연어 이해(NLU)는 "인텐트 우선"입니다. 직접 학습한 모델을 쓰며 대규모 언어 모델에 의존하지 않습니다. 흐름은 대략 이렇습니다. 사용자의 발화는 입력한 글이든 음성 인식 결과이든 먼저 인텐트로 분류되고, 동시에 개체명이 추출됩니다. 그다음 맞는 스킬로 전달되어 스킬이 답을 만듭니다. 장점은 분명합니다. 모델이 작고 추론이 빠르며 결과를 예측할 수 있고, 엣지 기기에서 완전히 오프라인으로 돌릴 수 있습니다. 단점도 분명합니다. 미리 정의한 인텐트만 처리하고, 일반화 능력은 LLM에 크게 못 미칩니다.

작성자는 이 절충을 냉정하게 봅니다. README는 LLM의 미래 활용을 네 가지로 듭니다. 첫째 인텐트 폴백: 어떤 인텐트와도 맞지 않는 발화를 LLM에 맡깁니다. 둘째 새로운 개체명 인식 엔진: 과일, 숫자, 도시, 기간, 사람 이름 등을 더 잘 뽑아냅니다. 셋째 스킬 기능: 요약, 번역, 감정 분석 등을 스킬이 바로 쓸 수 있게 합니다. 넷째 스킬 개발 지원: 예시 발화 바꿔 쓰기, 답변 번역, Python 브리지와 미래의 JavaScript 브리지 사이 코드 변환을 돕습니다. 작성자는 양자화 같은 경량화 기술 덕분에 언젠가 LLM을 코어에 두고도 엣지에서 돌릴 수 있다고 믿습니다.

성능과 비용: README에 벤치마크는 없다

솔직히 말해 이 README에는 벤치마크가 없습니다. 지연 시간, 정확도, 자원 사용량 비교가 하나도 없습니다. 그래서 이 글도 수치를 만들어 내지 않습니다. 구조에서 추론할 수 있는 것은 절충뿐입니다. 인텐트 우선의 작은 모델은 운영 비용이 매우 낮고 종량제 추론 비용이 거의 없습니다. 대가는 적용 범위입니다. Leon이 할 수 있는 일은 커뮤니티가 스킬을 얼마나 쓰는지, 인텐트마다 예시 발화가 몇 개 필요한지에 달려 있습니다. 나중에 양자화한 로컬 LLM을 넣으면 메모리 사용량과 첫 응답 지연이 새로운 주요 비용이 됩니다. 작성자가 엣지 실행을 계속 강조하는 이유입니다.

생태계와 도입 영향

개발자에게 Leon의 가치는 스킬이라는 통일된 추상화에 있습니다. 작은 아이디어를 스킬로 만들면 같은 음성, 텍스트, NLU, 배포 체계를 재사용합니다. 개인정보를 중시하는 개인이나 소규모 팀에게 셀프 호스팅과 오프라인 동작은 필수 조건이며, Leon은 드물게 완결된 오픈소스 답안입니다. 작성자는 스킬 플랫폼이 열리면 진행 상황을 맞추고 새 스킬을 공개하기가 쉬워진다고 말합니다. Discord 정비, 정기 통화, 스킬 공동 개발도 계획하고 있습니다.

한계와 과제

첫째, 프로젝트 상황이 녹록지 않습니다. 작성자는 개인 사정으로 퇴근 후와 주말에만 새 코어를 개발한다고 밝힙니다. 호환되지 않는 변경이 많아 충돌을 피하기 위해 당분간 외부 기여를 받지 않으며, 새 코어의 정식 릴리스 전에는 문서와 테스트도 새로 쓰지 않습니다. 둘째, 인텐트 우선 NLU는 범위가 제한적이라 LLM 폴백이 필요한데, 이는 아직 계획 단계입니다. 셋째, 자금이 현실적인 제약입니다. 작성자는 언젠가 전업으로 일하길 바라고 수익화 아이디어도 있지만, 코어는 항상 오픈소스로 남기겠다고 약속합니다. 지금은 후원을 받고 있습니다.

앞으로의 전개

새 코어의 정식 릴리스, 스킬 플랫폼 공개, JavaScript 브리지와 LLM 폴백 도입, Discord와 정기 통화 같은 커뮤니티 활동이 예상됩니다. 핵심 질문은 둘입니다. 새 코어가 나온 뒤 기여가 다시 열릴까요? LLM을 붙이고도 오프라인 사용이 정말 유지될까요? 그때까지 Leon은 분명한 철학을 가지고 기반을 다시 세우는 장기 프로젝트로 보는 것이 맞습니다. 철학은 배울 만하지만, 실서비스에 쓰기 전에 최신 브랜치와 릴리스 노트를 확인해야 합니다.

Sources