dsh-session-rescue

by po-et

0 会话与消息github未核验到 manifest收录于 08-17

修复 DeepSeek Harness 的「corrupt session log」:诊断、安全修复并抢救损坏的 dsh 会话;零依赖

Fix 'corrupt session log' in DeepSeek Harness: diagnose, safely repair, and salvage broken dsh sessions. Zero dependencies.

安装

dsh plugin --profile web add github:po-et/dsh-session-rescue

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

修复 DeepSeek Harness 的 "history unavailable … corrupt session log"——安全、常见场景零丢失。

English

npx dsh-session-rescue

如果你见过这些报错,这个工具就是为你写的:

  • corrupt session log: seq gap in committed region at line N (expected X, got Y)
  • corrupt session log: unparsable committed event at line N
  • first line is not a session header
  • 崩溃 / 强杀进程 / 双开实例之后的 SessionPersistenceCorruptionError

dsh 的会话日志是 append-only 且严格校验的:崩溃恢复或第二个进程多写了一段重复事件,整个会话就永远打不开——但你的内容其实几乎都还在。dsh-session-rescue 按 dsh 加载器的原样规则定位损坏点,摘除冗余侧(重放行、过期的合成中断收尾块),重建一个可加载的日志。

快速开始

# 1. 看哪些会话坏了(只读,绝对安全)
npx dsh-session-rescue

# 2. 深度诊断某个会话(路径或 id 片段均可)
npx dsh-session-rescue doctor 37374e34

# 3. 预览修复方案——此时不写任何东西
npx dsh-session-rescue repair 37374e34

# 4. 执行修复(自动保留带时间戳的备份;请先关闭 dsh)
npx dsh-session-rescue repair 37374e34 --apply

修不了的也能救回对话内容:

npx dsh-session-rescue export 37374e34        # 抢救对话全文为 Markdown
npx dsh-session-rescue quarantine 37374e34    # 把坏会话移出 dsh 视野,防止拖垮启动

在用 AI agent?直接对它说:"运行 npx dsh-session-rescue,把我损坏的 dsh 会话修好。"

能修什么

损坏 成因 修复方式
重放的重复行 崩溃 / 强杀 / write-behind 重放 去重——零丢失
合成收尾块与真实续写撞号 中断恢复 + 第二写入方 摘除合成块、保留真实内容——零丢失
zstd 尾帧撕裂 写入中断电 无需处理(dsh 自愈,工具会明说)
header 损坏 手工编辑、部分写入 重建 header
真实 seq 空洞(事件确实丢了) 强制压缩、写入丢失 显式 --truncate 保住可加载前缀;export 抢救其余

为什么安全

社区案例证明:外行修复可能把会话修死(悬空 sourceEventSeqs 毒化,永久报废)。本工具:

  1. 不备份,不动原文件——带时间戳的备份就放在原文件旁边。
  2. 写前验证:重建结果必须通过 seq 连续性与 sourceEventSeqs 引用检查(与 dsh 自身校验一致),不安全的方案直接拒绝执行。
  3. 写后复检:修复完成立刻重扫,若仍无法加载会如实报告,备份完好无损。
  4. 保留原始字节:保留的行原样复制,绝不重新序列化。
  5. 按 dsh 的物理布局重建(zstd 帧 0 仅含 header 行)。

与其他工具的关系

dsh-session-rescue doctor 类工具 export 类工具
检测损坏 ✅ ✅ —
把会话修到能加载、能继续用 ✅ ❌ ❌
修不了时抢救对话全文 ✅ ❌ ✅
拒绝不安全写入 ✅ 不适用 不适用

范围与诚实声明

  • 支持会话格式 version 0(当前 dsh developer preview),.jsonl 与 .jsonl.zstd,仅 JSONL 后端。dsh 处于 pre-1.0、无格式兼容承诺;遇到未知版本本工具会明确拒绝而不是乱猜。
  • 修复时请关闭 dsh(至少保证该会话空闲)——活跃写入方会与文件替换竞争。
  • 零依赖。Node ≥ 22.15(使用内置 zstd)。

许可证

MIT

原始 README: https://github.com/po-et/dsh-session-rescue/blob/main/README.zh.md ↗