READMESource: main@1ad81433
dsh-session-cleaner
可视化删除 DeepSeek Harness (dsh) 会话的小工具:本地 Node Web 服务 + 浏览器页面,零第三方依赖。
免责声明:本项目是非官方工具,与 DeepSeek / DeepSeek Harness 项目及其开发者无隶属关系,不受其支持。 它直接读写 DeepSeek Harness 的磁盘数据(版本
0.1.0-rc.6实测),属于实验性工具:上游 pre-1.0 阶段的存储布局无兼容承诺, 后续版本可能变动,使用前请先升级到与本工具声明的兼容版本匹配,并留意删除确认信息。
功能
- 列出
$DSH_HOME/sessions下全部会话:标题、会话 ID、项目目录、创建时间、大小、是否已归档、fork 血缘(被哪些子会话引用) - 空白会话识别:采用 dsh 自身元数据(
sessionListMetadata.blank,缺失时按日志内容兜底)标记由 GUI 页面加载自动创建的占位会话,默认隐藏、可一键显示,顶部横幅给出说明 - 现代 UI/UX:亮/暗主题跟随系统、搜索与排序、分组折叠、行详情展开(可复制 ID/路径)、统计条、Toast 通知、空状态页
- 勾选删除会话,并自动同步清理:
storages/workspace.json:归档列表archivedSessionIds与各工作区记录里的sessionIds槽位storages/session_projcache.json:tables.sessions中的缓存行- 删除后变空的会话项目目录
- 误删防线:删除前校验会话目录名与日志 header 中的 id 编码一致;header 缺失或目录名不一致的会话默认拒绝删除,需在确认框勾选豁免
- 安全保护:检测到 dsh 进程仍在运行时阻止删除(运行中的服务会把已删记录从内存回写复活);仅在确认框里勾选强制执行才可绕过
- 删除前可选备份(默认开启,写入
%TEMP%/dsh-session-backup-<时间戳>/);删除后自动校验残留并展示报告
使用
前置:Node.js ≥ 22.15(需要 node:zlib 的 zstd 流式解码读取会话 header)。
cd dsh-session-cleaner
node server.js
启动后自动打开浏览器页面 http://127.0.0.1:38211/。
重要:删除前必须先完全停止 dsh web(关闭 dsh 窗口 / Ctrl+C)。 工具会检测 dsh 是否在运行,运行时删除按钮会被拦截。
参数:
node server.js --port 38211 # 监听端口(默认 38211)
node server.js --home D:\dsh # 指定 DSH 主目录(默认 $DSH_HOME 或 ~/.dsh)
node server.js --no-open # 不自动打开浏览器
node server.js --help # 帮助
测试
node --test test/
测试覆盖高风险纯逻辑:路径编码与目录名校验、注册表/缓存文档改写(只删目标、不动其他字段)、
以及用临时 fixture 主目录做的端到端删除(含拒绝未校验会话的分支)。不触碰真实 ~/.dsh 数据。
兼容性
- 测试于 dsh
0.1.0-rc.6(Node 22.17.1,Windows 11) - 只支持标准布局:
$DSH_HOME/sessions(日志)与$DSH_HOME/storages/{workspace.json,session_projcache.json};若你在 profile 里改写过持久化根目录则不适用 - 会话 ID 从日志首行 header 读取(zstd 流式只解码开头一段,大文件也很快);读不了 header 的会话会标记「校验异常」并默认拒绝删除
文件结构
dsh-session-cleaner/
├── server.js # HTTP 服务 + API(/api/state、/api/delete)
├── store.js # 存储层:扫描、校验防线、注册表/缓存改写、运行检测、备份/删除/校验
├── test/
│ └── store.test.js # node:test 单测(fixture 数据,不碰真实 ~/.dsh)
├── public/
│ ├── index.html
│ ├── style.css
│ └── app.js
├── LICENSE # MIT
└── README.md
No comments yet. Be the first to write one.