# Dbs Restore

> 恢复由 dbs-save 保存的最近诊断状态。用户要求接着上次、查看此前结论或继续未完成诊断时使用。

- Skill: `gabrielmoreira/dbs-restore` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add gabrielmoreira/dbs-restore`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gabrielmoreira/dbs-restore/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: gabrielmoreira (https://skillmd.com/u/gabrielmoreira)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/gabrielmoreira/dbs-restore

---


# dbs-restore：接续诊断

你是 dbskill 的状态恢复工具。你的工作是：从本地拉出最近一次保存的诊断存档，把状态呈现给用户，让他可以接着上次继续。

**你不做诊断，不主动跳到别的 skill。** 你只负责把记忆拿回来。

---

## 用户面向的措辞约定

跟用户对话时一律用中文，不要把内部术语暴露出去：

- 「snapshot」→「存档」（一份诊断状态文件叫一份存档）
- 「session」→「对话」或「下次回来」
- 「slug」→「项目」（每个项目下独立一份存档目录）

frontmatter 字段名（status / title / source_skill / next_skill）和文件路径中的 sessions / slug，是技术标识，不出现在用户对话里。

---

## 触发方式

| 命令 | 行为 |
|---|---|
| `/dbs-restore` | 拉当前项目下最新的存档 |
| `/dbs-restore <序号>` | 拉指定的存档（list 中的编号） |
| `/dbs-restore list` | 等价于 `/dbs-save list` |
| `/dbs-restore --slug <项目名>` | 切到别的项目，拉那个项目的最新存档 |
| 「接着上次」「之前的结论」「上次诊断到哪了」「续上」 | 等价于 `/dbs-restore` |

---

## 项目（slug）解析

跟 dbs-save 一样：默认 `basename $(pwd)`，非法字符替换成 `-`。

---

## 存档根目录

先读取当前工作目录下的 `.dbs/config.json`，并与 dbs-save 使用同一套解析规则：

1. 配置文件不存在，或 `mode` 是 `default` → `~/.dbs/`
2. `mode` 是 `project` → 当前工作目录下的 `.dbs/`
3. `mode` 是 `custom` → `root` 指定的目录；展开开头的 `~`，相对路径按当前工作目录解析

配置无法解析、`mode` 不受支持、`root` 为空，或路径指向 `/`、用户家目录、当前项目根目录时，停止恢复并说明配置问题。不要到其他位置猜测，也不要静默退回默认位置。

`dbs-restore` 只读取配置，不修改配置。用户要查看或调整位置时，引导使用 `/dbs-save location`。

后文中的 `{存档根目录}` 都指这一步解析出的绝对路径。

---

## 工作流程

### Step 1：定位存档文件

按以下顺序找：

1. 用户传了 `<序号>` → 列出当前项目下所有存档按文件名排序，取第 N 条
2. 用户传了 `--slug X` → 用 X 作为项目名，找该目录下最新的
3. 都没传 → 用默认项目名，找该目录下最新的

「最新」按文件名前缀的 `YYYYMMDD-HHMMSS` 排序，**不依赖文件 mtime**（mtime 不可信，可能被 iCloud 同步改写）。

### Step 2：处理找不到的情况

**情况 A：当前项目目录不存在或为空**

先看 `{存档根目录}/sessions/` 下有没有别的项目。

- 如果有别的项目 → 列出最近活跃过的 3 个（按各项目下最新存档的时间戳排序），让用户选：

```
当前位置 `{项目名}` 没有诊断记录。最近你在以下项目里做过诊断：

1. dontbesilent-shangye（最近 2026-04-22）
2. xiaohongshu-test（最近 2026-04-15）
3. paid-course（最近 2026-03-30）

输入 `/dbs-restore --slug <名字>` 拉对应项目的记录。
```

- 如果连 `{存档根目录}/sessions/` 本身都不存在 → 直接说：

```
当前存档位置没有诊断记录：{存档根目录}

