고등학생 시절 5개월 동안 내 PC를 실제로 제어하는 로컬 AI를 만들었습니다: 파일, 앱, 브라우저, 음성 지원 및 9B 모델에서도
요약
개인정보 보호를 위해 개발된 Hearth는 로컬 환경에서 PC의 파일, 앱, 브라우저를 직접 제어하는 오픈 소스 AI 에이전트입니다. 9B 규모의 소형 모델에서도 안정적인 동작을 위해 도구 로드 최적화와 자동 대화 압축 기술을 적용했습니다.
핵심 포인트
- 로컬 환경에서 파일, 브라우저, 데스크톱 제어 가능
- 9B 모델 최적화를 위한 On-demand 도구 로딩 기술 적용
- 컨텍스트 유지를 위한 자동 대화 요약(Auto-compaction) 기능
- 접근성 트리(Accessibility Tree)를 활용한 정확한 UI 제어
- 보안을 위한 작업 공간 제한 및 셸 명령어 패턴 검사
솔직히 말해서 이것은 개인정보 보호 문제에서 시작되었습니다. 제가 하는 모든 일 위에 클라우드 모델이 자리 잡는 것을 원하지 않았거든요. 실제로 무언가를 할 수 있는 로컬 옵션들은 설정하기가 매우 번거롭거나 WSL을 요구했기 때문에, 결국 직접 만드는 쪽을 택했습니다. 약 5개월 동안 저녁 시간을 투자했으며, 대부분은 제가 아직 17살이었을 때였습니다. 이것의 이름은 Hearth이며, 할 수 있는 일을 설명만 하는 채팅창이 아니라 실제 컴퓨터를 실행하는 오픈 소스 (open-source) 로컬 AI입니다. 여러분이 이미 사용 중인 것(LM Studio, Ollama, llama.cpp, LAN 상의 박스, 클라우드 키 등)을 지정하면 모델이 실제로 기기를 작동시킵니다. 아무것도 설정되어 있지 않다면 자체적인 llama.cpp 서버를 함께 제공하므로 바로 사용할 수 있습니다. 실제로 파일을 읽고 쓰며, 명령어를 실행하고, 여러분이 클릭하는 과정을 지켜볼 수 있는 실제 브라우저를 구동하며, 데스크톱 자체를 제어합니다. 무언가를 클릭할 때 픽셀을 추측하는 대신 접근성 트리 (accessibility tree)에서 실제 컨트롤 이름을 읽어오기 때문에, 버튼을 잘못 누르는 실수를 하지 않습니다. 음성 기능(웨이크 워드 (wake word), 말을 끊고 끼어들기 가능)도 지원하며, 기본 이름은 JARVIS인데 이것이 프로젝트의 핵심 목적이기도 했습니다. 평범한 영어로 리마인더를 설정하고, PDF, DOCX, XLSX, EPUB에서 깨끗한 텍스트를 읽어내며, 컨텍스트 (context)에 들어가지 않는 500페이지 분량의 책을 청크 단위로 요약 (chunk-summarize)할 수 있습니다. 또한 PDF, 슬라이드 덱, 스프레드시트를 다시 생성할 수 있으며, Telegram이나 Discord 봇을 통해 휴대폰에서 전체 시스템을 실행할 수도 있습니다. 이것은 MCP 서버이자 클라이언트이며, 스크립트나 CI에서 사용하고 싶을 경우 JSONL을 출력하는 헤드리스 (headless) 모드도 지원합니다. 이 서브레딧(sub)에서 관심을 가질 부분은 9B 모델이 에이전트 (agent)로서 살아남기 위해 무엇이 필요했는가 하는 점일 것입니다. Hearth는 약 100개의 도구 (tools)를 보유하고 있는데, 제가 스키마 (schemas)를 측정해 본 결과, 페르소나 (persona)나 단일 메시지가 전달되기 전에 이 모든 것을 보내는 것만으로도 15K 이상의 토큰이 소모됩니다. 32K 컨텍스트에서 이는 예산의 절반을 모델이 건드리지도 않을 기능을 설명하는 데 쓰는 셈입니다. 따라서 약 절반만 사전에 전송하고 나머지는 이름에 따라 필요할 때 로드(on demand)하도록 하여 10K 미만으로 유지하고 있습니다.
나머지 절반은 자동 압축 (auto-compaction) 기능입니다. 채팅이 길어지면 이전 대화 내용을 잘라내는 대신 요약하여, 세션이 컨텍스트 창의 끝에서 그냥 사라지지 않도록 합니다. 이 두 가지 기능이 결합되어 9B 모델이 30턴 이후에 무너지지 않고 버틸 수 있게 해줍니다. 모델 브라우저 (model browser)가 내장되어 있어, 무언가를 다운로드하기 전에 실제로 사용자의 VRAM에 들어갈 수 있는 크기가 얼마인지 알려주고, 그에 맞춰 설정을 조정해 줍니다. 저는 8GB를 가진 5060에서 개발하고 있으므로, 이 시스템은 사용자가 4090을 보유하고 있다고 가정하지 않습니다. 해당 크기에서 Qwythos 9B가 기본 선택지이며, 매우 작은 모델들이 형식을 제대로 맞추지 못해 헤매는 다단계 도구 호출 (multi-step tool-calling)을 깔끔하게 처리합니다.
제가 가장 많은 시간을 할애했고, 모두가 가장 먼저 물어보는 부분은 바로 이것이 사용자의 드라이브를 잡아먹지 않게 만드는 것입니다. 파일 쓰기 및 삭제는 작업 공간 폴더 (workspace folder)로 제한되며, 셸 명령 (shell commands)은 실행되기 전에 패턴 검사 (pattern-checked)를 거칩니다. 삭제, 이동, 포맷, 레지스트리 편집, 심지어 디스크 경로에 쓰는 리다이렉션 (redirect)까지 모두 즉시 거부되며, 반드시 다시 사용자에게 물어봐야 합니다. 테스트 삼아 Program Files 폴더에 파일을 쓰도록 시도해 보았으나 단호히 거부했습니다 (스크린샷은 댓글 참고). 시스템에 접촉하는 모든 작업은 먼저 정확한 명령어를 보여주며, 모든 작업에 대한 실시간 로그가 남고, 절대로 권한 상승 (elevated) 상태로 실행되지 않습니다. 계정도, 텔레메트리 (telemetry)도 없으며, 외부로 정보를 전송하지 않습니다. 또한 사용자의 방해를 하지 않습니다. 1분 만에 설정할 수 있고, 원하는 이름을 붙이고, 목소리를 선택하면 되며, 설정은 재시작이나 설정 파일 없이 실시간으로 저장됩니다. C 드라이브가 가득 찼나요? 버튼 하나로 메모리, 채팅, 모델을 포함한 전체를 다른 드라이브로 옮길 수 있습니다. 이미 OpenClaw나 Hermes를 사용 중인가요? 해당 설치 경로를 지정하면 메모리와 기술 (skills)을 복사해 오며, 오직 복사만 수행하므로 기존 설정은 그대로 유지됩니다. 그리고 이 시스템은 확장됩니다. 단 한 줄로 어떤 GitHub 리포지토리에서든 기술을 설치할 수 있으며, 저는 이를 위한 커뮤니티 인덱스를 시작했습니다. 필요한 도구가 없으면 스스로 도구를 작성하며, 이미 로드된 모델을 재사용하는 서브 에이전트 (sub-agents)의 소규모 팀을 구성하므로 팀을 운영하는 데 추가적인 VRAM 비용이 들지 않습니다.
로컬 서버를 대상으로 할 경우, llama.cpp에 하나 이상의 슬롯(slot)을 할당하지 않는 한 중첩되지 않습니다. llama.cpp는 슬롯 전체에 컨텍스트(context)를 분할하므로, Hearth는 사용자의 설정을 에이전트당 설정으로 취급하며, 각 에이전트에게 컨텍스트 윈도우(window)의 4분의 1을 조용히 넘겨주는 대신 직접 곱셈 연산을 수행합니다. 제가 좋아하는 비용 등급(cost-class) 트릭도 있습니다. '저렴함(cheap)'으로 표시된 서브 에이전트(sub-agent)는 부모 에이전트가 클라우드 키(cloud key)에 있더라도 로컬 모델로 경로를 지정합니다. 따라서 고비용의 추론(reasoning)은 상위 단계에서 수행되고, 단순 반복 작업(grunt work)은 사용자의 VRAM에 있는 9B 모델에서 무료로 유지됩니다. 또한 이미지를 생성하고 비디오도 생성하며, Stable Diffusion을 실행 중이라면 로컬에서 Forge를 구동합니다. 이번 주에 드디어 제대로 구현한 기능이 하나 있습니다. Hearth는 설치 프로그램을 다시 가져오게 하는 대신 1MB 미만의 패치로 스스로를 업데이트합니다. 저는 거의 매일 수정 사항을 배포하는데, 몇 줄 바뀐 코드 때문에 사람들에게 1GB를 다시 받으라고 요구하는 것은 업데이트를 중단하게 만드는 지름길이기 때문입니다. 하지만 현재 원클릭 설치 프로그램은 Windows 전용이며, Linux는 소스(source)로부터 실행해야 하고, 저는 Mac을 소유하고 있지 않아 보증할 수 없습니다. 아직 코드 서명(code signed)이 되지 않아 SmartScreen에서 알 수 없는 게시자 경고창이 뜹니다. 이것은 v0.7 프리뷰(preview)입니다. MIT 라이선스이며 무료입니다: https://github.com/0pen-Sourcer/Hearth 만약 유용하다고 판단된다면 Star를 눌러주세요. 인정하고 싶지 않을 만큼 그 숫자를 자주 확인하곤 합니다. 좋든 잔혹하든 진솔한 피드백을 진심으로 기다립니다.
submitted by /u/T-90_Soviet [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기