Draggy の開発
ビルドと設計
ソースからの実行、コードの構成、そして二つの境界。
ソースから動かす
npm install
npm run electron:dev
Vite と Electron をホットリロード付きで同時に、ポートは 5173。残った Vite プロセスがそのポートを握っていると次の起動が失敗します。先に終了させてください。
npm run check
型検査と lint と約 1,900 のテストが数秒で終わります。CI も同じコマンドです。
npm run electron:build はインストーラーを
dist-electron/ に書き出します。
構成
| フォルダー | あるもの |
|---|---|
electron/ | メインプロセス。ウィンドウ、IPC、SQLite、ファイルの番、git、ブラウザー、MCP サーバー、アップデート |
src/agent/ | ストリーミングのツール呼び出しループ、権限、圧縮 |
src/chat/ | メッセージ一覧、差分、承認、コンテキストの輪 |
src/tools/ | ツールの定義と、それらが収まるレジストリ |
src/voice/ | 録音、検出、話者交代、音声合成 |
2 つの境界
electron/preload.cjs がセキュリティの境界です。レンダラーに Node
はなく、ファイルシステム、ネットワーク、データベースにはそこで公開されたものを通じてしか届きません。そこに関数を足すのは意図した行為です。
セッションの分離がもうひとつです。Draggy 自身のウィンドウは厳しい CSP の下で動き、外部のページは私たちの方針の及ばない別パーティションで動きます。ひとつにすれば、他人のサイトに私たちの方針を当てはめ、瓦礫だけが描かれます。
決まりごと
- コメントは「なぜ」を説明し、「なに」は説明しない。最大 2 行
- 12 の言語は揃ったまま。テストが見張っています
- 子プロセスはすべて、ウィンドウを出さない起動ヘルパー経由
- コミットメッセージは 1 行
残りは CONTRIBUTING.md に、脆弱性の報告については SECURITY.md にあります。