xiajiajun516/dsh-config-manager

xiajiajun516/dsh-config-manager

一键备份、导出、导入与迁移整套 DSH 配置:设置、插件、MCP、技能与工作区。密钥默认不导出;若选择包含,则以 AES-256-GCM 加密而非明文写出。导入先预览、自动备份并可回滚,profile 可保存多套配置,远程同步经私有 Git 仓库推送可移植配置且不含密钥。

도구 및 기능backupconfig-managerconfiguration

🎒 DSH Config Manager

DeepSeek Harness Backup, Restore & Migration Plugin.

Backup, restore, export, import, migrate and sync your complete DeepSeek Harness (DSH) configuration — settings, model providers, plugins, MCP servers, skills, agent presets and workspaces — and restore your whole environment on a new machine with one click.

  • 🔄 Backup & Restore DeepSeek Harness configuration
  • 📦 Export / Import complete DSH configuration
  • 🚚 Migrate DSH to another machine
  • ⏰ Scheduled full backups — automatic, on your own cadence (6h / 12h / 24h / 7d / custom weekly), secrets never included
  • 🔌 Backup installed plugins and plugin configuration
  • 🧩 Backup MCP servers and Skills
  • 🔐 Encrypted backups with optional credentials
  • ☁️ Git / WebDAV configuration sync
  • 🛒 Configuration market — browse & one-click install shared configs
  • 🧳 Import from other AI agents — Claude Code, Cursor, Codex, Hermes, Antigravity … config and chat history
  • ↩️ Automatic snapshot and rollback before restore

English · 简体中文

What is this? 🤔

DSH is your AI assistant workbench — it holds your settings: model configs, plugins, skills, workspaces…

DSH Config Manager is its "moving service":

┌──────────────┐   ① one-click    ┌─────────────────┐   ② one-click    ┌──────────────┐
│  Machine A    │ ──── export ───► │ dsh-config.zip   │ ──── import ───► │  Machine B    │
│  my config    │                  │   (one file)     │                  │  all restored │
└──────────────┘                  └─────────────────┘                  └──────────────┘
⚠️ Security first: no secrets (API Key / Token / Password) are exported by default. See Security.

🎯 Use Cases

Backup DeepSeek Harness configuration

