🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

会话恢复工具 Coprexist/dsh-session-recovery

DeepSeek Harness
Coprexist77 天前有提交已提供中文文档扫描:含敏感能力

从原始磁盘找回误删或损坏的会话记录与记忆库

24.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/22 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Coprexist/dsh-session-recovery
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · chat
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 77 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令
查看扫描证据(共 1 处,展示前 1 条)
  • 执行外部命令固定命令
    scripts/recover-memory.js:64
    const sql = execFileSync('sqlite3', [candidatePath, '.recover'], { maxBuffer: 256 * 1024 * 1024 }).toString()
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

从原始磁盘恢复被删除或损坏的 dsh 会话记录(session.jsonl.zstd)与记忆库(memory.db),这套恢复工具集已在 DeepSeek Harness 上实战验证。

README

由 DeepSeek 最新模型翻译生成
dsh-session-recovery 从原始磁盘恢复被删除/损坏的 DeepSeek Harness 会话与记忆库 Awesome DSH Plugin English · 中文 🛟 在 rm -rf ~/.dsh 误删或文件损坏后,dsh 的会话记录(session.jsonl.zstd)与记忆库(memory.db)通常仍可从原始块设备中找回——本仓库是实战验证过的恢复手册与配套脚本。 ✨ 功能特性 | 🧠 记忆库恢复 | 以 SQLite format 3 文件头定位 memory.db,dump 后用 SQLite 官方 .recover 抢救(跳过损坏页、保留可读记录)。 | | 💬 会话恢复 | 扫描 zstd 帧魔数 0xFD2FB528,按磁盘偏移聚类,在 turn 重置处拆分会话,重建官方格式 session.jsonl.zstd。 | | 🔧 自动修复 | seq 重编号连续、深度修复 sourceEventSeqs/messageSeqs、归一化 surfaceOp——重建日志通过 DSH 校验。
展开完整文档(README 剩余 1 节)
dsh-session-recovery

从原始磁盘恢复被删除/损坏的 DeepSeek Harness 会话与记忆库

Awesome DSH Plugin

English · 中文

🛟 在 rm -rf ~/.dsh 误删或文件损坏后,dsh 的会话记录(session.jsonl.zstd)与记忆库(memory.db)通常仍可从原始块设备中找回——本仓库是实战验证过的恢复手册与配套脚本。

✨ 功能特性

| 🧠 记忆库恢复 | 以 SQLite format 3 文件头定位 memory.db,dump 后用 SQLite 官方 .recover 抢救(跳过损坏页、保留可读记录)。 |
| 💬 会话恢复 | 扫描 zstd 帧魔数 0xFD2FB528,按磁盘偏移聚类,在 turn 重置处拆分会话,重建官方格式 session.jsonl.zstd。 |
| 🔧 自动修复 | seq 重编号连续、深度修复 sourceEventSeqs/messageSeqs、归一化 surfaceOp——重建日志通过 DSH 校验。 |
| 🔁 续接修复 | 重建文件在续接时可能报错(invalid persisted inbox splice、Messages with role 'tool' must be a response to tool_calls)——repair-session.js(或 web 界面的 /session-repair 命令)逐条重放 DSH 的 inbox/surface/wire 规则并修复。 |
| 🛡️ 安全设计 | 脚本只读块设备、写入你指定目录,绝不修改原始磁盘。 |

🚀 快速开始

1. 停掉一切写盘的东西(systemd 服务、dsh 本身)
systemctl stop dsh-web

2. 恢复记忆库(SQLite)
node scripts/recover-memory.js /dev/<设备> /tmp/recovered/

3. 扫描磁盘上的会话帧
node scripts/scan-zstd.js /dev/<设备> > /tmp/session-events.jsonl

4. 把混合事件按会话拆分
node scripts/split-sessions.js /tmp/session-events.jsonl 2026-08-16T07:05:06Z

