브라우저 내장형 AI 'Gemma Gem' 오픈소스 공개
해커뉴스에 구글의 'Gemma 4' 모델을 브라우저 내에서 직접 구동하는 크롬 확장 프로그램 'Gemma Gem'이 공개되었습니다. WebGPU를 활용해 별도의 API 키나 클라우드 없이 기기 내에서 AI가 작동하며, 사용자의 데이터를 외부로 전송하지 않아 프라이버시가 강력하게 보호됩니다. 특히 웹페이지 내용 읽기, 버튼 클릭, 폼 작성, 자바스크립트 실행 등 브라우저 상에서의 에이전트(Agent) 작업 수행이 가능하다는 점이 가장 큰 특징입니다.
Gemma Gem 브라우저 안에 상주하는 당신만의 개인 AI 비서입니다. Gemma Gem은 구글의 Gemma 4 모델을 WebGPU를 통해 기기 내에서 완벽하게 구동합니다. API 키도, 클라우드 연결도 필요 없으며 사용자의 데이터가 컴퓨터 외부로 유출되지 않습니다. 방문하는 모든 사이트의 페이지를 읽고, 버튼을 클릭하고, 양식을 채우고, 자바스크립트를 실행하며 질문에 답변할 수 있습니다.
요구 사항
- WebGPU를 지원하는 Chrome 브라우저
- E2B 모델의 경우 약 500MB 디스크 공간, E4B 모델의 경우 약 1.5GB (최초 실행 후 캐시됨)
설정 (Setup)
pnpm installpnpm build- 크롬 브라우저에서
chrome://extensions(개발자 모드) 페이지를 열고,.output/chrome-mv3-dev/폴더를 통해 확장 프로그램을 로드합니다.
사용 방법 (Usage)
- 아무 웹페이지로 이동합니다.
- 우측 하단의 gem 아이콘을 클릭하여 채팅창을 엽니다.
- 모델이 로드될 때까지 대기합니다. (진행률은 아이콘과 채팅창에 표시됨)
- 페이지에 대한 질문을 하거나 특정 동작(Action)을 요청합니다.
아키텍처 (Architecture) 오프스크린 문서(Offscreen Document) | 서비스 워커(Service Worker) | 콘텐츠 스크립트(Content Script) (Gemma 4 + 에이전트 루프) <-> (메시지 라우터) <-> (채팅 UI + DOM 도구)
| 오프스크린 문서 | 서비스 워커 |
|---|---|
| WebGPU 추론 | 스크린샷 캡처 |
| 토큰 스트리밍 | 자바스크립트 실행 |
- 오프스크린 문서 (Offscreen document):
@huggingface/transformers및 WebGPU를 통해 모델을 호스팅하고 에이전트 루프(Agent Loop)를 실행합니다. - 서비스 워커 (Service worker): 콘텐츠 스크립트와 오프스크린 문서 간의 메시지를 라우팅하며,
take_screenshot및run_javascript를 처리합니다. - 콘텐츠 스크립트 (Content script): Gem 아이콘 및 Shadow DOM 기반의 채팅 오버레이를 주입합니다. DOM 도구(
read_page_content,click_element,type_text,scroll_page)를 실행합니다.
도구 (Tools)
read_page_content(실행 위치: 콘텐츠 스크립트): 페이지의 텍스트/HTML이나 특정 CSS 선택자의 내용을 읽어옵니다.take_screenshot(실행 위치: 서비스 워커): 화면에 보이는 페이지를 PNG로 캡처합니다.click_element(실행 위치: 콘텐츠 스크립트): CSS 선택자를 통해 특정 요소를 클릭합니다.type_text(실행 위치: 콘텐츠 스크립트): CSS 선택자를 통해 입력란에 텍스트를 입력합니다.scroll_page(실행 위치: 콘텐츠 스크립트): 지정한 픽셀 수만큼 페이지를 위아래로 스크롤합니다.run_javascript(실행 위치: 서비스 워커): 전체 DOM 접근 권한을 가지고 페이지 컨텍스트에서 자바스크립트를 실행합니다.
설정 (Settings) 채팅창 상단의 톱니바퀴 아이콘을 클릭하여 설정을 변경할 수 있습니다:
- Model: Gemma 4 E2B(약 500MB)와 E4B(약 1.5GB) 사이에서 모델을 전환할 수 있습니다. 선택한 모델은 세션 간에 유지됩니다.
- Thinking: Gemma 4의 자체적인 사고(Thinking) 모드를 켜거나 끕니다.
- Max iterations: 요청 당 도구 호출 루프의 최대 횟수를 제한합니다.
- Clear context: 현재 페이지의 대화 기록을 초기화합니다.
- Disable on this site: 특정 호스트네임 단위로 확장 프로그램을 비활성화합니다. (설정 유지)
개발 (Development)
pnpm build# 로깅 및 소스 맵이 포함된 개발 빌드pnpm build:prod# 로깅이 무음 처리되고 경량화된 프로덕션 빌드
기술 스택 (Tech Stack)
- WXT: Vite 기반의 Chrome 확장 프로그램 프레임워크
- @huggingface/transformers: 브라우저 ML 추론 라이브러리
- marked: 채팅창 내 마크다운 렌더링
- Gemma 4 E2B / E4B (
onnx-community/gemma-4-E2B-it-ONNX,onnx-community/gemma-4-E4B-it-ONNX): q4f16 양자화, 128K 컨텍스트 지원
디버깅 (Debugging)
모든 로그는 [Gemma Gem] 접두사가 붙습니다. 개발 빌드에서는 info/debug/warn 로그가 활성화되며, 프로덕션 빌드에서는 오류 로그만 출력됩니다.
- 서비스 워커 로그:
chrome://extensions→ Gemma Gem → "뷰 검사: service worker" - 오프스크린 문서 로그:
chrome://extensions→ Gemma Gem → "뷰 검사: offscreen.html" - 콘텐츠 스크립트 로그: 아무 페이지에서 DevTools 열기 → 콘솔 탭
- 모든 확장 프로그램 페이지:
chrome://inspect#other에서 검사 가능한 모든 확장 프로그램 컨텍스트(서비스 워커, 오프스크린 문서 등)를 확인할 수 있습니다.
오프스크린 문서 로그가 가장 유용합니다. 이 로그에는 모델 로딩, 프롬프트 구성, 토큰 수, 원시 모델 출력 및 도구 실행 내역이 표시됩니다.
참고 사항 (Notes)
agent/ 디렉토리는 종속성이 전혀 없습니다. 이 디렉토리는 인터페이스(ModelBackend, ToolExecutor)를 정의하며, 독립 실행형 라이브러리로 분리하여 사용할 수 있습니다.
원문 보기 (영어)
라즈베리파이 5 환경에서 Gemma 4 등 다수 모델 벤치마크
라즈베리파이 5(16GB RAM)에 공식 M.2 HAT+와 NVMe SSD를 장착하고 PCIe Gen3로 설정하여 스토리지 읽기 속도를 대폭 끌어올렸습니다. 이를 통해 RAM 용량을 초과하는 대형 언어 모델 구동 시 텍스트 생성 속도가 1.5~2배 향상되었으며, Gemma 4 등 다양한 AI 모델의 실제 추론 성능을 테스트한 결과를 공유했습니다.
M3 Pro에서 구동되는 Gemma E2B 실시간 AI
오픈소스 모델인 Gemma를 활용해 오디오와 비디오를 입력받아 음성으로 출력하는 실시간 AI가 Apple M3 Pro 환경에서 로컬 구동되는 것을 확인한 사례입니다. 복잡한 에이전트 코딩은 불가능하지만 다국어 처리가 가능하여 언어 학습용으로 혁신적인 활용성을 보여줍니다. 수년 전 OpenAI가 시연했던 것과 같이 스마트폰 카메라로 사물을 인식하고 모국어로 소통하는 미래가 로컬 환경에서도 가까워지고 있습니다.