dsh-webui-perf
awa-123-cw
DeepSeek Harness WebUI 性能优化开关插件:长代码流式渲染/历史加载/高亮缓存优化,设置面板一键开关(with official-package patches)
PROJECT TOPICS
PROJECT README
Pack up your DSH configuration and take it anywhere — restore your whole environment on a new machine with one click.
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.
| Icon | Feature | In one line |
|---|---|---|
| 🚀 | One-click Export | Package your recommended config into a ZIP |
| 📦 | One-click Import | Restore your environment on another machine |
| 👀 | Preview before import | Full preview first — never touches your config silently |
| ⚔️ | Conflict handling | Keep Current / Use Imported — you decide |
| 🗺️ | Path auto-mapping | Detects dead absolute paths and lets you remap them |
| 🔒 | Secret safety | API Keys are never exported; re-enter them after import |
| ↩️ | Automatic rollback | Failed import restores everything automatically |
| 📸 | Snapshot restore | Undo an import: whole-file restore + uninstall added plugins (CLI & GUI) |
| 🔄 | Remote Sync | Push/pull portable config via a private Git repo (secrets never sync) |
| 🗂️ | Profiles | Save multiple setups (Work / Personal) and switch anytime |
Read your config → strip secrets (safe) → build manifest → compute checksums → pack into ZIP
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 → preview & confirm
→ auto-backup current config → apply → validate → done
│
└─ failed midway? → automatically restored (rollback)
It's a standard DSH plugin — two steps:
# ① Install the plugin
dsh plugin --profile web add dsh-config-manager@latest --config.auto-install-peers=false
# ② Restart DSH (a "Backup & Migration" entry appears in Settings)
💡 Just copy-paste the command:
--config.auto-install-peers=falseskips a few DSH core packages that aren't on the public registry yet (the DSH runtime provides them), and@latestensures you get the newest build.🐛
@latestinstalled an old version? That's pnpm 11'sminimumReleaseAgesupply-chain policy, not a cache issue: versions published less than ~30 days ago are excluded from resolution until whitelisted. Two fixes:
- Install an exact version once (it auto-whitelists, then
@latestworks):dsh plugin --profile web add dsh-config-manager@0.1.8 --config.auto-install-peers=false- Or disable the age gate with a one-liner (adds
minimumReleaseAge: 0at the top of the profile'spnpm-workspace.yaml):$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" }
Machine A (export)
1. Open DSH → Settings → "Backup & Migration"
2. Click "Export Configuration" → choose "Quick Export"
3. You get dsh-config-2026-08-14.zip (the report confirms no secrets inside)
Copy the ZIP to Machine B (import)
1. Open DSH → "Backup & Migration" → "Import Configuration"
2. Select the ZIP → wait for analysis → review the "Import Preview"
3. Path issues? → choose new paths (batch mapping supported)
4. Conflicts? → choose Keep Current / Use Imported
5. Confirm import → wait
6. Re-enter any missing API Keys as prompted
7. ✅ Settings / plugins / MCP / skills / workspaces are back
| Mode | Description |
|---|---|
| Quick Export (recommended) | One-click: settings / UI / models / plugins / MCP / skills / workspaces… |
| Custom Export | Tick the categories you want |
Output:
dsh-config-<date>.zipwith manifest + per-category data + SHA-256 checksums.
Shown fully before importing:
✓ 18 settings will be updated ✓ 6 plugins already installed
⚠ 2 plugins need installation ⚠ 3 secrets need re-entry
⚠ 1 path needs mapping ⚠ 2 conflicts need attention
When the target already has a same-named item, you choose:
| Option | Meaning |
|---|---|
| Keep Current | Leave the target's config untouched |
| Use Imported | Overwrite with the backup's value |
Note: a "decide later / review" option is intentionally not offered — an undecided conflict would block the import from proceeding. Every conflict must be resolved before continuing.
C:\Users\alice\projects doesn't exist on the new machine? The plugin:
C:\Users\alice\ → /Users/bob/ in one shot)| Scenario | Behavior |
|---|---|
| Default backup | No secret values at all — only records which keys are needed |
| Encrypted backup (optional) | AES-256-GCM with a password; the password is never written to the file |
| After import | "3 secrets need re-entry" — values stay in memory only |
Save multiple configurations (Work / Personal) and switch anytime; switching includes preview + auto-backup + rollback.
Every import creates a safety snapshot first. If something feels off afterwards, restore the target back to its pre-import state:
| Action | What it does |
|---|---|
| Whole-file restore | settings.yaml / settings.json / cordis.patch.yml blobs are written back to $DSH_HOME; files that didn't exist at snapshot time but appeared after import are removed |
| Plugin uninstall | Plugins added during import are removed via the official dsh plugin remove (baseline comparison; old snapshots without a baseline only get a hint) |
| File compensation | skills / agentPresets / pluginFiles / sessions blobs are written back to their original paths |
| Credentials | DSH never reads credential values back — you get a manual re-entry hint instead |
GUI: Settings → "Backup & Migration" → Snapshots & Restore tab → pick a snapshot → preview the plan (dry-run, zero writes) → confirm.
CLI (offline, no DSH runtime needed) — it is a standalone npm tool, installed separately from the plugin:
# install the CLI once on the machine where you want to restore snapshots
# (--omit=peer: the offline CLI only needs js-yaml, not the DSH peer packages)
npm install -g dsh-config-manager@latest --omit=peer
⚠️ Installing/updating the plugin (
dsh plugin --profile web add ...) only enables the GUI — it does not create thedsh-config-managercommand. Run the install command above, then:
# list snapshots (newest first)
dsh-config-manager snapshots
# preview the restore plan for the latest usable snapshot (zero writes)
dsh-config-manager restore --dry-run
# execute the restore (current files are backed up to <snapshot>/pre-restore/ first)
dsh-config-manager restore --id <snapshot-id>
Every overwrite/delete is first copied to <snapshotDir>/pre-restore/ so you can manually change your mind. Exit code is 1 if any action failed; the report honestly lists restored / removedPlugins / manualHints / failed / skipped.
| Status | Meaning |
|---|---|
| ✅ Excellent | Same platform, complete sections, supported schema |
| 👍 Good | Backup from an older DSH |
| ⚠️ Partial | Cross-platform / missing sections / backup newer than target |
| ❌ Unsupported | Schema beyond the supported range (cannot import) |
Q: Will my API Key be in the backup? No. The default backup never contains any secret value — only records which keys you'll need to re-enter.
Q: Will importing overwrite my existing config? Not silently. Conflicts ask you to choose (Keep Current / Use Imported); the target is auto-backed-up and can roll back.
Q: Does it work across platforms (Windows → macOS)? Yes. Dead absolute paths are detected and remapped (batch replacement supported).
Q: Can a corrupted ZIP still be imported? No. A checksum mismatch rejects the import outright (protects against corruption or tampering).
Q: Will re-importing duplicate things? No. Items are deduplicated by stable IDs (plugin ID / MCP name / skill name…); existing items are skipped.
secrets.enc can't be decrypted (by design — keep your password safe)Maintainers & developers: see DEVELOPERS.md for build, testing, auto-publishing and full technical notes.
Product principles: better to migrate one config less than to break your existing config. Every import follows Analyze → Preview → Backup → Apply → Validate → Rollback(if needed); every secret follows never export by default / never log / never expose / never silently transfer.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。