基础工具与工作流 · dontbesilent2025/dbskill

dbs-restore

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

L3 联网 · 声明域名与密钥范围V1 已固定联网Dual-pass Audit
Author dontbesilent2025GitHub dontbesilent2025/dbskill ↗Stars 10121License CC BY-NC 4.0(仓库根 LICENSE:Attribution-NonCommercial 4.0 International (CC BY-NC 4.0);署名 + 禁止商业使用;Copyright (c) 2026 dontbesilent)Commit 8b8e33f1ec
管控等级描述 skill 的能力与建议配套的管控措施,不代表质量或安全认证,也不表示可用或不可用。是否使用由用户和管理者决定。不同 agent 宿主对权限的约束各不相同,请勿假定宿主一定会提供安全兜底。第三方 skill 版权归原作者,使用风险由使用者自行承担。

1实现原理 · 为什么它能做到

纯 prompt 编排的「状态读取器」,职责被压到最小:读存档 → 呈现状态 → 等用户开口,明确不做诊断、不主动跳别的 skill

skills/dbs-restore/SKILL.md
**你不做诊断,不主动跳到别的 skill。** 你只负责把记忆拿回来。
与 dbs-save 共享同一套用户面向措辞约定(snapshot→存档、session→对话、slug→项目)。

定位「最新」不靠文件 mtime,而按文件名前缀 YYYYMMDD-HHMMSS 排序——理由是云同步会改写 mtime

skills/dbs-restore/SKILL.md
「最新」按文件名前缀的 `YYYYMMDD-HHMMSS` 排序,**不依赖文件 mtime**(mtime 不可信,可能被 iCloud 同步改写)。
这是与 dbs-save 命名规则(时间戳前缀)配套的设计,两 skill 通过文件名约定解耦。

存档根目录解析与 dbs-save 同规则、同失败语义:配置不可解析/mode 不支持/root 为空/路径指向 / 或家目录或项目根 → 停止恢复并说明问题,不猜测、不静默退回默认位置

skills/dbs-restore/SKILL.md
`dbs-restore` 只读取配置,不修改配置。用户要查看或调整位置时,引导使用 `/dbs-save location`。
配套「不要到其他位置猜测,也不要静默退回默认位置」与「不要跨目录自动搜索私人文件」。

空目录时给「最近活跃项目」而非报错:列出其他项目最近 3 个并按时间戳排序,指引用户用 --slug 切换

skills/dbs-restore/SKILL.md
如果有别的项目 → 列出最近活跃过的 3 个(按各项目下最新存档的时间戳排序),让用户选:
区分两种空态:项目为空但有别的项目 → 给候选;连 sessions/ 都不存在 → 提示如何开始并指向 /dbs-save location。

呈现阶段只挑核心字段(项目/时间/主诉/来源/状态/结论/否决/假设/下一步),末尾给一个开放性问句并明确不得替用户路由

skills/dbs-restore/SKILL.md
末尾的「现在你想从哪儿继续?」是开放性问句,**不要直接帮用户路由到某个 skill**。等用户回应。
Step 5 只在用户明确说「按上次确认的下一步走」时才路由到 next_skill 字段值。

恢复后接续的质量保障:路由到 next_skill 时必须把存档核心内容作为上下文喂过去,不让用户重讲

skills/dbs-restore/SKILL.md
**调用时把存档的核心内容作为上下文喂给那个 skill**——不要让用户再讲一遍。
同时保留用户不继承的出口:「不要强制用户继承上次的状态」,新情况交回 /dbs 重新判断。

容错优先于格式洁癖:存档被手改或 frontmatter 缺字段时,尽量用现有信息呈现而不拒绝展示

skills/dbs-restore/SKILL.md
尽量用现有信息呈现,不要因为格式错误就拒绝展示。
与 dbs-report 的处理一致(「如果某份存档格式有缺失,尽量用现有字段,不要因此中断报告生成」)。

交互纪律细到重复调用与越界序号:连续两次 restore、序号超范围都有固定话术,避免模型自创行为

skills/dbs-restore/SKILL.md
用户传的序号超出范围 → 「{项目名} 下只有 {N} 份存档,你给的序号是 {M}。」
另有「存档文件被用户手动删了」与「当前存档位置为空但用户确认以前存过」两条。

