Draggy 개발하기

빌드와 구조

소스에서 실행하기, 코드 구성, 그리고 두 경계.

소스에서 실행하기

npm install
npm run electron:dev

Vite와 Electron을 핫 리로드와 함께 같이 띄웁니다. 포트는 5173. 남아 있는 Vite 프로세스가 그 포트를 쥐고 있으면 다음 실행이 실패하니 먼저 종료하세요.

npm run check

타입 검사, 린트, 약 1,900개의 테스트가 몇 초 만에 끝납니다. CI도 같은 명령을 씁니다. npm run electron:build는 설치 프로그램을 dist-electron/에 씁니다.

구성

폴더담긴 것
electron/메인 프로세스: 창, IPC, SQLite, 파일 보호, git, 브라우저, MCP 서버, 업데이트
src/agent/스트리밍 도구 호출 루프, 권한, 압축
src/chat/메시지 목록, diff, 승인, 컨텍스트 링
src/tools/도구 정의와 그것들이 사는 레지스트리
src/voice/녹음, 감지, 발화 교대, 음성 합성

두 경계

electron/preload.cjs가 보안 경계입니다. 렌더러에는 Node 접근이 없고, 파일 시스템과 네트워크와 데이터베이스에는 거기 노출된 것을 통해서만 닿습니다. 거기에 함수를 더하는 일은 의도적인 행위입니다.

세션 분리가 다른 하나입니다. Draggy 자신의 창은 엄격한 CSP 아래에서 돌고, 외부 페이지는 우리 정책이 없는 별도 파티션에서 돕니다. 둘을 합치면 남의 사이트에 우리 정책을 적용하게 되고, 남는 것은 잔해뿐입니다.

관례

  • 주석은 '왜'를 설명하고 '무엇'은 설명하지 않으며, 최대 두 줄입니다
  • 열두 언어는 나란히 유지되고, 테스트가 이를 지킵니다
  • 모든 자식 프로세스는 창을 띄우지 않는 실행 헬퍼를 거칩니다
  • 커밋 메시지는 한 줄입니다

나머지는 CONTRIBUTING.md에, 취약점 신고는 SECURITY.md에 있습니다.