Create a portable backup of your DSH settings, model providers, plugins, MCP servers, skills, agent presets and workspace — one ZIP file, no secret values included by default. (DSH's own profiles — $DSH_HOME/profiles/, i.e. which plugin stack to boot — are machine-local and are not part of the backup; the Environment → Profiles view manages them instead — list / create / rename / delete, plus launching or stopping an independent instance for one.)

Restore DeepSeek Harness on another machine

Export your current DSH environment as a single ZIP and import it on a new Windows, macOS or Linux machine. One click brings back settings, plugins, MCP servers, skills and global instructions (AGENTS.md).

Migrate DSH configuration to a new computer

Move your complete DeepSeek Harness setup without manually reinstalling plugins, MCP servers and skills. Dead absolute paths are detected and remapped automatically (batch prefix mapping supported).

Sync DSH configuration across machines

Keep portable configuration synchronized between machines through a private Git repository, WebDAV, an S3-compatible object store (AWS S3 / Alibaba OSS / Tencent COS / MinIO / Qiniu Kodo) or GitHub Gist — secrets do not sync by default (the payload is run through the SecretScanner); check "Export secrets" with an encryption password and ~/.dsh/.credentials.yaml travels as scrypt + AES-256-GCM ciphertext inside the encrypted snapshot, so another machine can restore the credentials while the remote (Git host / WebDAV / object store / Gist) only ever sees ciphertext.

Schedule automatic full backups

Turn on scheduled backups in the Home → Scheduled backup card (6h / 12h / 24h / 7d — or a custom weekly weekday & time) and DSH quietly keeps a fresh full backup of your configuration in the background — secrets are never included, so it stays safe on disk without a password. How many are kept is decided by the retention policy in the same card (last N + one per month + one per year), and consecutive failures are highlighted in red.

Discover & install configurations from the marketplace

Browse the built-in official market for ready-made configurations (model providers, plugins, MCP servers, skills, agent presets…), preview what would be imported (dry-run), and install with one click — supply-chain warnings are always shown and every section must be explicitly approved before anything is written.

Import from another AI agent (Claude Code, Cursor, Codex, …)

Your setup — and your chat history — already live in another AI coding agent on this machine? Pick the source and DSH Config Manager translates it into a standard bundle (MCP servers, skills, global instructions, conversations and the workspaces they belong to) and hands it to the same review-first import flow: preview → per-item conflict decisions → automatic snapshot → apply → rollback. 30 sources are recognized and 29 of them can migrate chat history too. Secret values are never read — only the key names, so the import plan can ask you to re-enter them.

Go back to a moment in a conversation (rewind)

Mid-conversation realisation — "that message sent us down the wrong path, I want to start again from there"? Every user message carries ↺ rewind to here: it opens a new branch conversation from that moment and leaves the original intact (archived, never rewritten); if you want, the workspace files are reverted along with it — you see the per-file diff and line counts before anything happens. Rollback points are captured automatically per turn, so there is no manual snapshot to take.

🆚 How it differs from the other DSH backup / sync plugins

Several DSH plugins live in this space and they solve different problems — pick the one that matches your situation; they can also coexist.

Plugin · Strongest at · Where DSH Config Manager goes further xiaoyuyu6420/dsh-backup · One-command ~/.dsh snapshots from the CLI, plus session doctor / upgrade snapshots / rescue console · Review-before-write GUI flow (dry-run preview, per-item conflict decisions, automatic rollback), cross-machine path remapping, encrypted credential payload, configuration marketplace muyifc/dsh-config-sync · Export / import DSH configuration to a portable, password-encrypted file, callable from tool calls · 13–14 sections (plugins / MCP / skills / workspaces / session logs …), scheduled backups, four sync channels (Git / WebDAV / object storage / Gist), session migration with path rebase dickpy/dsh-cloud-sync · weibaohui/dsh-sync · Keeping machines consistent through WebDAV / S3 or a private Git mirror · Sync is one of five capabilities here — alongside export/import, scheduling, marketplace and profile instance launch/stop cp -r ~/.dsh (or Git on the home dir) · Free, zero setup, fine for a purely textual config · No secret handling, no path remapping, no capture of link: / file: plugin installs, no session-log work, no conflict handling or rollback

Short version: for a one-command snapshot of everything, dsh-backup is excellent. If what you want is *move this working environment to another machine — and keep it in sync — with a review step before anything is written*, that is exactly what this plugin is for.

✨ Highlights

Icon · Feature · In one line 🚀 · One-click Export · Open the export flow — the recommended sections are pre-ticked — and package a ZIP in one click (adjust section by section, item by item if you want) 📦 · One-click Import · Restore your environment on another machine 👀 · Preview before import · Read the migration consult verdict and its evidence first, then pick content item by item and resolve conflicts one by one — never touches your config silently ⚔️ · Conflict handling · Keep current / Use backup — you decide (with bulk buttons) 🗺️ · Path auto-mapping · Detects dead absolute paths and lets you remap them 🔒 · Secret safety · API Keys are not exported by default — non-encrypted imports ask you to re-enter; encrypted backups restore them with the password ↩️ · Automatic rollback · Failed import restores everything automatically 📸 · Snapshot restore · In the Library, hit "Restore" on a pre-import snapshot: review the line-by-line restore plan, then whole-file restore + uninstall added plugins (CLI & GUI) ↺ · Rewind a conversation · Every user message carries "rewind to here": a new branch conversation takes over while the original is archived intact; tick the checkbox to revert workspace files too, with a per-file diff before you confirm (this is not the same as "Snapshot restore") 🔄 · Remote Sync · Push/pull portable config via Git private repo / WebDAV / S3-compatible object storage / GitHub Gist — each channel is configured on its own (secrets do not sync by default; encrypted snapshots can optionally carry encrypted credentials) ⏰ · Scheduled backups · Full backup on a fixed cadence (6h / 12h / 24h / 7d, or a custom weekly time) — set-and-forget, secrets never included 🛒 · Config Marketplace · Browse & one-click install community configs — supply-chain warnings + per-item content selection (change summary + in-place high-risk flags); entry: Library footer "Browse market / Publish to market", or ⌘K 🗂️ · Profiles (DSH profiles) · Under Environment → Profiles, manage $DSH_HOME/profiles/ directly: list / create from a shipped template / rename / hard delete / launch this profile (independent instance) / stop the instance (the row button flips between Launch and Stop with the running state) 🌐 · Bilingual UI · Interface, reports and error details follow the DSH app language (中文 / English) 🧩 · Local plugin migration · link: / file: development plugins are packed into the backup, so switching machines does not lose them 🗄️ · Configurable retention (GFS tiers) · "keep the last N + one per month + one per year" — the defaults are equivalent to the previous behaviour 🤖 · Agent tools · Backup / snapshot / restore / sync right from an agent session 💾 · Disk usage report · Environment → Maintenance & Diagnostics shows how much space the plugin's own artifacts take (backups / snapshots / sync copies / caches / staging) with a three-tier cleanup policy; one-click cleanup only touches regenerable caches and expired backups — snapshots and sync data are never removed there ⬆️ · Update check · The About panel (top-right nav icon) reads the latest version from npm (read-only, cached 10 minutes); when there is a newer one it offers a copyable upgrade command and a one-click Update now that installs exactly that version — DSH must then be restarted, and the plugin never restarts it for you. Offline failures are reported honestly and affect nothing else 🧭 · Compatibility explained · Before importing you see "source DSH version / platform → local" plus structured reasons for the score (cross-platform / missing sections / newer source …) instead of a bare "partial" 🧳 · Import from other AI agents · Read Claude Code / Cursor / Codex / Hermes / Antigravity … configuration and chat history on this machine, translate it into a standard bundle, then import through the usual preview / conflict / rollback flow

📸 Screenshots

Home · Library ·

Sync (four channel cards) · Environment · Maintenance & Diagnostics ·

🔄 How it works?

Export (pack it up)

Read your config → strip secrets (safe) → build manifest → compute checksums → pack into ZIP

Import (restore the environment)

Every step confirms and backs up first — it never modifies your config directly:

Select ZIP → validate file → check integrity → check schema → compatibility check
    → scan contents → build import plan → migration consult (verdict + evidence)
    → choose what to import → per-item conflict decisions → path mapping / secrets re-entry
    → confirm import → auto-backup current config → apply → validate → done
                      │
                      └─ failed midway? → automatically restored (rollback, can be switched off on the confirm page)

Rewind (go back to a moment in a conversation)

One rollback point is captured automatically per turn (its workspace state is the one from *before* that turn), so you can always go back to that moment:

Click "↺ rewind" on a user message → preview which files change and how many lines
    → confirm → a new branch conversation continues from that moment, the original is archived
    → rewound too far? the "rescue point" captured before the rewind can undo it

📥 Installation

It's a standard DSH plugin — two steps:

# ① Install the plugin
dsh plugin --profile web add dsh-config-manager@latest

# ② Restart DSH (a "Backup & Migration" entry appears in Settings)
💡 Just copy-paste the command: @latest ensures you get the newest build.
🐛 If `@latest` installed an old version: that's pnpm's minimumReleaseAge supply-chain policy (not a cache issue). The gate is evaluated per version, at resolution time: a release younger than the threshold (~30 days) stays invisible to @latest until it ages past it — and the clock restarts for every future release. Installing an exact version once fixes *that one version only*; the next release published is invisible to @latest again. It is not a one-time fix.
Permanent fix (recommended) — exempt this single package from the age gate. Add to the profile's pnpm-workspace.yaml (~/.dsh/profiles/web/pnpm-workspace.yaml):
```yaml
minimumReleaseAgeExclude:
- dsh-config-manager
`
After that @latest resolves the newest release normally — including every future release.
One-off fix — ask npm which version is actually latest and install exactly that. Repeat it each time a newer version has been published:
```powershell
# Windows (PowerShell)
$v = (npm view dsh-config-manager version).Trim(); dsh plugin --profile web add "dsh-config-manager@$v"
`
```bash
# macOS / Linux
dsh plugin --profile web add "dsh-config-manager@$(npm view dsh-config-manager version)"
`
After restarting DSH, Settings → Backup & Migration → the About icon at the top right shows the version you are actually running (and pops up the release notes whenever it changes).
- Or disable the age gate entirely with a one-liner (adds minimumReleaseAge: 0 at the top of the profile's pnpm-workspace.yaml):
```powershell
$f = "$env:USERPROFILE.dsh\profiles\web\pnpm-workspace.yaml"
$c = Get-Content $f -Raw
if ($c -notmatch '(?m)^minimumReleaseAge:') {
Set-Content -LiteralPath $f -Value ("minimumReleaseAge: 0`n" + $c) -Encoding utf8
Write-Output "Added minimumReleaseAge: 0"
} else {
Write-Output "Already present, nothing to do"
}
`
🐛 Install rejected for a version you never installed? Symptom: pnpm logs + dsh-config-manager ^0.1.66, yet DSH reports Plugin dsh-config-manager@0.1.44 is incompatible with dsh … and rolls the install back.
The cause is neither pnpm nor version resolution. After installing, DSH runs a compatibility check that reads this plugin's cordis.patch.yml mount row (name: 'dsh-config-manager') and resolves that package again — and Node's resolution chain honours NODE_PATH. If your global npm root (npm root -g) still holds an old copy of the same package (for example a npm i -g dsh-config-manager of 0.1.44 from earlier), the check compares that copy's peerDependencies and reports a version pnpm never installed.
Confirm and fix: