
4주 만에 완전 로컬 AI 어시스턴트를 구축하고 안전 프로토콜을 작성했습니다
요약
사용자의 데이터를 외부 서버로 전송하지 않고 기기 내에서만 작동하는 100% 로컬 AI 어시스턴트 E.L.L.A.의 개발 과정을 다룹니다. Ollama와 llama3.1을 활용하여 음성 제어, 파일 관리, 앱 실행 등 70여 개의 도구를 수행하는 완성된 제품을 4주 만에 구축했습니다.
핵심 포인트
- 데이터 보안을 위해 100% 로컬 실행 환경 구축
- Ollama 및 llama3.1 기반의 로컬 LLM 활용
- 음성 인식부터 도구 실행까지의 파이프라인 설계
- Electron을 이용한 데스크톱 애플리케이션 패키징
- 사용자 스트레스 감지 및 다국어 지원 기능 구현
4주 만에 완전 로컬 AI 어시스턴트를 구축하고 안전 프로토콜을 작성했습니다
4주 전 저는 아이디어를 떠올렸습니다. 그리고 오늘, 저는 설치 프로그램을 가지고 있습니다.
그 사이에 일어난 일들은 다음과 같습니다.
제가 해결하려 했던 문제
제가 시도해 본 모든 AI 어시스턴트는 데이터를 클라우드로 전송하거나, 대부분의 사람들이 따라 할 수 없는 기술적인 설정이 필요하거나, 혹은 둘 다였습니다.
저는 다른 것을 원했습니다. 완전히 사용자의 기기에서 실행되고, 사용자에게 말을 걸며, 자연어 (Natural Language)를 이해하고, PC를 제어하면서도 — 절대 외부 서버로 데이터를 보내지 않는 어시스턴트 말입니다.
프레임워크가 아닙니다. 챗봇 (Chatbot)도 아닙니다. 설치해서 바로 사용하는 완성된 제품입니다.
그래서 저는 하나를 만들었습니다.
E.L.L.A.란 무엇인가
**E.L.L.A. (Embedded Local Logic Agent)**는 100% 로컬에서 실행되는 Windows용 음성 제어 AI 어시스턴트입니다.
사용자가 말을 걸면, E.L.L.A.가 작업을 수행합니다.
- 앱 열기, 파일 이동, 웹 검색, 화면 읽기
- 로컬 언어 모델 (Local Language Model) (Ollama / llama3.1:8b)을 사용하여 질문에 답변
- 원할 경우 클라우드 폴백 (Fallback)으로 OpenAI로 전환 가능 — 혹은 사용하지 않아도 됨
- 독일어, 영어, 스페인어, 프랑스어로 응답 (v3.8.0)
- 사용자가 스트레스를 받는 상황을 감지하고 행동을 조정 (v3.9.0)
약 70개의 도구 (Tools). 단 한 번의 음성 명령으로 실행 가능합니다.
기술 스택 (The stack)
| 계층 (Layer) | 기술 (Technology) |
|---|---|
| 데스크톱 셸 (Desktop shell) | Electron |
| ... |
파이프라인 (Pipeline)은 다음과 같습니다:
LLM은 코드를 직접 실행하지 않습니다. 등록된 타입 정의 도구 세트 중에서 선택합니다. 모든 도구 호출은 실행되기 전에 규칙 엔진 (Rule engine)을 거칩니다.
4주간의 과정. 상세 일정은 다음과 같습니다.
1주 차 — 핵심 파이프라인: 음성 (Voice) → LLM → 도구 (Tool) → TTS. 단일 언어, 약 15개의 도구, 매우 거친 초기 단계.
2주 차 — 도구를 약 70개로 확장. 앱 실행, 파일 관리, 화면 읽기, 웹 브라우징. 많은 예외 상황 (Edge cases) 발생. 퍼지 앱 이름 매칭 (Fuzzy app name matching)이 가장 흥미로운 문제 중 하나였습니다.
3주 차 — Electron 패키징, 시스템 트레이 (System tray), 라이선스 키 검증, 다국어 TTS. 트레이 최소화 시 AudioContext가 종료되는 버그로 인해 반나절을 허비했습니다 (해결책: 창을 기술적으로 활성 상태로 유지하기 위한 1×1px 트릭 사용).
4주 차 — 마이크 분석을 통한 스트레스 감지 (녹음 및 저장 없음), 설치 패키징, 랜딩 페이지, 라이선스 서버. 프로덕션 준비 완료.
설정 (Settings) 패널을 통해 언어 전환, 프로필 관리, 로컬 또는 클라우드 LLM (Large Language Model) 구성 — 그리고 스트레스 감지 민감도를 조정할 수 있습니다.

