
OpenLumara - 'Vibe coding'이 아닌 밑바닥부터 직접 작성한, 색다른 방식의 AI 에이전트. 극도로 효율적인 토큰 사용량
요약
OpenLumara는 기존의 비효율적인 에이전트 프레임워크와 달리, 밑바닥부터 직접 코딩하여 토큰 사용량을 극도로 최적화한 로컬 AI 에이전트입니다. 모듈형 구조와 강력한 보안, 사용자 제어권을 특징으로 하며 로컬 모델 환경에 최적화되어 있습니다.
핵심 포인트
- 4k 수준의 작은 시스템 프롬프트로 토큰 효율성 극대화
- 모듈형 설계를 통해 필요한 기능만 선택적 사용 가능
- 도구 호출(toolcalls) 기반의 강력한 보안 및 사용자 제어권 제공
- 로컬 모델 및 koboldcpp 환경에 최적화된 설계
안녕하세요, locallama 커뮤니티 여러분! 네, 저도 압니다. 또 다른 AI 에이전트 발표 글이라는 것을요. 시중에 그런 것들은 차고 넘칩니다... 하지만 그들 대부분은 '바이브 코딩 (vibecoded)' 방식으로 만들어져 매우 허술하고, 컨텍스트 (context)를 무지막지하게 잡아먹곤 하죠. 이것은 다릅니다. 이 에이전트는 평범한 하드웨어에서도 로컬 모델 (local models)을 통해 매우 빠르고 아름답게 작동합니다. 저는 여가 시간을 활용해 수개월 동안 많은 수동 코딩을 거쳐 이 프로젝트를 작업해 왔으며, 제 개인적인 일정과 할 일 목록(todos) 등을 관리하는 개인 비서로서 일상적으로 사용하고 있습니다. koboldcpp 커뮤니티 디스코드의 몇몇 분들도 이미 사용 중입니다! 저는 openclaw와 hermes보다 더 빠르고, 더 가볍고, 더 안전한 에이전트를 만드는 데 성공했다고 믿습니다. 로컬 모델과 작동하도록 모든 것을 밑바닥부터 실제로 설계하고, 시중에 있는 에이전트 프레임워크 (agentic harnesses)의 99%를 괴롭히는 수많은 관행을 없애는 것만으로 충분했습니다.
요약하자면 (TL;DR): 나머지 글을 읽고 싶지 않으시다면, 가장 중요한 내용은 다음과 같습니다: 기본 시스템 프롬프트 (system prompt) 크기는 약 4k 토큰이며, 모든 것은 모듈 (module)로 구성되어 있어 무엇이든 끌 수 있습니다. WebUI는 일급 시민 (first class citizen)으로서 매우 중요하게 다뤄졌으며, 사용자 친화적으로 만들기 위해 엄청난 시간과 노력을 기울였습니다. 보안은 밑바닥부터 구축되었습니다. 모든 것은 도구 호출 (toolcalls)을 기반으로 하며, AI가 무엇을 할 수 있고 무엇을 볼 수 없는지에 대해 사용자가 완전히 제어할 수 있습니다. 완전한 오픈 소스이며, GPL3 라이선스를 따르고, 상업적 이익을 추구하지 않습니다. 저는 그저 지루함을 달래고 여가 시간이 많은 한 개인일 뿐입니다. AI 면책 조항: 이 프로젝트가 '바이브 코딩 (vibecoded)'으로 만들어진 것은 아니지만, 일부 부분(주로 WebUI)에는 AI의 도움을 받았습니다. 하지만 openlumara의 모든 중요하고 핵심적이며 보안에 민감한 구성 요소들은 제가 직접 수동으로 코딩했습니다. 우리 모두 알다시피, 그런 부분들을 바이브 코딩으로 작성하는 것은 즉각적인 보안 재앙으로 이어지기 때문입니다.
소스 코드를 읽어보시면, 제가 핵심 부분에서 AI의 도움을 받을 수밖에 없었던 상황에 대해 곳곳에 남겨둔 주석들을 발견하실 수 있을 것입니다. 예를 들어, 도구 호출 (toolcall) 스트림 파싱을 올바르게 처리하기 위해서였습니다 (OpenAI의 공식 문서에 있는 예제조차 제대로 작동하지 않는다는 게 믿겨지시나요?). 프레임워크의 핵심 부분에서 AI의 도움을 사용했을 경우, 저는 모든 코드 라인을 수동으로 검토했으며, 종종 그에 관한 주석을 추가했습니다. 비디오 데모: https://www.youtube.com/watch?v=Sv15woUe2mk 여기서 받으세요: https://github.com/Rose22/openlumara 디스코드 서버: https://discord.gg/4x8uax32qn 또는, OpenLumara가 내장된 esolithe의 koboldcpp 포크인 esobold를 이용하세요: https://github.com/esolithe/esobold (OpenLumara를 프로젝트에 통합해 준 esolithe에게 감사드립니다 <3). 로컬 모델, llamacpp, 내부적으로 llamacpp를 사용하는 모든 것, 그리고 koboldcpp와 함께 사용하도록 제작되었습니다. 이제 전체 내용을 알고 싶으시다면 계속 읽어주세요: 제가 OpenClaw의 출시와 그를 둘러싼 모든 열풍을 보았을 때, 저는 눈에 띄는 보안 결함들을 계속해서 발견했습니다. 모든 것이 (skill.md 시스템으로 인해) 완전한 셸 (shell) 액세스를 요구한다는 사실과, 토큰을 무지막지하게 소모한다는 점 말입니다... 또한 OpenClaw를 로컬 모델로 실행하려고 할 때 매우 느리며, 사용자의 AI가 한 번에 많은 요청을 처리할 수 있다고 가정한다는 점도 발견했습니다. 로컬 환경에서는, 특히 한 번에 하나의 요청만 처리하도록 설계된 llamacpp의 경우 그렇지 않은 경우가 많습니다. 그래서 저는 이러한 문제 대부분을 해결할 수 있는, OpenClaw와 유사하지만 밑바닥부터 직접 만든 것을 만들기로 결심했습니다. 제가 만들어낸 것은 처음에는 OptiClaw라고 불렸으나, 지금은 OpenLumara입니다. OpenLumara는 매우 안전하고 토큰 효율성이 높도록 설계되었습니다. 현재 활성화된 기본 모듈 세트를 기준으로 시스템 프롬프트의 크기는 약 4k 토큰입니다. 보안과 토큰 효율성은 완전히 모듈화된 특성에서 비롯됩니다. 다른 에이전트들이 "핵심 기능"이라고 간주하는 것들까지 포함하여 모든 것이 모듈화되어 있습니다. 메모리(Memory)? 그것은 하나의 모듈입니다. 셸 (Shell) 액세스? 그것도 하나의 모듈이며, 기본적으로 비활성화되어 있습니다.
모든 모듈을 끄면 시스템 프롬프트(System Prompt)는 말 그대로 빈 상태가 되며, 마치 llamacpp의 webui를 통해 채팅하는 것처럼 가공되지 않은 모델(Bare model)과 대화하게 됩니다. 저는 모듈이 꺼져 있을 때 해당 코드가 로드되거나 Python에 의해 임포트(Import)조차 되지 않도록 설계했습니다. 따라서 여러분이 원하는 만큼 가볍게 혹은 모든 기능을 갖춘 상태로 만들 수 있습니다! 인터넷 접속을 위해 curl에 의존하는 대신, 블랙리스트(Blacklist), 화이트리스트(Whitelist), HTTPS 전용 모드 및 기타 다양한 옵션을 갖춘 HTTP 모듈을 갖추고 있어 AI가 무엇에 접근할 수 있는지 정확하게 제어할 수 있습니다. 또한 AI의 지능이 아닌 코드를 사용하여, 웹 콘텐츠 내의 프롬프트 인젝션 (Prompt Injection)에 대비한 다양한 보호 조치를 마련해 두었습니다. 완벽하지는 않지만, 웹상의 정체불명의 수상한 페이지에서 내려오는 지시를 AI가 따르지 않기를 기도하는 것보다는 훨씬 낫습니다! 이는 인터넷에 접근할 수 있는 모든 모듈에 해당됩니다. 셸 (Shell) 액세스를 원한다면, 셸이 할 수 있는 작업(인터넷 접속 차단 기능 포함)을 완전히 제어할 수 있는 샌드박스화된 Docker (또는 Podman) 컨테이너 내에서 셸을 실행하는 모듈을 켤 수 있습니다. 샌드박스화되지 않은 셸도 사용할 수 있지만, 그것이 좋지 않은 생각이라는 경고 메시지를 너무 많이 받게 될 것이므로 만약 그것을 켠다면 그것은 여러분의 책임입니다 XD OpenLumara는 여러분의 API 키를 볼 수 없습니다. 사용자 이름이나 비밀번호조차 볼 수 없습니다. 오직 여러분이 저장하기로 선택한 것만 볼 수 있습니다. 에이전트가 OpenLumara 설정을 볼 수 있게 해주는 config라는 모듈이 있지만, 놀랍게도 모든 토큰과 비밀번호는 별표(*)로 대체됩니다. 민감한 데이터는 AI에게 전달조차 되지 않습니다. 저는 보안이 중요한 작업을 수행할 때 LLM의 지능에 의존하는 것을 선호하지 않습니다. 코더 (Coder) 모듈을 제외한 모든 모듈을 끄면 시스템 프롬프트 크기가 1k 토큰 미만이 됩니다. 만약 pi와 같은 터미널 기반의 코딩 에이전트를 선호한다면, 단순히 openlumara --coder --cli를 실행하기만 하면 됩니다. 그러면 즉시 CLI 채널(터미널 UI)과 코더 모듈만 활성화된 상태로 실행됩니다.
참고로, 코더(coder)는 검색/치환(search/replace) 방식을 사용하는 대신 지원되는 언어의 함수/클래스("심볼 (symbols)")를 대상으로 지정할 수 있습니다. 따라서 AI는 도구(tool)를 사용하여 파일 내의 모든 함수와 클래스의 개요(outline)를 가져온 다음, 교체할 이전 텍스트(oldtext)를 제공할 필요 없이 정확히 해당 함수들만 읽고 편집할 수 있습니다. 이는 이러한 작업에 어려움을 겪는 로컬 모델 (local models)을 사용할 때 매우 유용합니다. OpenLumara는 또한 할 일 목록(todo lists), 쇼핑 목록 등을 위한 리스트 모듈(lists module)과 메모를 위한 노트 모듈(notes module, 마크다운(markdown) 파일이 포함된 폴더에 저장되어 Obsidian과 같은 프로그램과 호환됨)과 같이 일상생활을 돕기 위해 설계된 기능들도 갖추고 있습니다. 이 모든 기능은 오픈 포맷(open formats)을 사용하여 벤더 종속 (vendor lock-in)을 피하도록 설계되었으므로, 데이터를 다른 프로그램으로 쉽게 전송할 수 있습니다. 엄청난 양의 토큰을 잡아먹는 skill.md 대신, OpenLumara는 자신에게 로드할 수 있는 코딩 모듈을 직접 작성할 수 있습니다. 모듈은 스킬(skills)보다 더 많은 일을 할 수 있습니다. 예를 들어 새로운 명령어(예: /ping)를 제공하거나, 백그라운드 작업(background tasks)을 실행하거나, AI 또는 사용자가 보낸 메시지를 처리하는 등의 작업을 수행할 수 있습니다. OpenLumara를 즐겁게 사용하시길 바랍니다! /u/rosie254가 r/LocalLLaMA에 게시함 [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/OpenAI Codex (search)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기