im-Captain/dsh-session-rescue ↗★ 0

dsh-session-rescue

Diagnose, repair and salvage corrupted DeepSeek Harness (dsh) session logs — seq gaps, torn writes, broken headers. Zero dependencies. 核心用途是解决 DSH 因异常崩溃或并发写入导致的“会话日志损坏/历史不可用”报错,实现无损修复。适合因意外中断导致重要聊天记录损坏、急需恢复会话数据的用户。

패키지
dsh-session-rescue
호환성
미검증
버전
0.1.0
라이선스
MIT
최근 업데이트
2026. 9. 10.

같은 패키지 이름의 다른 저장소

설치

검증된 bundle이 없거나 호환성 검사에 실패했습니다. 먼저 저장소 설명을 읽어 주세요. 전체 README 읽기 ↗

dsh-session-rescue

Fix "history unavailable for session … corrupt session log" in DeepSeek Harness — safely, with zero data loss in the common cases.

中文文档

npx github:im-Captain/dsh-session-rescue

If dsh greets you with any of these, this tool is for you:

  • 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 after a crash, force-kill, or running two dsh instances on one session

dsh session logs are append-only and strictly validated: one duplicated write after a crash or a second process, and the whole conversation becomes permanently unloadable — even though your content is usually still all there. dsh-session-rescue diagnoses exactly what dsh's loader rejects, removes the redundant side (replayed rows, stale synthetic interrupt-closers), and rebuilds a loadable log.

Quick start

npx github:… builds from source on first run (about half a minute); later runs are cached. Once the package is on npm the shorter npx dsh-session-rescue will work too.

# 1. See which sessions are broken (safe, read-only)
npx github:im-Captain/dsh-session-rescue

# 2. Deep-diagnose one session (path or any unique id fragment)
npx github:im-Captain/dsh-session-rescue doctor 37374e34

# 3. Preview the repair — nothing is written yet
npx github:im-Captain/dsh-session-rescue repair 37374e34

# 4. Apply it (a timestamped backup is always kept; close dsh first)
npx github:im-Captain/dsh-session-rescue repair 37374e34 --apply

Can't be repaired? Get your conversation back anyway:

npx github:im-Captain/dsh-session-rescue export 37374e34        # salvages the transcript to Markdown
npx github:im-Captain/dsh-session-rescue quarantine 37374e34    # move a broken session out of dsh's sight

Using an AI agent? Just tell it: "Run npx github:im-Captain/dsh-session-rescue and fix my broken dsh sessions."

What it can fix

DamageCauseRepair
Replayed duplicate rowscrash / force-kill / write-behind replaydrop duplicates — zero loss
Synthetic closer block colliding with the real continuationinterrupt recovery + second writerdrop the synthetic block, keep your real content — zero loss
Torn final zstd framepower loss mid-writenone needed (dsh self-heals; we tell you so)
Unreadable/garbled headermanual edits, partial writesheader reconstruction
Real seq holes (events actually missing)forced compaction, lost writesexplicit --truncate keeps the loadable prefix; export salvages the rest

Both repair paths are pinned by regression tests modeled on the two corruption shapes reported in deepseek-harness#1497 (interrupt closers colliding with a resumed real tool result; a full tail rewritten from a recycled seq) — the tool's output matches the fixes those users validated by hand.

Why it's safe

Community experience shows naive repairs can kill a session permanently (dangling sourceEventSeqs poisoning). This tool:

  1. Never touches the original without a timestamped backup sitting right next to it.
  2. Validates before writing: the rebuilt log must pass seq-contiguity and sourceEventSeqs reference checks — the same invariants dsh enforces. An unsafe plan is refused, not "fixed harder".
  3. Verifies after writing: the repaired file is re-scanned; if it wouldn't load, the tool tells you and the backup is untouched.
  4. Preserves original bytes: kept lines are copied verbatim, never re-serialized.
  5. Rebuilds the exact physical layout dsh expects (zstd frame 0 = header only).

vs. other tools

dsh-session-rescuedoctor-family toolsexport-family tools
Detect corruption✅✅—
Repair the session so it loads & continues✅❌❌
Salvage transcript when unrepairable✅❌✅
Refuses unsafe writes✅n/an/a

Scope & honesty

  • Supports session format version 0 (current dsh developer preview), .jsonl and .jsonl.zstd, JSONL backend only. dsh is pre-1.0 with no format-compatibility promise; on an unknown version this tool refuses loudly instead of guessing.
  • Repair requires dsh to be closed (or at least that session idle) — a live writer would race the swap.
  • Zero dependencies. Node ≥ 22.15 (built-in zstd).

License

MIT