VSCodeSyncFiles
Это не облачное хранилище — это синхронизация через ваше облако.
Данные хранятся в вашем аккаунте: OneDrive, Google Drive, Dropbox или Яндекс Диск.
Никаких посторонних серверов — только ваш провайдер.
Вы выбираете конкретные файлы, объединяете их в логические воркспейсы.
Расширение следит за расхождениями между машинами и показывает их;
отправка и скачивание выполняются по вашей команде — одним кликом из панели.
Остальные файлы в вашем облаке оно не трогает и не читает.
Как это работает:
Расширение обращается к API облачного провайдера командами.
Вместо ручного закидывания файлов в облако — Push/Pull одним действием
прямо из редактора, с проверкой конфликтов и историей версий.
Работает из коробки:
Для Яндекс Диска и Dropbox уже прописан токен по умолчанию — ничего настраивать не нужно.
Если нужен собственный лимит на API — как подключить свой ключ.
Возможности
- Структура папок не обязана совпадать — на работе проект лежит в
promed/, дома тот же самый в php/, и это не повод отказываться от синхронизации. Привяжите папку один раз — расширение запомнит, что здесь она называется иначе, и правило будет действовать на все будущие файлы: новое из облака попадёт в вашу папку, добавленное из неё уедет под облачное имя. Так же связывается и отдельный файл. Структуру в облаке можно перестроить в любой момент — переименовать папку, вытащить её из вложенности, перетащить мышью или переписать все пути разом текстом: дочерние пути перестроятся сами, связи с машинами не порвутся, а новая машина разложит файлы ровно по ней. Ни одна из этих операций не двигает файлы у вас на диске: переезжают только пути в облаке, а разложить локальные файлы по новой структуре можно одной кнопкой — или не раскладывать вовсе. Как настроить
- Своё облако — OneDrive · Google Drive · Dropbox · Яндекс Диск
- Панель «Расхождения» — что разошлось с облаком, куда и почему; отправка, скачивание и разрешение конфликтов только по вашей команде
- Выборочная синхронизация — добавляйте только нужные файлы; машина может нести не весь воркспейс, а выбранные папки
- Именованные воркспейсы — группируйте файлы, делитесь между машинами
- Разрешение конфликтов — оставить своё / взять чужое / трёхстороннее сравнение + AI-слияние (Copilot или локальный LLM: Ollama / LM Studio)
- Снимки и история — создавайте именованные снимки, восстанавливайте любую версию файла
- Сквозное шифрование — AES-256-GCM на уровне воркспейса, ключи хранятся у вас
- Watch-режим — периодическая проверка расхождений с адаптивными интервалами
- Работа офлайн — изменения копятся отложенными намерениями; при возврате сети расширение предлагает выполнить их, а не выполняет само
- Быстрая передача — отправьте файл на другую машину без воркспейса, одним действием
- P2P-сессия (experimental) — прямая передача файлов между машинами через WebRTC, минуя облако (когда обе онлайн)
- Passkey / WebAuthn unlock — разлок ключа шифрования через Windows Hello / Touch ID / hardware key
- Templates marketplace — установка готовых пресетов воркспейса из публичного реестра шаблонов
- OAuth Device Code — sign-in без браузера (для headless / SSH / restricted сред)
Поддерживаемые провайдеры
| Провайдер |
Способ авторизации |
| Microsoft OneDrive |
OAuth 2.0 (браузер) или код устройства |
| Google Drive |
OAuth 2.0 (браузер) |
| Dropbox |
OAuth 2.0 (браузер) |
| Яндекс Диск |
OAuth 2.0 + PKCE (браузер); ручной ввод токена — аварийный путь |
Все файлы хранятся в папке VSCodeSyncFiles/ в корне вашего облака — полностью видимы и переносимы.
Начало работы
- Установите расширение
- Откройте панель VSCodeSync на боковой панели активности
- Запустите мастер настройки (
VSCodeSync: Запустить мастер настройки) и выберите провайдер
- Войдите в свой облачный аккаунт
- Создайте воркспейс и добавьте в него файлы
- На другой машине — установите расширение, войдите в тот же аккаунт, затем Подключитесь к облачному воркспейсу
Ключевые понятия
Воркспейсы
Воркспейс — это именованная группа файлов, которые синхронизируются вместе. Каждый воркспейс получает собственную папку в облаке. Можно создавать несколько воркспейсов на проект, помечать их тегами, привязывать к Git-ветке или архивировать.
Отслеживаемые файлы
Любой файл в редакторе можно добавить в воркспейс. Расширение отслеживает его по пути относительно корня проекта с поддержкой маппинга путей для каждой машины — удобно, когда проект лежит в разных папках на разных компьютерах.
Манифест и версионирование
В облаке хранится канонический манифест (.vscodesync-workspace.json) со счётчиками Лампорта и хэшами файлов. Конфликты обнаруживаются надёжно, даже если две машины синхронизировались в одну секунду.
Документация
Основные команды
| Команда |
Описание |
VSCodeSync: Запустить мастер настройки |
Первоначальная настройка |
VSCodeSync: Создать воркспейс |
Создать новый воркспейс |
VSCodeSync: Подключиться к облачному воркспейсу |
Присоединиться к существующему воркспейсу с другой машины |
VSCodeSync: Добавить текущий файл |
Добавить активный файл в воркспейс |
VSCodeSync: Отправить всё |
Загрузить все изменённые файлы в облако |
VSCodeSync: Получить всё |
Скачать все удалённые изменения |
VSCodeSync: Синхронизировать воркспейс |
Двусторонняя синхронизация |
VSCodeSync: Предпросмотр синхронизации |
Холостой запуск — посмотреть, что изменится |
VSCodeSync: Разрешить конфликты |
Открыть интерфейс разрешения конфликтов |
VSCodeSync: Создать снимок |
Сохранить именованный снимок воркспейса |
VSCodeSync: Восстановить снимок |
Откатиться к предыдущему снимку |
VSCodeSync: Показать историю файла |
Просмотр истории версий файла |
VSCodeSync: Отправить файл (разовая передача) |
Отправить файл без воркспейса |
VSCodeSync: Экспорт / Импорт ключа шифрования |
Управление ключами шифрования |
VSCodeSync: Мигрировать на другой провайдер |
Перенести все данные в другое облако |
VSCodeSync: Проверка состояния |
Диагностика синхронизации |
VSCodeSync: Начать P2P-сессию / Завершить P2P-сессию |
Прямой канал между машинами (experimental) |
VSCodeSync: Войти через OAuth Device Code |
OAuth без браузера — для headless / SSH окружений |
VSCodeSync: Зарегистрировать passkey / Разлок ключа через passkey / Удалить passkey |
WebAuthn разлок ключа шифрования |
VSCodeSync: Установить шаблон workspace / … из реестра |
Установка пресетов воркспейса |
VSCodeSync: Экспортировать зашифрованный бандл |
.vscsbundle для офлайн-переноса воркспейса |
VSCodeSync: Экспортировать конфликты в SARIF |
Выгрузка heatmap конфликтов в SARIF v2.1.0 |
VSCodeSync: Проверить статус миграции на BLAKE3 / Дозаполнить BLAKE3 |
Миграция канонического хэша SHA-256 → BLAKE3 |
VSCodeSync: Прогреть кэш активного воркспейса |
Прогрев workspace.fs.prefetch для быстрого открытия файлов |
Полный список команд доступен в палитре команд (Ctrl+Shift+P) по запросу VSCodeSync:.
Настройки
Все параметры находятся в пространстве имён vscodesync.*:
| Параметр |
По умолчанию |
Описание |
vscodesync.notificationLevel |
normal |
silent · normal · verbose |
vscodesync.showFileDecorations |
true |
Значки статуса синхронизации в Проводнике |
vscodesync.maxFileSizeMB |
5 |
Пропускать файлы крупнее этого размера |
vscodesync.encryption |
false |
Шифровать блобы воркспейса (AES-256-GCM) |
vscodesync.aiMerge.enabled |
false |
Использовать GitHub Copilot для разрешения конфликтов |
vscodesync.tasks.allowFileMutations |
false |
Разрешить задачам vscodesync отправлять и скачивать файлы (в том числе автозапускаемым через runOn: folderOpen) |
vscodesync.softLock.enabled |
false |
Сообщать другим машинам «сейчас редактируется» для открытого файла (soft-lock в манифесте) |
vscodesync.watchMode |
false |
Периодический пересчёт статусов расхождений в фоне |
vscodesync.watchIntervalSeconds |
30 |
Минимальный интервал опроса в watch-режиме |
vscodesync.compressUploads |
false |
Gzip-сжатие перед загрузкой (отключить при шифровании) |
vscodesync.localBackupEnabled |
true |
Хранить локальные резервные копии перед перезаписью |
vscodesync.snapshotRetentionDays |
180 |
Автоудаление старых снимков |
vscodesync.quickTransferTtlDays |
7 |
Срок хранения файлов быстрой передачи в облаке |
vscodesync.gitBranchAutoSync |
true |
Переключать активный воркспейс при смене Git-ветки |
vscodesync.p2p.experimental |
false |
Включить P2P-сессии (WebRTC прямой канал) |
vscodesync.p2p.acceptIncomingFiles |
false |
Принимать файлы от пиров: входящие ждут в .vscode/vscodesync-incoming до вашего «Применить» |
vscodesync.aiMerge.endpointModel |
llama3.2 |
Endpoint AI-merge: vscode-lm · ollama · lm-studio · custom URL |
vscodesync.ai.sessionSummary.enabled |
false |
Разрешить отправку метаданных для AI-сводки сессии |
vscodesync.ai.suggestWorkspaceTags.enabled |
false |
Разрешить AI-подсказку тегов воркспейса |
vscodesync.ai.pathMapper.enabled |
false |
Разрешить AI-сопоставление путей при миграции |
vscodesync.canonicalHashAlgo |
sha256 |
Канонический хэш: sha256 · blake3 · dual |
vscodesync.passkey.peerRegistrySync |
off |
Синхронизация passkey между машинами: off · p2p · cloud_mirror |
vscodesync.smartConflictPrediction.broadcastCurrentEditing |
full |
Live-presence в _machines.json: full · anonymised · off |
vscodesync.templates.registryUrl |
— |
URL реестра шаблонов воркспейса (по умолчанию — borodatych/vscodesync-templates) |
vscodesync.backup.secondaryProvider |
— |
Зеркалировать manifest + snapshots в дополнительный провайдер |
vscodesync.backup.intervalDays |
7 |
Интервал зеркалирования cross-cloud backup |
Интеграция с задачами VS Code
VSCodeSync регистрирует тип задачи для tasks.json:
{
"type": "vscodesync",
"task": "push-all"
}
Доступные задачи: push, pull, push-all, pull-all, create-snapshot.
Требования
- VS Code 1.80.0 или новее
- Аккаунт у одного из поддерживаемых провайдеров
- Доступ к API провайдера
Конфиденциальность и безопасность
- Ваши файлы хранятся в вашем собственном облачном аккаунте — у VSCodeSync нет серверной части.
- OAuth-токены хранятся в зашифрованном Secret Storage VS Code.
- При включённом
vscodesync.encryption содержимое файлов шифруется на клиенте до загрузки. Ключ шифрования никогда не передаётся.
- При включённом WebAuthn ключ шифрования дополнительно оборачивается через PRF-производный KEK от passkey — даже компрометация Secret Storage не даёт доступа без биометрии или hardware key.
- AI-команды (
sessionSummary / suggestWorkspaceTags / pathMapper) отключены по умолчанию и требуют opt-in для каждой. Передаются только пути файлов, не содержимое.
- При выборе локального LLM (
ollama / lm-studio) данные AI-merge не покидают машину.
- Телеметрия отключена по умолчанию и управляется командой
VSCodeSync: Переключить телеметрию.
⚠️ Снапшоты, созданные до версии 1.0.0, не шифровались.
До 1.0.0 при включённом vscodesync.encryption шифровались только файлы, а снапшот
сохранял в облако полную читаемую копию воркспейса — в том числе при автоматическом
создании (перед merge, перед ротацией ключа, по расписанию). В 1.0.0 это исправлено:
без доступного ключа снапшот теперь не создаётся вовсе.
Обновление не исправляет уже загруженные снапшоты. Если в воркспейсе были секреты
(.env, ключи, токены) — удалите старые снапшоты из облака и смените сами секреты.
Поддержать проект
Если расширение оказалось полезным — буду рад благодарности 🙏
Лицензия
MIT