@xiaoyuyu6420/dsh-backup 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,65 +2,146 @@
2
2
 
3
3
  [![dsh-plugin](https://img.shields.io/badge/ecosystem-dsh--plugin-8b5cf6)](https://github.com/topics/dsh-plugin)
4
4
  [![npm](https://img.shields.io/npm/v/@xiaoyuyu6420/dsh-backup)](https://www.npmjs.com/package/@xiaoyuyu6420/dsh-backup)
5
+ [![Downloads](https://img.shields.io/npm/dw/@xiaoyuyu6420/dsh-backup)](https://www.npmjs.com/package/@xiaoyuyu6420/dsh-backup)
5
6
  [![Publish to npm](https://github.com/xiaoyuyu6420/dsh-backup/actions/workflows/publish.yml/badge.svg)](https://github.com/xiaoyuyu6420/dsh-backup/actions/workflows/publish.yml)
6
7
  [![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
7
8
 
8
9
  English | [简体中文](README.zh.md)
9
10
 
10
- **dsh-backup is a DeepSeek Harness (DSH) plugin that backs up and restores `~/.dsh` with a single command.**
11
+ **Your entire DeepSeek Harness (DSH) workspace lives in one folder: `~/.dsh`. One failed upgrade, one accidental delete, one new laptop — without a backup, sessions, settings and skills are all gone. dsh-backup gives them back with one command.**
11
12
 
12
- Sessions, settings, skills, and plugin config all live in `~/.dsh`. Delete it by accident, break a config, or move to a new machine — with a backup, you get it all back. Credentials never enter an archive; scheduled backups and GitHub sync are supported (details in the [advanced guide](docs/advanced.zh.md), Chinese).
13
+ ```sh
14
+ dsh plugin --profile web add @xiaoyuyu6420/dsh-backup # install
15
+ # restart dsh web, then type:
16
+ /backup # → a verified archive lands in ~/Desktop/dsh-backups/
17
+ ```
18
+
19
+ Real output from a fresh v0.9.0 install:
20
+
21
+ ```text
22
+ 备份完成: dsh-20260826-195150036.tar.gz
23
+ sha256: 8f9ae6322ef782d21554981cf4547220d5bb3e64d7964a883317415ad54e3cbb
24
+ 轮换删除 0 份(保留 7 份)
25
+ ```
26
+
27
+ Prefer clicking? There's a visual panel in `dsh web` → Settings → Plugins → Backup: list, verify, restore, delete, edit settings — no restart.
28
+
29
+ ![Backup panel](docs/assets/panel-backups.png)
13
30
 
14
- Recent additions: **0.9.0** adds a session-log health check with targeted repair (`/backup doctor`), an out-of-process rescue channel (`dsh-rescue` / launcher dropped into the backup dir) that works even when the host won't boot, restore auto-rollback with a result-oriented receipt, and smart backup: pre-upgrade snapshots on host train changes, quarantine of corrupt session logs before they rotate away, and tiered daily/weekly retention. **0.8.0** can edit backup settings right in the panel (destination, retention, exclude patterns) — saved instantly to `settings.yaml`, no restart; stale edits get a conflict warning instead of being silently overwritten. **0.7.x** added credential redaction with a local vault and cross-machine restore.
31
+ ## Why you want this
32
+
33
+ | Fear | What dsh-backup does about it |
34
+ |---|---|
35
+ | "An upgrade broke my setup" | Auto-takes a `dsh-pre-upgrade-` snapshot the moment the host version changes — try the new release, roll back if it bites |
36
+ | "I deleted / broke something" | `/backup restore latest --dry-run` previews exactly what comes back; a failed restore auto-rolls-back and shows a result receipt |
37
+ | "DSH won't even boot anymore" | Every backup drops a zero-dependency **rescue console** (`dsh-rescue` / `rescue.mjs`, or double-click「点我恢复」) next to the archives — a web UI that restores outside of DSH |
38
+ | "My API keys will end up in a cloud backup" | Credentials are redacted from archives by default; plaintext only ever lives in a local vault on your machine |
39
+ | "My session logs got corrupted" | `/backup doctor` scans and repairs session logs from a known-good backup; corrupt files are quarantined before they rotate away |
40
+ | "I got a new machine" | GitHub sync: `/backup github pull` fetches remote archives, `restore --sync-deps` reinstalls plugins |
41
+ | "Backups rot silently" | Every archive ships a sha256; `/backup verify all` checks integrity; daily/weekly tiered retention keeps useful history longer |
42
+ | "I'll forget to back up" | `/backup auto 12` — every 12 hours, survives restarts, rotates old copies (default keep 7) |
43
+
44
+ ![Backup settings](docs/assets/panel-settings.png)
15
45
 
16
46
  ## Install
17
47
 
18
- The package is published on [npm](https://www.npmjs.com/package/@xiaoyuyu6420/dsh-backup); install it into a DSH profile with:
48
+ Requires macOS / Linux / Windows 10+ (ships `tar`) and DSH `0.1.1-rc.2` or compatible.
19
49
 
20
50
  ```sh
21
51
  dsh plugin --profile web add @xiaoyuyu6420/dsh-backup
22
- # or from GitHub:
52
+ # or straight from GitHub:
23
53
  dsh plugin --profile web add github:xiaoyuyu6420/dsh-backup
24
54
  ```
25
55
 
26
- Then restart `dsh web`. Requires macOS / Linux / Windows 10+ (ships `tar`) and DSH `0.1.1-rc.2` or compatible.
56
+ Restart `dsh web` afterwards the plugin only takes effect after a restart.
57
+
58
+ > The installer may print `✕ missing peer @deepseek-ai/...` warnings. These are
59
+ > expected: the peer packages are provided by the DSH host at runtime. As long
60
+ > as the command ends with `Done`, the plugin is installed.
27
61
 
28
62
  ## Quickstart
29
63
 
30
64
  1. Install (above) and restart `dsh web`
31
- 2. Run `/backup`
32
- 3. Done — the archive lands in `~/Desktop/dsh-backups/`, named with a timestamp
65
+ 2. Type `/backup`
66
+ 3. Done — the archive lands in `~/Desktop/dsh-backups/`, timestamped, with a `.sha256` next to it
33
67
 
34
- Want it on a schedule? `/backup auto 12` every 12 hours, keeps going across restarts.
68
+ Want it on a schedule? `/backup auto 12` (every 12 hours; `off` stops it, `status` checks it).
35
69
 
36
- ## Commands
70
+ ## Command cheat sheet
37
71
 
38
72
  | Task | Command |
39
73
  |---|---|
40
74
  | Back up now | `/backup` |
41
- | Schedule | `/backup auto 12` (`off` to stop, `status` to check) |
42
- | Restore | `/backup restore latest` (`--dry-run` to preview) |
75
+ | Typed backup (selected types only) | `/backup --types skills,sessions` (types: `credentials`·`mcp`·`skills`·`sessions`·`settings`·`profiles`; `--only` works too) |
76
+ | Schedule (survives restarts) | `/backup auto 12` · `off` · `status` |
77
+ | Restore (preview first) | `/backup restore latest --dry-run` |
78
+ | Restore for real | `/backup restore latest` |
79
+ | Typed restore (merge, other types untouched) | `/backup restore <archive> --types skills` |
43
80
  | List backups | `/backup list` |
44
81
  | Verify integrity | `/backup verify [prefix\|all]` |
45
- | Check & repair session logs | `/backup doctor` (`--repair [prefix\|latest]` to fix from a backup) |
46
- | **Total failure rescue** | double-click `点我恢复` in the backup dir, or `node rescue.mjs` — a zero-dependency recovery console (web UI) that works even when DSH won't boot |
47
- | Delete | `/backup delete <prefix\|latest>` |
48
- | Keep N copies (default 7) | `/backup --keep N` |
82
+ | Check & repair session logs | `/backup doctor` · `--repair [prefix\|latest]` |
83
+ | **Rescue when DSH won't boot** | double-click「点我恢复」in the backup dir, or `dsh-rescue` / `node rescue.mjs` |
84
+ | Delete / retention | `/backup delete <prefix\|latest>` · `/backup --keep N` (default 7) |
85
+
86
+ ## Typed backup
87
+
88
+ Only need certain kinds of data? Use `--types` (or `--only`) to operate on a subset. Available types: `credentials` (API keys), `mcp` (MCP config), `skills`, `sessions`, `settings`, `profiles`.
49
89
 
50
- There's a visual panel in `dsh web` Settings Plugins Backup: it lists backups, runs verify/restore/delete, and — since 0.8.0 — edits the backup settings (destination, retention, exclude patterns) directly, applied immediately, no restart.
90
+ - **Back up**: `/backup --types skills,sessions` creates a `dsh-t-` subset archive; rotation is tracked separately from full backups
91
+ - **Restore**: `/backup restore <archive> --types skills` merges only skills back into your existing `~/.dsh` (preview with `--dry-run`; overwritten files are kept aside as `.pre-merge-*`). Everything else stays untouched.
92
+ - **Credentials caveat**: `--types credentials` puts API keys into the archive **in plaintext** (full backups redact them). Such archives never go to GitHub sync — keep them local or copy them to a new machine yourself.
93
+ - **Guardrail**: restoring a typed archive without `--types` is rejected (prevents accidental data loss); the rescue channel likewise won't list or fully restore them.
94
+ - The Settings panel supports this too: check types under the backup button; typed archives get their own section.
51
95
 
52
96
  ## New machine
53
97
 
54
- Prerequisite: GitHub sync was configured on the old one ([setup](docs/advanced.zh.md#github-同步可选)).
98
+ Prerequisite: GitHub sync was configured on the old one ([setup](docs/advanced.zh.md#github-同步可选), Chinese).
55
99
 
56
100
  1. Install the plugin, set the same `githubRepo`
57
101
  2. `/backup github pull` — fetch the remote backups
58
102
  3. `/backup restore latest --sync-deps` — restore and reinstall plugin dependencies
59
103
  4. Restart `dsh`
60
104
 
105
+ ## FAQ
106
+
107
+ **Are my API keys / credentials inside the archive?**
108
+ No. Known credential files are redacted before archiving; the plaintext stays in a local vault that never leaves the machine. Restoring puts them back.
109
+
110
+ **What exactly gets backed up?**
111
+ Everything under `~/.dsh` — sessions, settings, skills, plugin config — minus your exclude patterns and `node_modules`.
112
+
113
+ **I messed up `~/.dsh` and now `dsh` won't start. Am I out of options?**
114
+ No — that's exactly what the rescue channel is for. Every backup writes `rescue.mjs` and a double-clickable launcher (`点我恢复.command` / `.bat` / `.sh`) into the backup directory. It runs on plain Node, no DSH required, and serves a local web UI to browse and restore archives.
115
+
116
+ **Windows support?**
117
+ Yes — Windows 10+ with the bundled `tar`. The rescue launcher becomes a `.bat` file.
118
+
119
+ **Where do backups go by default?**
120
+ `~/Desktop/dsh-backups/` — change it any time in the panel (Settings → Plugins → Backup) or via settings; takes effect immediately, no restart.
121
+
122
+ ## Feedback
123
+
124
+ Tried it? Tell us what broke, what's missing, what you liked — it directly shapes the roadmap:
125
+
126
+ - 💬 [Share feedback (GitHub Discussions)](https://github.com/xiaoyuyu6420/dsh-backup/discussions)
127
+ - 🐛 [Report a bug](https://github.com/xiaoyuyu6420/dsh-backup/issues)
128
+
129
+ ## What's new
130
+
131
+ <details>
132
+ <summary>Recent releases</summary>
133
+
134
+ - **0.10.0** — typed backups: back up just what you need (`/backup --types skills,sessions`) and merge-restore a subset (`/backup restore <archive> --types skills`); per-type archives rotate in their own bucket. Credential-type archives stay out of GitHub sync; cross-machine guardrails unchanged.
135
+ - **0.9.1** — feedback entry point in the panel; README overhaul. UX hardening from a six-agent review: restore-confirm button made visible again (missing theme fallback), snapshot self-deletion during snapshot-restore fixed, node discovery for the double-click rescue launcher, friendlier error messages with concrete next steps.
136
+ - **0.9.0** — `/backup doctor` session-log health check with targeted repair; out-of-process rescue channel (`dsh-rescue` / launcher in the backup dir) that works even when the host won't boot; restore auto-rollback with a result-oriented receipt; smart backup: pre-upgrade snapshots on host train changes, quarantine of corrupt session logs before they rotate away, tiered daily/weekly retention.
137
+ - **0.8.0** — edit backup settings right in the panel (destination, retention, exclude patterns), saved instantly to `settings.yaml`, no restart; stale edits get a conflict warning instead of silent overwrite.
138
+ - **0.7.x** — credential redaction with a local vault; cross-machine restore.
139
+
140
+ </details>
141
+
61
142
  ## More
62
143
 
63
- Retention policy, credential redaction, GitHub sync, restore safeguards, config reference, troubleshooting, and development notes — in the [advanced guide](docs/advanced.zh.md) (Chinese).
144
+ Retention policy, credential redaction internals, GitHub sync, restore safeguards, config reference, troubleshooting, and development notes — in the [advanced guide](docs/advanced.zh.md) (Chinese). Cross-runtime compatibility notes: [compatibility.md](docs/compatibility.md).
64
145
 
65
146
  ## Acknowledgements
66
147
 
package/README.zh.md CHANGED
@@ -2,52 +2,96 @@
2
2
 
3
3
  [![dsh-plugin](https://img.shields.io/badge/ecosystem-dsh--plugin-8b5cf6)](https://github.com/topics/dsh-plugin)
4
4
  [![npm](https://img.shields.io/npm/v/@xiaoyuyu6420/dsh-backup)](https://www.npmjs.com/package/@xiaoyuyu6420/dsh-backup)
5
+ [![Downloads](https://img.shields.io/npm/dw/@xiaoyuyu6420/dsh-backup)](https://www.npmjs.com/package/@xiaoyuyu6420/dsh-backup)
5
6
  [![Publish to npm](https://github.com/xiaoyuyu6420/dsh-backup/actions/workflows/publish.yml/badge.svg)](https://github.com/xiaoyuyu6420/dsh-backup/actions/workflows/publish.yml)
6
7
  [![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
7
8
 
8
9
  [English](README.md) | 简体中文
9
10
 
10
- **dsh-backup 是 DeepSeek Harness(DSH)的备份插件:一条命令备份 `~/.dsh`,一条命令恢复。**
11
+ **你所有的 DSH 工作数据都在一个目录里:`~/.dsh`。一次升级失败、一次误删、一次换电脑——没有备份,会话、设置、技能全没了。dsh-backup 用一条命令把它们找回来。**
11
12
 
12
- 会话记录、设置、技能、插件配置全在 `~/.dsh` 一个目录里。误删了、改坏了、换电脑了——有备份就能找回来。密码等敏感文件不进备份包,还支持定时自动备份和 GitHub 云同步(细节见[进阶文档](docs/advanced.zh.md))。
13
+ ```sh
14
+ dsh plugin --profile web add @xiaoyuyu6420/dsh-backup # 安装
15
+ # 重启 dsh web,然后输入:
16
+ /backup # → 一份带校验的备份落在 ~/Desktop/dsh-backups/
17
+ ```
18
+
19
+ v0.9.0 全新安装的真实输出:
20
+
21
+ ```text
22
+ 备份完成: dsh-20260826-195150036.tar.gz
23
+ sha256: 8f9ae6322ef782d21554981cf4547220d5bb3e64d7964a883317415ad54e3cbb
24
+ 轮换删除 0 份(保留 7 份)
25
+ ```
26
+
27
+ 不想敲命令也行:`dsh web` → 设置 → 插件 → 备份 里有可视化面板——列备份、校验、恢复、删除、改设置,全都立即生效不用重启。
28
+
29
+ ![备份面板](docs/assets/panel-backups.png)
13
30
 
14
- 最近的更新:**0.9.0** 带来会话日志体检与定点修复(`/backup doctor`)、宿主起不来也能用的进程外救援通道(备份目录里的 dsh-rescue / 双击启动器)、恢复失败自动回滚与结果导向回执,以及智能备份:宿主升级前自动快照、损坏会话先隔离再入档防轮换毁掉好副本、每日/每周分级保留。**0.8.0** 可以在面板里直接改备份设置(备份目录、保留份数、排除模式),保存立即生效、写入 settings.yaml,不用重启;两处同时改会产生冲突提示,不会静默覆盖。**0.7.x** 新增了凭据脱敏(本机 vault)和跨机恢复。
31
+ ## 它替你挡掉哪些事
32
+
33
+ | 你担心的 | dsh-backup 做的事 |
34
+ |---|---|
35
+ | 「升级把环境搞坏了」 | 宿主版本一变就自动拍 `dsh-pre-upgrade-` 快照——放心试新版,坏了随时回滚 |
36
+ | 「我误删 / 改坏了东西」 | `/backup restore latest --dry-run` 先预览要恢复什么再动手;恢复失败自动回滚并给出结果回执 |
37
+ | 「DSH 根本起不来了」 | 每次备份都会往备份目录放一个零依赖的**救援控制台**(`dsh-rescue` / `rescue.mjs`,或双击「点我恢复」)——不依赖 DSH 的网页版恢复界面 |
38
+ | 「API Key 会被传到云上吗」 | 凭据默认脱敏,不进备份包;明文只存本机 vault,永不离开这台机器 |
39
+ | 「会话日志损坏了」 | `/backup doctor` 体检并从备份定点修复;损坏文件先隔离再入档,防止轮换把好副本也带走 |
40
+ | 「换新电脑了」 | GitHub 同步:`/backup github pull` 拉回云端备份,`restore --sync-deps` 顺手重装插件 |
41
+ | 「备份悄悄坏了没人知道」 | 每份归档带 sha256,`/backup verify all` 随时体检;每日/每周分级保留,留得住有用的历史 |
42
+ | 「我会忘记备份」 | `/backup auto 12`——每 12 小时自动跑,重启不中断,旧副本自动轮换(默认保留 7 份) |
43
+
44
+ ![备份设置](docs/assets/panel-settings.png)
15
45
 
16
46
  ## 安装
17
47
 
18
- 包发布在 [npm](https://www.npmjs.com/package/@xiaoyuyu6420/dsh-backup) 上,装进 DSH profile 用:
48
+ 要求:macOS / Linux / Windows 10+(自带 `tar`),DSH `0.1.1-rc.2` 或兼容版本。
19
49
 
20
50
  ```sh
21
51
  dsh plugin --profile web add @xiaoyuyu6420/dsh-backup
22
- # 或者从 GitHub 安装:
52
+ # 或者直接从 GitHub 安装:
23
53
  dsh plugin --profile web add github:xiaoyuyu6420/dsh-backup
24
54
  ```
25
55
 
26
- 装完重启 `dsh web`。要求:macOS / Linux / Windows 10+(自带 `tar`),DSH `0.1.1-rc.2` 或兼容版本。
56
+ 装完重启 `dsh web` 后插件才生效。
57
+
58
+ > 安装时可能刷出 `✕ missing peer @deepseek-ai/...` 警告,属预期现象:这些
59
+ > peer 包由 DSH 宿主在运行时提供,不装在 profile 目录里。只要命令以
60
+ > `Done` 结尾就是装成功了。
27
61
 
28
62
  ## 快速上手
29
63
 
30
64
  1. 按上面装好插件,重启 `dsh web`
31
65
  2. 输入 `/backup`
32
- 3. 搞定 —— 备份出现在 `~/Desktop/dsh-backups/`,文件名带时间戳
66
+ 3. 搞定 —— 备份出现在 `~/Desktop/dsh-backups/`,文件名带时间戳,旁边一份 `.sha256`
33
67
 
34
- 想定时自动跑?`/backup auto 12`(每 12 小时一次,重启不中断)。
68
+ 想定时自动跑?`/backup auto 12`(每 12 小时一次;`off` 关闭,`status` 看状态)。
35
69
 
36
70
  ## 命令速查
37
71
 
38
72
  | 场景 | 命令 |
39
73
  |---|---|
40
74
  | 立即备份 | `/backup` |
41
- | 定时备份 | `/backup auto 12`(`off` 关闭,`status` 看状态) |
42
- | 恢复 | `/backup restore latest`(`--dry-run` 先预览) |
75
+ | 分类型备份(只备份选中类型) | `/backup --types skills,sessions`(可选:`credentials`·`mcp`·`skills`·`sessions`·`settings`·`profiles`;`--only` 同义) |
76
+ | 定时备份(重启不中断) | `/backup auto 12` · `off` · `status` |
77
+ | 恢复(先预览) | `/backup restore latest --dry-run` |
78
+ | 正式恢复 | `/backup restore latest` |
79
+ | 分类型恢复(merge,不动其他类型) | `/backup restore <归档> --types skills` |
43
80
  | 列出备份 | `/backup list` |
44
- | 校验是否完好 | `/backup verify [前缀\|all]` |
45
- | 会话日志体检/修复 | `/backup doctor`(`--repair [前缀\|latest]` 从备份定点修复) |
46
- | **彻底损坏自救** | 双击备份目录里的「点我恢复」文件,或 `node rescue.mjs`——零依赖救援网页,DSH 起不来也能恢复 |
47
- | 删除某份备份 | `/backup delete <前缀\|latest>` |
48
- | 保留份数(默认 7) | `/backup --keep N` |
81
+ | 校验完整性 | `/backup verify [前缀\|all]` |
82
+ | 会话日志体检/修复 | `/backup doctor` · `--repair [前缀\|latest]` |
83
+ | **DSH 起不来时自救** | 双击备份目录里的「点我恢复」,或 `dsh-rescue` / `node rescue.mjs` |
84
+ | 删除 / 保留策略 | `/backup delete <前缀\|latest>` · `/backup --keep N`(默认 7) |
85
+
86
+ ## 分类型备份
87
+
88
+ 只想备份/恢复某几类数据?`--types`(或 `--only`)按内容类型子集操作,可选类型:`credentials`(凭据/api key)、`mcp`(MCP 配置)、`skills`(技能)、`sessions`(会话)、`settings`(设置)、`profiles`(插件 profiles)。
49
89
 
50
- 不敲命令也行:`dsh web` 设置 插件 → 备份 里有可视化面板——列备份、校验/恢复/删除,0.8.0 起还能直接改备份设置(目录、保留份数、排除模式),立即生效不用重启。
90
+ - **备份**:`/backup --types skills,sessions` 生成 `dsh-t-` 前缀的子集归档,与全量备份分开轮换、互不挤占保留份数
91
+ - **恢复**:`/backup restore <归档名> --types skills` 只把 skills 合并回现有 `~/.dsh`(先 `--dry-run` 预览;覆盖的现有文件自动留档 `.pre-merge-*`),其他类型完全不碰
92
+ - **凭据类型特殊**:`--types credentials` 会把 api key **明文**打进归档(默认全量备份是脱敏的)——这类归档绝不进 GitHub 同步,仅建议本机保存或手动拷到新机
93
+ - **安全护栏**:分类型归档不带 `--types` 直接整包恢复会被拒绝(防止误覆盖丢数据);rescue 救援通道同样不列、不整包恢复它们
94
+ - 面板(Settings → 插件 → 备份)同样支持:备份按钮下方勾选类型;分类型归档在独立分区展示与恢复
51
95
 
52
96
  ## 换新电脑
53
97
 
@@ -58,9 +102,46 @@ dsh plugin --profile web add github:xiaoyuyu6420/dsh-backup
58
102
  3. `/backup restore latest --sync-deps` —— 恢复并重装插件依赖
59
103
  4. 重启 `dsh`
60
104
 
105
+ ## 常见问题
106
+
107
+ **API Key / 密码会进备份包吗?**
108
+ 不会。已知的凭据文件打包前会脱敏,明文留在本机 vault 里不离开这台机器;恢复时自动还原。
109
+
110
+ **到底备份了什么?**
111
+ `~/.dsh` 下的全部——会话、设置、技能、插件配置——减去你配置的排除模式和 `node_modules`。
112
+
113
+ **我把 `~/.dsh` 搞坏了,`dsh` 都启动不了,还有救吗?**
114
+ 有——这正是救援通道的用途。每次备份都会往备份目录写 `rescue.mjs` 和双击启动器(macOS `.command` / Windows `.bat` / Linux `.sh`)。它只用普通 Node 就能跑,不需要 DSH,起一个本地网页让你浏览和恢复备份。
115
+
116
+ **支持 Windows 吗?**
117
+ 支持——Windows 10+(用系统自带 `tar`),救援启动器是 `.bat` 文件。
118
+
119
+ **备份默认放哪?**
120
+ `~/Desktop/dsh-backups/`——在面板(设置 → 插件 → 备份)里随时可改,立即生效不用重启。
121
+
122
+ ## 反馈
123
+
124
+ 用过吗?哪里坏了、缺什么、喜欢什么,都欢迎说——反馈直接决定路线图:
125
+
126
+ - 💬 [分享反馈(GitHub Discussions)](https://github.com/xiaoyuyu6420/dsh-backup/discussions)
127
+ - 🐛 [报告问题](https://github.com/xiaoyuyu6420/dsh-backup/issues)
128
+
129
+ ## 更新日志
130
+
131
+ <details>
132
+ <summary>最近的版本</summary>
133
+
134
+ - **0.10.0** —— 分类型备份:只备份需要的部分(`/backup --types skills,sessions`),按类型 merge 恢复(`/backup restore <归档> --types skills`);类型归档独立轮换不挤全量配额。含凭据的类型归档永不进 GitHub 同步,跨机护栏不变。
135
+ - **0.9.1** —— 面板新增反馈入口;README 重做。六路 agent UX 深审后的加固:恢复确认按钮补主题色兜底重新可见、修复恢复快照时自毁目标快照的 bug、双击救援启动器自动探测 node、报错文案全面改为"人话 + 下一步"。
136
+ - **0.9.0** —— `/backup doctor` 会话日志体检与定点修复;宿主起不来也能用的进程外救援通道(备份目录里的 dsh-rescue / 双击启动器);恢复失败自动回滚与结果导向回执;智能备份:宿主升级前自动快照、损坏会话先隔离再入档、每日/每周分级保留。
137
+ - **0.8.0** —— 面板里直接改备份设置(目录、保留份数、排除模式),立即生效写入 settings.yaml 不用重启;两处同时改有冲突提示,不会静默覆盖。
138
+ - **0.7.x** —— 凭据脱敏(本机 vault)、跨机恢复。
139
+
140
+ </details>
141
+
61
142
  ## 更多
62
143
 
63
- 定时备份策略、敏感文件脱敏、GitHub 同步、恢复的保护机制、配置参考、故障排查、开发说明——都在[进阶文档](docs/advanced.zh.md)。
144
+ 定时备份策略、敏感文件脱敏、GitHub 同步、恢复保护机制、配置参考、故障排查、开发说明——都在[进阶文档](docs/advanced.zh.md)。跨运行时兼容性说明:[compatibility.md](docs/compatibility.md)
64
145
 
65
146
  ## 致谢
66
147