← Back to home@mengjiemy

dsh-session-tools

DSH 会话与数据急救包:会话体检与安全截断 / 会话真校验器 / 工作区数据校验。动聊天记录或配置数据之前先验一遍(DSH session & data safety toolkit: session doctor, real validator, storage schema check)

Stars
0
Language
JavaScript
Created
Oct 5, 2026
Updated
Oct 5, 2026

Introduction

DSH 会话与数据急救包

原名:session-doctor + session-oracle + validate-storage 一句话:动 DSH 的聊天记录或配置数据之前,先用这三个工具验一遍 —— 因为弄坏了找不回来。


为什么需要它

DSH 的聊天记录不是普通文本文件,是多帧压缩的特殊格式。 不懂这个格式就动手改,结果是会话直接从侧栏消失。

这三个工具,每一个都是被一次事故逼出来的。


三个工具

一、session-doctor —— 会话体检 + 安全截断

它干什么

  • 给会话文件做四项体检
  • 需要截断时,只按"帧边界"切,绝不重写内容

为什么必须"按帧"

我当时的做法:解压 → 裁掉尾巴 → 重新压缩成一个整块
结果:会话从侧栏消失(DSH 认不出这个结构了)

正确做法:只在【帧和帧之间】切,其他一个字节都不动

★ 关键安全设计:它从不覆盖原文件,截断结果写到新文件。


二、session-oracle —— 会话"真校验器"

它干什么:用 DSH 自己的代码去读会话文件,报的错跟客户端一字不差。

为什么需要

客户端报「历史加载失败:… is corrupt」—— 看不出具体哪里坏
自己写个校验器 —— 我的校验规则可能跟 DSH 的不一样,验过了也没用

⇒ 只有走 DSH 自己的读路径,才能问出真话

★ 用法:改会话文件之前先跑它。没通过就别上线。


三、validate-storage —— 工作区数据校验

它干什么:用 DSH 自己的 schema 校验 ~/.dsh/storages/ 下的数据。

为什么需要

我按"字段名"重建了工作区注册表,把 createdAt 写成了数字
⇒ 但 DSH 要的是 ISO-8601 字符串 ⇒ 整个工作区列表打不开

教训:★「备份了 + JSON 合法」≠ 合规
      判据必须是 DSH 自己的 schema,不是我造的

★ 一个容易踩的坑:同名字段在不同地方规则相反

  • 工作区里的 createdAt 要是字符串
  • 会话缓存里的 createdAt 要是数字

⇒ 所以它按域加载规则,不搞"一套规则通用"。


适合谁

  • 遇到会话损坏 / 聊天记录打不开的人
  • 想手动改 ~/.dsh/storages/ 的人
  • 做 DSH 数据相关工具的人

⚠️ 使用前提

这三个工具都依赖 DSH 客户端内部的代码结构。 ⇒ DSH 版本升级后可能失效,到时需要更新。


当前状态:三个都能用,正在把它们依赖的"从 app.asar 抽代码"逻辑抽成共享模块。


怎么装

# 方式一:不装,直接用
npx dsh-session-tools doctor <会话文件>

# 方式二:装到全局
npm i -g dsh-session-tools
dsh-session-tools doctor <会话文件>

三个子命令

dsh-session-tools doctor   <会话文件>   # 会话体检(要截断会写新文件,从不覆盖原文件)
dsh-session-tools oracle   <会话文件>   # 用 DSH 自己的代码验(报错与客户端一字不差)
dsh-session-tools validate <域>         # 用 DSH 自己的 schema 校验 storages

⚠️ 重要前提

这三个工具都依赖 DSH 客户端内部的代码结构(会从 app.asar 里读框架自己的包)。 ⇒ DSH 版本升级后可能失效,到时需要更新。

安全设计

  • doctor 从不覆盖原文件 —— 截断结果写新文件
  • 三个都不写任何配置文件
  • validate 按域加载规则 —— 同名字段在不同地方规则相反,不能一套规则通用

许可

MIT


维护策略

这是一个个人项目,按现状发布(as-is)。

  • Issue / PR 欢迎,但不保证及时回复 —— 我有正职,这是业余时间做的
  • PR 我会看 diff 再决定要不要合并 —— 不会盲目合并(安全起见)
  • 不接受"催更" —— 有需要欢迎自己 fork 改
  • 如果你发现了好用的改进,欢迎提 PR;如果我长期没回,你完全可以 fork 走

这个项目不承诺任何 SLA。 用之前请自己评估。