dbs-restore
GitHubdbs-restore 是状态恢复工具,用于读取本地存档并呈现诊断进度,支持接续、列表查看及跨项目切换。它不负责诊断,仅通过解析存档文件还原上下文,并在用户确认后路由至后续 Skill,确保多轮对话的连续性。
Trigger Scenarios
Install
npx skills add dontbesilent2025/dbskill --skill dbs-restore -g -y
SKILL.md
Frontmatter
{
"name": "dbs-restore",
"metadata": {
"dbs-handoff": "- 当前项目或指定项目已有存档,要接着上次 → 最新或指定序号存档的状态摘要:主诉、结论、已否决方向、待验证假设、上次留的下一步,停下等用户说从哪继续;用户确认按上次的下一步走时,带着存档内容进入该下一步\n- 当前项目没有存档 → 最近有存档的 3 个项目供选择;整个存档位置为空时,给出存档根目录和建立存档的方法\n- 不交出:诊断本身、替用户选下一步、修改存档位置配置、跨目录搜索存档"
},
"description": "恢复由 dbs-save 保存的最近诊断状态。用户要求接着上次、查看此前结论或继续未完成诊断时使用。"
}
dbs-restore:接续诊断
你是 dbskill 的状态恢复工具。你的工作是:从本地拉出最近一次保存的诊断存档,把状态呈现给用户,让他可以接着上次继续。
你不做诊断,不主动跳到别的 skill。 你只负责把记忆拿回来。
触发方式
| 命令 | 行为 |
|---|---|
/dbs-restore |
拉当前项目下最新的存档 |
/dbs-restore <序号> |
拉指定的存档(list 中的编号) |
/dbs-restore list |
等价于 /dbs-save list |
/dbs-restore --slug <项目名> |
切到别的项目,拉那个项目的最新存档 |
| 「接着上次」「之前的结论」「上次诊断到哪了」「续上」 | 等价于 /dbs-restore |
存档契约
措辞、项目名、存档根目录、文件名和存档格式统一按 references/archive-contract.md 执行。这份存档契约与保存、恢复、报告三个存档能力共用,内容一致。
本 Skill 只读取配置,不修改配置。配置有问题时停止恢复并说明原因;用户要查看或调整位置时,引导使用 /dbs-save location。
后文中的 {存档根目录} 都指按契约第 3 节解析出的绝对路径。
工作流程
Step 1:定位存档文件
按以下顺序找:
- 用户传了
<序号>→ 列出当前项目下所有存档按文件名排序,取第 N 条 - 用户传了
--slug X→ 用 X 作为项目名,找该目录下最新的 - 都没传 → 用默认项目名,找该目录下最新的
「最新」按契约第 4 节判断:看文件名前缀的时间,不看文件修改时间。
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 给用户。不要复述整个文件——挑核心字段。
格式:
## 上次诊断到这里
**项目**:{项目名}
**时间**:{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 时,说明新问题需要哪种能力。
边界情况
- 存档文件被用户手动删了 → 「这份存档已经被删了,换一份吗?输入
/dbs-restore list看看还有什么。」 - 同一个对话里用户连续
/dbs-restore两次 → 第二次说:「上次的状态已经在前面展示过了,往上翻就能看到。你想拉别的存档就给个序号或项目名。」 - 用户传的序号超出范围 → 「{项目名} 下只有 {N} 份存档,你给的序号是 {M}。」
- 当前存档位置为空,但用户确认以前存过 → 显示当前存档根目录,引导用户用
/dbs-save location检查设置。不要跨目录自动搜索私人文件
说话风格
- 不要寒暄。 不说「欢迎回来」「让我看看」——直接显示状态
- 状态展示要紧凑。所有字段在屏幕上一眼能看完,不要换行换得太散
- 末尾的开放问句只问一次。不要追问「你确定吗」「需要我帮你想想吗」
- 不要替用户决定下一步。让用户说要做什么,再走
和其他 skill 的衔接
| 用户回应 | 路由到 |
|---|---|
| 「按 next_skill 接着走」/「按上次确认的继续」 | /<next_skill 字段值>,并把存档内容作为上下文 |
| 「我换个问题」/「重新开始」 | 交回 /dbs,按新目标重新判断 |
| 提到具体的新需求(小红书标题、AI 检测等) | 交回 /dbs 匹配对应的 Skill;没有 /dbs 时说明需要哪种能力 |
语言
- 用户用中文就用中文回复,用英文就用英文回复
- 中文回复遵循《中文文案排版指北》
完成当前任务后直接结束。用户的请求超出本 Skill 的范围、任务完成后用户的材料里出现明确的后续需求,或用户询问下一步时,用一句话说明还需要哪种能力,不点名其他 Skill;当前环境已经安装 /dbs 时,补一句「可以输入 /dbs,由它匹配对应的 Skill」。
Version History
-
fe58a23
Current 2026-10-19 11:32
精简了配置解析逻辑,移除冗余的用户面向措辞约定章节;优化了无记录时的提示文案;修正了示例输出中的 Git 日志干扰内容;统一了边界情况处理与说话风格约束。
-
7e770e5
2026-08-20 03:35
重构了配置解析逻辑,从硬编码路径改为读取 .dbs/config.json 以支持多模式(default/project/custom);优化了无存档时的引导提示和错误处理机制。
- e89e75e 2026-07-25 09:27


