dshbase

插件目录 / Developer / dsh-session-repair

dsh-session-repair

未验证 Zn-Dk

✓ 持续维护 基于 3 个官方 DSH 包

查看 GitHub ↗ ← 返回插件目录

1Stars
0Forks
0未关闭 issue
语言
2026-08-24最近推送
跨平台平台

功能简介

DSH Web 会话诊断、可信备份与一键安全修复插件。

我们的评价
未验证 — 尚未实测

DSH Web 会话诊断、可信备份与一键安全修复插件。 尚未验证——请自行安装测试。

「未验证」表示我们的自动化 CI 尚未安装过该插件。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。

你是插件作者? 想拿到「已验证」标签——提交你自己的验证证据(截图、日志或短视频),我们审核通过后即改为「已验证」。

提交验证证据 ↗

README

dsh-session-repair

English | 中文

A DSH Web plugin for session diagnosis, trusted checkpoints, pre-repair backups, and safe repair.

Repairable: backup & repair Repaired session

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:

  • Refresh: re-reads the current session artifact and updates the report.
  • Copy Report: copies the diagnostic JSON to the clipboard.
  • Export Report: downloads the diagnostic report as a JSON file.
  • Restore Pre-Repair: shown only when the session is repairable/blocked and a pre-repair backup exists; one-click rollback to the state before the most recent repair.
  • Clear Backups: manually clears safety backups.
  • Backup & Repair: shown only when the report is repairable and a deterministic repair plan exists.

Agent tool (model-invoked)

The plugin registers a model-invokable tool dsh_session_repair. It is not user-triggered manually; the agent decides when to call it:

  • Arguments: sessionId (optional; defaults to the current session)
  • Returns: a structured diagnostic report (severity / checks / repairPlans / maxSeq / eventCount, etc.)

Typical usage:

  1. In a healthy session, tell the agent: "diagnose the history-unavailable session session-xxxx" — the agent calls dsh_session_repair with the old sessionId.
  2. In the current session, tell the agent: "health-check the current session" — the agent calls it without sessionId.

Note: this tool is read-only diagnosis; it never repairs. Repair still requires the Session Health Check panel in the header.

Safety boundary

The Host reads raw storage first, then decides whether to call engine display APIs. The Client never touches ~/.dsh directly and cannot submit arbitrary JSON patches. Repair uses a batchId and an artifact fingerprint, always creates a pre-repair backup before repairing, and atomically replaces only after revalidation. Multiple independent empty-ID chains are fixed in one batch; ambiguous chains, zstd damage, changed files, and live/appending sessions are never written. Live sessions are detected via ctx.get('sessions') / ctx.get('agents'); their unclosed turn/step are normal appending states and are only recorded as info.

Plugin-owned data lives under ~/.dsh/session-repair/, including backups and audit. External ~/.dsh/backup-sessions-* directories are used only as legacy forensics/comparison sources and are not auto-restored by default.

Current implementation status

The repository includes raw zstd/JSONL diagnosis, tool-call ID checks, deterministic repair plans, checkpoint/pre-repair backup writes, backup listing/comparison, report export, RPC, the Agent tool, a header report panel, and a bundled Skill. All endpoints are implemented or explicitly return not-implemented; nothing pretends to succeed.

Release & listing

Skill

The bundled Skill is published at skills/dsh-session-repair/SKILL.md and registered by the Host runtime; it shares the plugin name but belongs to a different registry. It is not published separately, does not use a submodule, and is not symlinked by default.

安装

🧩 让 Agent 自动装(推荐)

装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:

dsh plugin add dshbase-catalog

然后对 agent 说「帮我装 dsh-session-repair」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包

该插件是 GitHub 源码(未发 npm)——直接从仓库装:

Web profile:

dsh plugin --profile web add github:Zn-Dk/dsh-session-repair

Headless(CLI)profile:

dsh plugin --profile headless add github:Zn-Dk/dsh-session-repair

实测报告

尚未 L3 验证——若已跑过,见下方失败备注。

状态:pending · 最近测试 2026-08-26
备注:验证: runtime-fail 浏览全部待验证失败 →
安全:尚未扫描——我们的每日静态扫描将很快覆盖它。

分享徽章

Developer 里更多

浏览全部 7789 个插件 →