Сборка и архитектура
Запуск из исходников, структура кода и две границы.
Запуск из исходного кода#
cd win
npm install
npm run electron:devVite и Electron работают вместе с горячей перезагрузкой на порту 5173. Если устаревший процесс Vite занимает порт, следующий запуск завершится ошибкой, поэтому сначала остановите его.
npm run checkПроверка типов, линтинг и тесты. CI запускает ту же команду. npm run electron:build записывает установщик в dist-electron/.
Структура#
| Папка | Содержит |
|---|---|
core/ |
Общее ядро на Rust: состояние сессий, политику URL, маршрутизацию MCP, провайдеры и парсер документов |
win/ |
Приложение Windows на Electron (electron/ для главного процесса и src/ для фронтенда на React) |
macos/ |
Нативное приложение для macOS на SwiftUI |
linux/ |
Нативное приложение для Linux на GTK 4 и libadwaita |
shared/ |
Общие фикстуры, списки хостов и иконки приложения |
Две границы#
electron/preload.cjs отвечает за безопасность. У рендерера нет доступа к Node, и он обращается к файловой системе, сети и базе данных только через то, что там открыто. Добавить функцию — осознанное решение.
Вторая граница — разделение сессий. Окно самого Draggy работает под строгой CSP, а каждая внешняя страница работает в отдельном разделе без нашей политики. Если их объединить, наша политика применится к чужим сайтам и сломает их.
Журналы и диагностика#
Draggy хранит два ротируемых журнала в папке данных приложения (logs/):
app.log: события жизненного цикла, управление моделями и ошибки. Запросы и ответы сводятся к хешам и длинам, а секреты удаляются.debug.log: более подробная трассировка. Потоковый вывод записывается по длине, а не по тексту.
Журналы ротируются при 5 МиБ и хранят три архива. Чтобы их открыть, выберите Settings → Diagnostics → Open log folder, или задайте LOG_LEVEL=DEBUG либо DEBUG_LOG_LEVEL=DEBUG для самых подробных записей. Для отчёта об ошибке используйте Settings → Diagnostics → Export diagnostics.
Движок вывода#
Draggy запускает локальные модели встроенным движком:
- GGUF (llama.cpp): запускает файлы моделей
.ggufв скрытом дочернем процессеllama-serverна порту11435. На macOS используется Metal. В Windows сначала пробуется CUDA для карт NVIDIA, затем Vulkan, затем CPU. В Linux порядок тот же. Карты AMD используют Vulkan, если вы не включите сборку ROCm в Settings → Models.
Остальное описано в CONTRIBUTING.md, а сообщить об уязвимости можно по инструкции в SECURITY.md.