stormydayy/halo-overlay

Lightweight opensource AI overlay for live conversations. Hears, sees, suggests.

Halo는 화면에 오버레이로 떠 있는 작은 AI 어시스턴트입니다. 주변 대화를 듣고, 디스플레이의 내용을 감시하며, 다음에 말하거나 행동할 것을 실시간으로 짧게 제안합니다.

기능

  • 듣기: 두 개의 오디오 채널을 듣습니다. 상대방(시스템 오디오, "Them"으로 표시)과 당신(마이크, "You"로 표시)입니다. "Both" 모드에서는 상대방이 말하는 동안 마이크 라인이 억제되어, 당신의 이름이 상대방의 말에 연결되지 않습니다.
  • 화면 감시: 화면을 지속적으로 감시합니다. 몇 밀리초마다 작은 회색조 스냅샷을 찍어 이전 것과 비교하고, 화면이 실제로 변경된 후 안정된 경우에만 프레임을 유지합니다. 이렇게 하면 중복이나 애니메이션 중간 프레임 저장을 피할 수 있습니다.
  • 제안: 상대방의 음성에서 질문을 감지하면 짧은 답변을 제안합니다(자동 답변은 기본 꺼짐, 휴리스틱이라 오작동할 수 있음).
  • Rewind(Ctrl+Shift+Enter): 정신이 없었다면, 지난 30초에서 5분의 대화 기록과 몇 개의 화면 키프레임을 가져와 세 가지를 답변합니다: 무슨 일이 있었는지(2~3개 불릿), 상대방이 지금 당신에게 원하는 것, 그리고 바로 사용할 수 있는 한마디. Rewind 패널에서 프레임을 고정하여 다음 질문에 포함할 수도 있습니다.
  • 세션 기록: 모든 세션이 저장됩니다(대화 기록 + 제안). Recap 버튼으로 AI가 작업 항목이 포함된 요약을 작성하고, 모든 것을 Markdown으로 내보낼 수 있습니다.
  • 프로필: 면접, 회의, 영업, 협상, 프레젠테이션, 학습——각각 고유한 프롬프트 스타일이 있습니다.
  • 사용자 지정 가능: 단축키, 창 불투명도, 글꼴 크기, 클릭 통과 모드를 조정할 수 있습니다.
  • 선택적 화면 녹화: .webm으로 디스크에 직접 녹화(기본 꺼짐).

구축 방식

  • sohzm/cheating-daddy의 아이디어를 처음부터 다시 작성했지만, 번들러 없음, 벤더 라이브러리 없음, 빌드 단계 없음——소스가 그대로 실행됩니다.
  • 하나의 OpenAI 호환 클라이언트가 Gemini, Groq, OpenAI, OpenRouter, Ollama, LM Studio 또는 자체 서버에서 작동합니다. 공급자별 별도 코드 경로가 없습니다.
  • 음성 인식은 VAD(음성 활동 감지)와 Whisper 호환 API(Groq, OpenAI 또는 로컬 whisper.cpp / faster-whisper 서버)를 사용합니다.
  • 약 3,100줄의 코드, 0개의 런타임 의존성, 27개의 단위 테스트(npm test).
  • 보안: contextIsolation, sandbox, 엄격한 CSP, 모든 IPC 호출 검증, API 키는 OS로 암호화(DPAPI / Keychain / libsecret)되며 UI로 전송되지 않습니다.

프라이버시

  • API 키는 OS의 보안 저장소로 암호화되며 UI에 표시되지 않습니다.
  • 데이터는 설정한 공급자에게만 전송됩니다: 짧은 오디오 클립은 음성 인식 서비스로, 텍스트(활성화된 경우 스크린샷 포함)는 모델로 전송됩니다. 어떤 것도 외부로 전송되지 않습니다.
  • 세션과 녹음은 앱의 프로필 폴더에 로컬 저장됩니다. "모든 세션 및 녹음 삭제" 또는 Ctrl+Shift+E로 지울 수 있습니다.
  • 화면 녹화는 기본 꺼짐입니다.

설정

Node.js 20+ 및 Python 3.11+가 필요합니다.

git clone https://github.com/stormydayy/halo-overlay
cd halo-overlay
npm install
npm start

그런 다음 설정에서: 모델 공급자를 선택하고 키를 붙여넣고, 연결을 테스트하고, 음성 인식 서비스를 선택하고, 프로필을 선택하고, 컨텍스트(이력서, 메모 등)를 추가한 후 세션을 시작합니다.

완전 로컬 옵션: LLM에는 Ollama와 비전 지원 모델(예: llama3.2-vision)을 사용하고, 음성에는 /v1/audio/transcriptions를 노출하는 서버(whisper.cpp, faster-whisper-server)를 사용합니다. 로컬 주소(localhost, 192.168.*, 10.*)는 API 키가 필요 없습니다.

플랫폼 참고 사항

  • Windows: getDisplayMedia를 통한 루프백으로 시스템 오디오; 마이크 작동.
  • macOS: SystemAudioDump 헬퍼를 통한 시스템 오디오(Apple Silicon 전용 빌드——Intel Mac은 소스에서 직접 빌드해야 함); 마이크 작동. 시스템 설정에서 화면 기록 및 마이크 접근 권한을 부여하세요.
  • Linux: 환경이 지원하면 루프백으로 시스템 오디오; 그렇지 않으면 마이크만.

시스템 오디오를 사용할 수 없으면 Halo가 알리고 마이크 + 화면으로 계속합니다.

알려진 제한 사항

  • 음성 인식은 일시 중지로 분할된 청크로 작동합니다(일반적으로 1~3초 지연), 연속 스트림이 아닙니다.
  • 질문 감지기는 휴리스틱이므로 오탐이 발생할 수 있습니다——그래서 자동 답변은 기본 꺼짐입니다.
  • SystemAudioDump는 Apple Silicon 전용으로 빌드되었습니다.

라이선스

GPL-3.0. 아이디어와 macOS 오디오 헬퍼는 sohzm/cheating-daddy와 Mohammed-Yasin-Mulla/Sound에서 왔습니다.

면책 조항(README에서)

Halo는 무대 프롬프터와 같은 대화 보조 도구입니다. 규칙은 다양합니다: 많은 면접, 시험, 고용주, 플랫폼이 외부 도움 또는 녹음을 금지하며, 대화 녹음에 관한 법률은 국가마다 다릅니다. 사용하는 곳의 규칙을 확인하고, 법이나 기본 윤리가 요구한다면 관련된 다른 사람에게 알리세요.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트