대부분의 AI 프로젝트가 건너뛰는 부분: 안전 (safety)
AI 에이전트에게 파일 시스템, 마이크, 네트워크에 대한 접근 권한을 부여할 때는, 해당 에이전트가 무엇을 할 수 있도록 허용할지에 대해 깊이 고민해야 합니다.
저는 이 부분에 시간을 투자했고, 결국 이를 공식 명세(formal specification)로 작성했습니다:
E.L.L.A. 지침 (The E.L.L.A. Directive)
자율형 로컬 AI 에이전트를 위한 공개 안전 프로토콜.
네 가지 아키텍처적 금지 사항입니다. 가이드라인이 아닙니다. 설정 가능한 기본값도 아닙니다. 모델 수준이 아닌 코드 수준에서 강제되는 '금지 사항'입니다.
| # | 코드 | 의미 |
|---|---|---|
| 1 | harm | 신체적, 재정적, 심리적 또는 데이터 관련 피해를 유발하는 어떠한 행동도 금지 |
| ... |
아시모프(Asimov)에게는 세 가지 법칙이 있었습니다. 그것은 법칙을 어기는 로봇들에 관한 이야기를 위해 쓰인 허구였습니다.
이 네 가지 법칙은 TypeScript로 구현되었습니다. E.L.L.A.의 모든 도구 호출(tool call)은 실행 전 이 법칙들을 통과해야 합니다. 예외(override)는 없습니다.
이 지침은 오픈 소스이며 다른 프로젝트들이 채택할 수 있도록 설계되었습니다. 로컬 AI 에이전트를 구축하고 있다면, 자유롭게 사용하셔도 좋습니다.
GitHub: The E.L.L.A. Directive
TypeScript 참조 구현체는 @ella-directive/core로 배포됩니다.
내가 배운 것
Ollama는 과소평가되었습니다. 2026년에 유능한 LLM (Large Language Model)을 로컬에서 실행하는 것은 진정으로 쉽습니다. 어려운 부분은 그 주변의 모든 것입니다.
도구 호출 (Tool-calling) 아키텍처가 프롬프트 엔지니어링 (Prompt engineering)보다 우수합니다. 모델에게 타입이 지정되고 등록된 도구 세트와 규칙 엔진을 제공하는 것이, 시스템 프롬프트만으로 행동을 제약하려는 것보다 더 신뢰할 수 있고 감사 (Auditable) 가능합니다.
오디오를 통한 스트레스 감지는 들리는 것보다 간단합니다. 슬라이딩 윈도우 (Sliding window) 방식의 RMS (볼륨), ZCR (주파수 패턴), 그리고 피치 (Pitch) 분석은 녹음 파일을 전혀 저장하지 않고도 놀라울 정도로 유용한 신호를 제공합니다.
AudioContext 문제는 실재합니다. 오디오 기능이 포함된 Electron 앱을 구축하는 경우, window.hide()는 오디오 컨텍스트 (Audio context)를 종료시킵니다. 사용하지 마세요.
패키징 작업에서 시간이 사라집니다. 핵심 로직은 3주가 걸렸습니다. 마지막 1주 — 설치 프로그램, 알 수 없는 하드웨어에서의 예외 케이스, 라이선스 검증, 랜딩 페이지 — 는 처음 2주를 합친 것만큼의 시간이 걸렸습니다.
다음 단계
- 세 개의 별도 저장소 (Repos): E.L.L.A. (데스크톱), HOME (스마트 홈), ARM (시설 보안)
- Directive 준수 스위트 (현재 진행 중)
- 출시: 2026년 7월 1일
만약 여러분이 이 분야 — 로컬 에이전트 (Local agents), 개인정보 보호 우선 AI (Privacy-first AI), 자율 데스크톱 도구 — 에서 무언가를 구축하고 있다면, 여러분이 무엇을 작업하고 있는지 궁금합니다.
E.L.L.A.는 2026년 7월 1일 ella-agent.de 에서 출시됩니다.
The E.L.L.A. Directive: github.com/AndreZ1971/The-E.L.L.A.-Directive-
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기