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。 用之前请自己评估。