5. 重建会话文件(官方格式)
node scripts/rebuild-session.js \
--input /tmp/sess-A.jsonl \
--id session-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--created-at 1786705157736 \
--cwd /path/to/workspace \
--out-dir ~/.dsh/sessions/--workspace-encoded--/

6. 续接前校验/修复(修复 inbox splice 错位、重复/孤儿 tool 结果、悬空 tool 调用)
node scripts/repair-session.js \
~/.dsh/sessions/--workspace-encoded--/<session-id>/session.jsonl.zstd --dry-run
node scripts/repair-session.js \
~/.dsh/sessions/--workspace-encoded--/<session-id>/session.jsonl.zstd
→ 生成 session.jsonl.zstd.repaired(+ .bak-<时间戳>),确认后覆盖:
cp ~/.dsh/sessions/--workspace-encoded--/<session-id>/session.jsonl.zstd.repaired \
~/.dsh/sessions/--workspace-encoded--/<session-id>/session.jsonl.zstd

📖 完整分步手册(中文,含 DSH 校验规则与所有可能遇到的报错):RECOVERY.md

📦 作为 dsh 插件安装

说明:本仓库核心是恢复工具集(脚本 + 手册),同时作为 dsh 插件安装后会向 web 界面注册 /session-repair 命令。

在包含本仓库的目录(本地安装,无需发布):

dsh plugin --profile web add file:/path/to/dsh-session-recovery
systemctl restart dsh-web

然后在 web 界面的任意会话里输入:

/session-repair --dry-run # 只分析当前会话(不写任何文件) /session-repair <会话id或路径> # 修复 → 生成 .repaired + 备份 /session-repair --apply <id> # 同时覆盖原文件

默认只生成新的 .repaired 文件 + 备份;--apply 才覆盖原文件(对正在运行当前会话会拒绝,需从其他会话执行)。应用后重启 dsh-web。

需要 Node 24+(node:sqlite、node:zlib)。

📖 背景知识

DeepSeek Harness 的数据存放在 ~/.dsh 下:

~/.dsh/
├── sessions/<workspace-encoded>/<session-id>/session.jsonl.zstd # 会话记录 ├── memory/memory.db # dsh-mneme 记忆库 └── storages/workspace.json # 工作区注册表

会话日志是 zstd 帧的拼接流——每一行 JSONL 一个独立帧(源码)。这种逐行分帧的结构正是"部分恢复"可行的原因:即使部分帧被覆盖,周围的完整帧仍能独立解码。

🗂️ 仓库结构

├── RECOVERY.md # 完整恢复手册(中文,实战验证) ├── cordis.patch.yml # dsh 插件 patch(注册 /session-repair) ├── docs/ │ ├── awesome-entry.yml # 已按格式写好的 Awesome DSH Plugin 列表条目 │ └── GITHUB-PUBLISH.md # 发布与 PR 操作清单 ├── lib/ │ ├── index.js # dsh 插件入口:/session-repair 命令 │ └── repair.js # 共享修复核心(CLI + 插件共用) ├── scripts/ │ ├── scan-zstd.js # 磁盘扫描:定位并聚类 zstd 会话帧 │ ├── split-sessions.js # 把混合恢复事件按会话拆分 │ ├── rebuild-session.js # 重建官方格式 session.jsonl.zstd │ ├── repair-session.js # 修复重建后无法续接的会话 │ ├── make-test-fixture.js # 生成带损伤的样本会话,离线测试修复 │ └── recover-memory.js # 定位并抢救 memory.db(SQLite .recover) └── package.json # dsh 插件 manifest(dsh.bundle + main 入口)

🔖 Topics

dsh-plugin · dsh · deepseek-harness · session-recovery · data-recovery · zstd · sqlite

📄 License

MIT
预览分享卡片长什么样 ↓Coprexist/dsh-session-recovery
分享 · DeepSeek Harness Hub
Coprexist/dsh-session-recovery

从原始磁盘找回误删或损坏的会话记录与记忆库

这是你的仓库?认领条目

回到顶部