Работа над Draggy
Сборка и архитектура
Запуск из исходников, устройство кода и две границы.
Запуск из исходников
npm install
npm run electron:dev
Vite и Electron вместе с горячей перезагрузкой, на порту 5173. Оставшийся процесс Vite держит этот порт, и следующий запуск падает: сначала завершите его.
npm run check
Проверка типов, линтер и около 1900 тестов за несколько секунд. 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 описывает, как сообщить об уязвимости.