Development & Runtime

dsh-settings-sync

antonbru/dsh-settings-sync · ★ 0

antonbru

DeepSeek Harness: sync settings, MCP and installed plugins through a private GitHub repository (like VS Code Settings Sync)

License
MIT
Added
2026-10-30
Maintenance
active
Install kind
github
Manifest details
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-10-30T09:38:38.573Z
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add 'github:antonbru/dsh-settings-sync#5a8b6359f6447fffd37d0960309c71e45ea7fc3f'

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. Что синхронизируется
  2. Установка
  3. Первая настройка
  4. Ежедневное использование
  5. Автосинхронизация
  6. Расхождение и откат
  7. Агент и команда
  8. Ограничения
  9. Лицензия

Синхронизация настроек 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. Публичный репозиторий плагина токенов не содержит.

На второй машине:

  1. поставить плагин из публичного репозитория (команда выше);
  2. Settings → Синхронизация → подключить GitHub → указать URL приватного репозитория настроек;
  3. «Получить» → «Применить» → перезапустить DSH.

Первая настройка

  1. Создайте приватный пустой репозиторий на GitHub (или нажмите «Создать» на странице плагина — он создаст приватный).
  2. Подключите GitHub:
    • если установлен и авторизован gh (gh auth login), токен подхватится автоматически;
    • иначе вставьте PAT со scope repo и нажмите «Подключить / проверить токен».
  3. Укажите URL репозитория, ветку, отметьте категории и сохраните.
  4. Нажмите «Захватить и отправить» — появится первый коммит.
  5. Проверьте «Проверить секреты»: плагин не вырезает токены (так выбрано при настройке), но показывает, где они лежат. Репозиторий обязан остаться приватным — 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.