피드로 돌아가기
Dev.toAI/ML
원문 읽기
macOS Accessibility API 기반 Local LLM 인라인 텍스트 완성을 구현한 GhostType
I built GhostType: inline AI text completion for every app on macOS
AI 요약
Context
기존 Cloud LLM 기반 텍스트 생성 도구의 복사-붙여넣기 과정으로 인한 낮은 생산성 발생. 특히 데이터 프라이버시 침해 우려와 네트워크 Latency로 인한 실시간 입력 경험 저하가 주요 병목 지점으로 작용함.
Technical Solution
- NSEvent.addGlobalMonitorForEvents를 통한 시스템 전역 키스트로크 감시 및 입력 이벤트 캡처
- Accessibility API(AXUIElement)를 활용하여 포커스된 텍스트 필드의 주변 컨텍스트 추출 및 완성 문구 주입
- NSWindow Overlay 설계를 통해 Caret 위치에 투명 Ghost Text를 렌더링하는 UI 레이어 분리
- 127.0.0.1 기반 OpenAI-compatible Client 구조를 채택하여 LM Studio, Ollama 등 다양한 Local LLM 서버와 연동
- AX API 미지원 앱(Slack, Discord 등) 대응을 위해 내부 Keystroke Buffer 기반의 수동 트리거(Option + ) 메커니즘 구현
- Apple Silicon 최적화를 위해 1.5GB~2GB 규모의 소형 모델(Qwen2.5-Coder-3B 등)을 활용한 저지연 추론 환경 구축
실천 포인트
- OS 수준의 Accessibility API를 통한 외부 애플리케이션 텍스트 제어 가능성 검토 - Low Latency가 필수적인 UX 설계 시 Local Inference 모델(3B 이하) 도입 고려 - 시스템 전역 이벤트 모니터링 시 Input Monitoring 및 Accessibility 권한 획득 프로세스 설계 필요