d3ro-voice/CLAUDE.md
Yun Chan 2b17bf47b7 Phase 15 구현: Auto Polish + AI 채팅 + 마인드맵 + 공유
- Auto Polish: LLM으로 전사 다듬기 (필러 제거, 문장 교정)
- AI 채팅: 회의 전사 기반 Q&A (LocalLLMService.chatStream 활용, 스트리밍)
- 마인드맵: 빌트인 템플릿 추가 (마크다운 계층 트리)
- 공유: 클립보드 복사 메뉴 추가
- MeetingChatPanel UI (접기/펼치기, 스트리밍 인디케이터)
- TranscriptTab에 AI 다듬기 버튼 추가
- 12개 locale i18n 키 추가
2026-04-08 10:18:42 +09:00

2.8 KiB

D3RO-VOICE — 로컬 AI 음성 어시스턴트

Speakly RE 기반 완전 로컬 음성 어시스턴트. Ollama + Whisper + TTS.

기술 스택

Electron 33+ | React 19 + MUI 7 + Vite | TypeScript 5.7+ strict better-sqlite3 + drizzle-orm | faster-whisper (Python sidecar) | Ollama REST uiohook-napi | @nut-tree-fork/nut-js | electron-store | electron-log

빌드

npm run dev        # Electron + Vite dev
npm run build      # 프로덕션 빌드
npm run test       # vitest
npm run typecheck  # tsc --noEmit

코딩 규칙

  • strict mode, any 금지, console.log 금지 (logger 사용)
  • 서비스: 싱글톤 + EventEmitter
  • IPC: ${feature}:${action}, D3ROError + ErrorCode
  • 메인앱=React+MUI, 팝업=Vanilla JS
  • 테마 SSOT: d3roPalette/d3roShadow만 사용, hex 하드코딩 금지 (theme.ts 제외)
  • i18n: t() 함수, 하드코딩 한국어/영어 금지
  • Co-Authored-By, Claude 관련 커밋 문구 금지

핵심 패턴 (Speakly 차용)

  • RecognitionState(9) + AudioState(4) 이중 상태머신
  • 이중 조건 플러시 (모델 로딩 + 오디오 버퍼링 병렬)
  • 텍스트 삽입: clipboard save→set→Ctrl+V→restore
  • 윈도우: 프리로딩 + 2-phase 리사이즈
  • 녹음 UI: 9개 웨이브 바, cos 분포, 100ms

현재 상태

Phase 1~14.5 전체 완료 + 랜딩 페이지(site/). 차단 이슈: @nut-tree-fork/nut-js 포크 사용

설계 문서 (구현 시 Read 도구로 참조)

  • docs/design/00-master-architecture.md — 시스템 아키텍처, 초기화/종료, 서비스 목록
  • docs/design/01-service-specifications.md — 서비스 인터페이스, 상태머신, 이벤트
  • docs/design/02-ipc-and-types.md — IPC 채널 전체, 타입, 에러코드, preload API
  • docs/design/03-db-and-ui.md — DB 스키마, React 컴포넌트, 팝업 명세, MUI 테마

서비스 목록 (src/main/services/)

Core: LoggerService, ConfigService, VoiceModeService(오케스트레이터) Audio: AudioCaptureService, LocalSTTService, LocalLLMService, TTSPlaybackService Input: HotkeyService, TextInsertService, SoundEffectService, AutoLaunchService Data: HistoryService, DictionaryService, CustomInstructionService, LicenseService Phase10+: MemoService, VoiceCommandService, ScreenContextService, ChainService, CaptionService Phase12+: FileTranscriptionService, MeetingSummaryService, DictationTemplateService Phase13+: VoiceConversationService, RAGService, VoiceActionService Phase14: MeetingModeService Phase14.5: MeetingDocTemplateService + 다중 문서 생성/편집/내보내기

DS 컴포넌트 (src/renderer/components/ds/)

CrtDisplay, InstrumentPanel, Led, PhysicalButton, MetalCard, PhosphorText(13변형), MetalDial, ScreenPanel, ButtonGroup

디자인 토큰 (theme.ts)

d3roPalette(색상) | d3roTypo(13단계) | d3roShadow(10종) | d3roRadius(7종)