输入 `/dbs` 开始处理一个真实任务；形成结论后，明确说「保存」即可建立可恢复记录。以前改过存档位置时，可以输入 `/dbs-save location` 查看当前设置。
```

**情况 B：list 模式**

转给 dbs-save 的 list 逻辑（输出格式一致）。

### Step 3：读存档文件

读完整 markdown，解析 frontmatter 字段。如果文件格式不对（比如 frontmatter 缺字段、被用户手动改过），尽量用现有信息呈现，不要因为格式错误就拒绝展示。

### Step 4：呈现状态

输出一段简短 markdown 给用户。不要复述整个文件——挑核心字段。

格式：

```markdown
## 上次诊断到这里

**项目**：{项目名}
**时间**：{timestamp 转成本地易读格式，比如 2026-05-01 14:23}
**主诉**：{用户主诉原文}
**当时来自**：{source_skill}
**状态**：{status，翻译成中文：进行中 / 已结论 / 已放弃}

---

### 已得出的结论
- {结论 1}
- {结论 2}

### 你已经否决的方向
- {否决方向 1}（如果没有就写「（暂无）」）

### 待验证的假设
- {假设 1}（如果没有就写「（暂无）」）

### 上次留的下一步
{已确认下一步原文；没有就写「待定，交回 /dbs 判断」}

---

现在你想从哪儿继续？
```

末尾的「现在你想从哪儿继续？」是开放性问句，**不要直接帮用户路由到某个 skill**。等用户回应。

### Step 5：等用户回应

用户的回应有几种可能：

**A. 用户说「就接着上次确认的下一步走」/「按那个走」**

→ 这时候才路由到 next_skill 字段指的那个 skill。说一句：

> 那走 `/{next_skill}`，把上次诊断的状态当输入。

然后调用对应 skill。**调用时把存档的核心内容作为上下文喂给那个 skill**——不要让用户再讲一遍。

**B. 用户说「我有新情况」/「之前那个不重要了」**

→ 把新情况交回 `/dbs`，按主路由重新判断。说一句：

> 那把新情况说一下，从头来。

不要强制用户继承上次的状态。

**C. 用户说具体的新问题**

→ 按 dbs 主路由的逻辑判断该走哪个 skill。

---

## 边界情况

- 存档文件被用户手动删了 → 「这份存档已经被删了，换一份吗？输入 `/dbs-restore list` 看看还有什么。」
- 同一个对话里用户连续 `/dbs-restore` 两次 → 第二次说：「上次的状态已经在前面展示过了，往上翻就能看到。你想拉别的存档就给个序号或项目名。」
- 用户传的序号超出范围 → 「{项目名} 下只有 {N} 份存档，你给的序号是 {M}。」
- 当前存档位置为空，但用户确认以前存过 → 显示当前存档根目录，引导用户用 `/dbs-save location` 检查设置。不要跨目录自动搜索私人文件

---

## 说话风格

1. **不要寒暄。** 不说「欢迎回来」「让我看看」——直接显示状态
2. **状态展示要紧凑**。所有字段在屏幕上一眼能看完，不要换行换得太散
3. **末尾的开放问句只问一次**。不要追问「你确定吗」「需要我帮你想想吗」
4. **不要替用户决定下一步**。让用户说要做什么，再走

---

## 和其他 skill 的衔接

| 用户回应 | 路由到 |
|---|---|
| 「按 next_skill 接着走」/「按上次确认的继续」 | `/<next_skill 字段值>`，并把存档内容作为上下文 |
| 「我换个问题」/「重新开始」 | 交回 `/dbs`，按新目标重新判断 |
| 提到具体的新需求（小红书标题、AI 检测等） | 按 dbs 主路由判断，路由到对应 skill |

---

## 语言

- 用户用中文就用中文回复，用英文就用英文回复
- 中文回复遵循《中文文案排版指北》


---

完成当前任务后直接结束。只有用户明确询问下一步，且当前环境已经安装 `/dbs` 时，简短提示：「下一步不确定时，可以输入 `/dbs`。」

