
Zn-Dk/dsh-session-repair
dsh-session-repair
dsh-session-repair is a community DeepSeek Harness plugin. Read the repository README before installing.
Install
npx @deepseek-ai/dsh plugin --profile web add dsh-session-repairRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-session-repair)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from Zn-Dk/dsh-session-repair, cleaned of badges and images.
dsh-session-repair
English | 中文
A DSH Web plugin for session diagnosis, trusted checkpoints, pre-repair backups, and safe repair.
Installation
From npm (recommended)
dsh plugin --profile web add dsh-session-repair
Restart dsh web after installation, then refresh http://127.0.0.1:3080.
From GitHub
dsh plugin --profile web add github:Zn-Dk/dsh-session-repair
Development: link local source
cd /root/proj/dsh-proj/dsh-session-repair
pnpm install
pnpm build
dsh plugin --profile web add link:/root/proj/dsh-proj/dsh-session-repair
After modifying the source, restart the existing dsh web process; do not start a replacement server. If the deepseek-harness dev:web watcher is running, the Client bundle can receive updates through the existing HMR.
Severity levels
The severity of a diagnostic report is derived from its checks and decides whether writable repair entry points are shown:
| status | case-when |
|---|---|
healthy | No blocked/repairable/warning checks. seq-gap and unclosed turn/step in a live session are informational only and do not raise the level. |
warning | A settled (non-live) history contains unclosed turn/step structures or other potential issues. Readable; no writable repair is offered. |
repairable | Deterministically fixable issues exist (e.g. empty tool-call ID chains); a repair plan can be submitted. |
blocked | The session cannot be displayed normally and has a hard conflict that cannot be auto-fixed (ID conflict, zstd damage, session mismatch). |
Why this plugin
If a session refuses to load after the DeepSeek gateway emitted an empty id/name on a tool-call delta (the "identity-loss" family tracked upstream in discussion #4365), the persisted history is poisoned — every later load throws message must have tool source.
dsh-session-repair fixes that poisoned history in place, from the broken session's own header — no manual sessionId copying, no agent involvement, no hand-splitting zstd frames:
- One click: Session Health Check → Backup & Repair on the unopenable session.
- Covers all three identity-loss shapes: missing,
null, and"". - Repairs the full chain (
assistant/message,tool/call,tool/result) in one batch. - Always writes a pre-repair backup first, with one-click rollback and an audit trail.
Upstream verified the root cause and adopted our close-block fallback as a new layer of the engine-side fix blueprint (discussion #4365). This plugin remains the load-path recovery complement: it restores already-poisoned history, while the engine patch prevents new poison from being written.
Usage
Open any session and click Session Health Check in the Chat header. When the report is repairable and has at least one deterministic repair plan, the panel shows a Backup & Repair button and lists every seq chain to fix. Clicking it first confirms the target seqs and the pre-repair backup, then applies the repair in one batch and revalidates; ambiguous, live, changed-artifact, or otherwise blocked states never show a writable repair button.
Panel buttons:
…

