dsh-settings-sync
Синхронизация настроек DeepSeek Harness и установленных плагинов через приватный GitHub-репозиторий — по мотивам VS Code Settings Sync.
Плагин кладёт в репозиторий «конфигурационную поверхность» ~/.dsh, а на другой машине восстанавливает её: настройки профиля, MCP-серверы, список плагинов, lock-файл, локальные плагины, навыки и глобальные инструкции.
Что синхронизируется
| Категория | Пути (от DSH_HOME) |
|---|---|
| Настройки и MCP | profiles/<profile>/cordis.patch.yml, settings.yaml |
| Плагины | profiles/<profile>/package.json, pnpm-lock.yaml, pnpm-workspace.yaml |
| Локальные плагины | исходники из link:/file: зависимостей — в <repo>/plugins/<name>/ |
| Навыки | skills/** |
| Инструкции | AGENTS.md |
| Прочее | agents/**, pet.json, skin-center-active.json — если есть |
Никогда не синхронизируются: .credentials.yaml, .env, sessions/, storages/, cache/, attachments/, dsh-runtimes/, node_modules/, .git, .plugin-manager/.
Абсолютные пути дома при выгрузке заменяются на ${DSH_HOME} и ${HOME}, при применении — разворачиваются в пути текущей машины.
Установка
Публичный репозиторий плагина: https://github.com/antonbru/dsh-settings-sync
В DSH (профиль desktop):
plugin_manager install_bundle target=github:antonbru/dsh-settings-sync
Полный вариант: target=https://github.com/antonbru/dsh-settings-sync.git.
Для локальной разработки можно ставить из рабочей папки:
plugin_manager install_bundle target=/Users/antonb_ru/DSH/plugins/dsh-settings-sync
После установки: Settings → Синхронизация.
Репозиторий настроек — отдельный и приватный: в нём лежат ваши токены MCP. Публичный репозиторий плагина токенов не содержит.
На второй машине:
- поставить плагин из публичного репозитория (команда выше);
- Settings → Синхронизация → подключить GitHub → указать URL приватного репозитория настроек;
- «Получить» → «Применить» → перезапустить DSH.
Первая настройка
- Создайте приватный пустой репозиторий на GitHub (или нажмите «Создать» на странице плагина — он создаст приватный).
- Подключите GitHub:
- если установлен и авторизован
gh(gh auth login), токен подхватится автоматически; - иначе вставьте PAT со scope
repoи нажмите «Подключить / проверить токен».
- если установлен и авторизован
- Укажите URL репозитория, ветку, отметьте категории и сохраните.
- Нажмите «Захватить и отправить» — появится первый коммит.
- Проверьте «Проверить секреты»: плагин не вырезает токены (так выбрано при настройке), но показывает, где они лежат. Репозиторий обязан остаться приватным — push в публичный блокируется проверкой GitHub API.
Токен GitHub хранится только локально в ~/.dsh/settings-sync/settings.json (0600), не попадает ни в patch, ни в репозиторий, ни в ответы API.
Ежедневное использование
- «Синхронизировать» — зафиксировать локальное, забрать удалённое, при изменениях применить, отправить.
- «Захватить и отправить» — только выгрузка.
- «Получить» — только
git pull. - «Применить и установить плагины» — записать снапшот в
~/.dsh, восстановить локальные плагины, выполнитьpnpm install. Перед записью делается бэкап; после — нужен перезапуск DSH. - «Откатить последний бэкап» и «История» с восстановлением из коммита — на случай неудачного применения.
- «Проверить секреты» — отчёт по паттернам (
Bearer,ghp_,sk-,token/password = …).
Автосинхронизация
- «При старте DSH забирать и применять удалённое» — если в репозитории появились коммиты.
- «Захватывать изменения каждые N минут» + «сразу отправлять» — фоновая выгрузка при изменениях. Держите авто-отправку включённой на одной «главной» машине.
Расхождение и откат
Если локальная копия репозитория и origin разошлись, pull остановится с кодом diverged. На странице появится блок «Расхождение»:
- Взять удалённое — сбросить локальную копию репозитория на
origin/<branch>(живые файлы не трогаются до «Применить»); - Отправить локальное —
git push --force-with-lease.
Перед применением всегда создаётся бэкап в ~/.dsh/settings-sync/backups/<время>/.
Агент и команда
- Инструмент
settings_syncс действиямиstatus,push,pull,apply,sync,history,restore,scan. - Команда
/sync status|push|pull|apply|sync|history|scan.
Ограничения
- Переносимость рассчитана на macOS/POSIX; на Windows симлинки заменяются копированием, путь к исходникам плагинов должен быть доступен для записи.
pnpm installвыполняется тем же Node/pnpm, что лежит вDSH_HOME/dsh-runtimes; если их нет — используется системныйnode/pnpm.- Слияние конфликтов по строкам не делается: выбор стороны целиком.
- Сессии и история чатов не синхронизируются.
Лицензия
MIT. Основано на dsh-config-sync (MIT, © liangfengqi); см. LICENSE и NOTICE.
No comments yet. Be the first to write one.