Работа над 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 описывает, как сообщить об уязвимости.