2核心能力

01按序号/项目/默认三种方式定位目标存档
02跨项目拉取:--slug 切换项目并取该项目最新存档
03空态引导:列出最近活跃的 3 个项目供选择
04状态呈现模板(紧凑 markdown,含状态中文化与「上次留的下一步」)
05条件路由:仅在用户确认「按上次的下一步走」时调用 next_skill,并携带存档上下文
06list 复用:/dbs-restore list 等价于 /dbs-save list,输出格式一致
07不继承出口:用户说「之前那个不重要了」时交回 /dbs 重新判断
08格式容错读取:frontmatter 缺字段或被手改仍尽力呈现

4管控建议与判定依据

建议配套管控措施
面向 Agent
声明可访问域名与密钥范围
面向管理者
密钥最小权限,保留请求日志
判定依据(文件路径与关键语句摘要)
  • 环境变量 / API Key: 读取厂商服务密钥: 读取 .dbs/config.json(存档根目录配置,mode=default/project/custom + root),属用户本地配置,不含密
审计说明: 。判级对象是本 skill 自身目录:无脚本、无网络端点、无凭证读取、不写盘;唯一 I/O 是读用户自己的存档文件与 .dbs/config.json,且明示「只读取配置,不修改配置」。注意点是隐私与上下文传递:它会复述存档中的敏感结论(收入、客户名等)到当前对话,并把存档内容作为上下文交给下一跳 skill。

5第二遍独立确认

  • [ok] 外部资源/工具:是否存在未声明的依赖 — 无 URL、无包、无 CLI;目录内仅 SKILL.md + agents/openai.yaml。external_deps 空数组成立。
  • [ok] 安全结论:是否真的零写入 — 全文写入动作为零;对配置明确「只读取配置,不修改配置」,用户要改位置时引导到 /dbs-save location。边界情况里的「不要跨目录自动搜索私人文件」进一步收窄读取面。
  • [ok] 实现原理是否成立:跨会话接续真能成立吗 — 成立的前提三件:存档命名含时间戳(dbs-save 保证)、按文件名而非 mtime 排序(本 skill 明文规定)、路由时把存档内容喂给下一跳(本 skill 明文规定)。三者环环相扣,缺一不可,文中都已写死。
  • [unlocatable] 证据定位:仓库级元数据(stars/last_push)与 installs — stars=10121、last_push=2026-09-07 来自站点池 data/pool.json(GitHub API 采集),pin 源码内无法逐字定位;installs 未采集记 null。license 可在仓库根 LICENSE 逐字命中。

6结论

  • 与 dbs-save 构成完整的跨会话记忆闭环:命名约定(时间戳前缀)+ 排序约定(不用 mtime)+ 上下文接力(喂给下一跳)三件套写死,接续不靠模型即兴发挥
  • 职责边界极清:不诊断、不主动路由、不写文件,把「接下来做什么」的决定权交还用户,避免 AI 自作主张地推进议程
  • 失败态处理完整且人性化:空项目给最近活跃项目候选、连 sessions/ 都没有时给启动路径、序号越界/文件被删/重复调用都有定话术
  • 隐私克制:明确「不要跨目录自动搜索私人文件」,配置异常时停下来报告而不是在文件系统里翻找
  • 容错优先:格式被手改过也尽量呈现,不因格式问题拒绝用户看自己的历史(与 dbs-report 同款容错)
  • 适合: 适合长期做同一项目诊断、需要跨会话接续的用户:上次诊断到哪、否决过什么方向、下一步是什么,一条命令恢复到可继续的状态。与 dbs-save / dbs-report 组成「存—续—出」闭环,是 dbskill 从「单次问诊」变「私人医生」的关键一环。
    不适合: 不适合第一次就想要结论的场景(它只回放,不分析——没有存档时只会引导去 /dbs);不适合要跨位置/跨机器找回存档(只在当前配置位置读取,不自动搜索);不适合需要脱敏后再展示的场景(原样复述);不适合希望 AI 替你做决定的用户——它的设计就是不给路由建议。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload dbs-restore.tar.gz
    sha256: b38b6b7cd8efab82…
    Option B · Copy Guide for Agent
    install.json
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 8b8e33f1ec.