astra3294/dsh-doctor
DeepSeek Harness 的确定性诊断与恢复
项目介绍Project Overview
DSH Doctor 是 DeepSeek Harness 的诊断与恢复插件,提供 Web 端修复按钮和独立 CLI。当 Web UI 可访问但对话循环中断时,宿主端恢复服务会尝试修复;当 Harness 启动失败时,CLI 通过启动探针捕获错误,并支持一键回滚到最近的健康检查点,便于插件开发者安全试验。请注意,依赖安装、禁用崩溃插件等操作需显式确认,且 Doctor 不会禁用关键救援条目。
DSH Doctor is a diagnostics and recovery plugin for DeepSeek Harness, providing a Web-side repair button and a standalone CLI. When the Web UI is reachable but the conversation loop is broken, a loopback host recovery service attempts repair. When Harness fails to boot, the CLI captures errors via a boot probe and supports one-click rollback to the last healthy checkpoint, letting plugin developers experiment safely. Note that dependency installation and disabling crash-causing plugins require explicit confirmation, and Doctor refuses to disable critical rescue entries.
请帮我了解并安装插件:【dsh-doctor】【https://github.com/astra3294/dsh-doctor】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add dsh-doctor
把 astra3294/dsh-doctor 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
DSH Doctor
Deterministic diagnostics and recovery for DeepSeek Harness.
DSH Doctor is the safety net for the two ways a Harness usually breaks itself: it cannot converse (the Web UI opens but the loop is broken), or it cannot start (boot fails after a config, dependency, or plugin change). When the Web UI still opens, the Doctor button calls a loopback-only Host recovery service. When Harness cannot start, the same engine runs as a standalone CLI — including a boot probe that captures the failure and a one-click reset to the last healthy checkpoint, so plugin developers can experiment and always get back to a working state.
DSH Doctor 0.2.0 targets
@deepseek-ai/dsh 0.1.0-rc.6. DeepSeek Harness is a developer preview; unknown versions are scanned in conservative read-only mode.
Install
Add Doctor to the Web profile:
dsh plugin --profile web add dsh-doctor
dsh --profile web
This installs one package with both Host and browser halves. It contributes:
- a persistent Doctor action beside Settings in the sidebar;
- an automatic recovery banner above the composer after a prompt or Agent failure;
- a full Doctor page in Settings with findings, checkpoints, and rollback;
- a floating emergency entry that appears in the frame overlay whenever the profile is broken, independent of the sidebar and conversation plugins.
If the Web UI cannot start:
npx dsh-doctor recover --profile web
CLI
# Scan one profile (offline and path-anonymized by default)
npx dsh-doctor scan
# Probe whether the Harness can boot and diagnose the failure from its output
npx dsh-doctor boot
# One-click recovery: reset configs to the healthy checkpoint, reconcile
# dependencies, then verify the boot again
npx dsh-doctor recover --profile web
npx dsh-doctor recover --profile web --yes # also apply confirmed actions
# Snapshot the current profile as a healthy recovery baseline
npx dsh-doctor checkpoint --profile web
# Start the Harness; diagnose automatically when it fails to boot
npx dsh-doctor launch --auto-recover
# Restore a checkpoint
npx dsh-doctor rollback <checkpoint-id>
recover runs the safe actions with zero confirmation, then verifies the result by booting the Harness when it was down. The exit status is 1 when errors remain (or boot verification fails), warnings return 0 unless --strict is used, and invalid arguments or internal failures return 2. JSON output is available with --json.
What v0.2.0 checks
- Node, platform, Harness version and profile discovery;
- profile manifest, bundle shape,
cordis.yml,cordis.patch.yml, and pnpm workspace syntax and permissions; - missing dependencies, duplicate bundles, and broken profile links;
- live Cordis plugin phases when called from the Web UI;
- boot failures via a real boot probe (port watch + captured output mapped to repair actions);
- session records (
session.jsonl.zstd) and storage caches for corruption; - recent local fatal/plugin-failure log markers;
- non-registry and external plugin sources (flagged, but never blocking recovery);
- model route/credential state and an optional, tiny, non-session probe that verifies the model actually answers.
Recovery
Every mutation follows the same transaction:
- Re-check the plan expiry and hashes of profile files.
- Create a private pre-repair checkpoint.
- Apply only selected actions.
- Run a fresh structural scan (and boot verification when the Harness was down).
- Roll back automatically when verification fails.
Safe one-click actions prepare Doctor state and reset the profile configuration to the latest healthy checkpoint. On a cold start with no healthy checkpoint, Doctor can synthesize minimal valid config files — after explicit confirmation, with the broken originals preserved in the pre-repair checkpoint. Dependency installation, disabling a boot-crashing plugin, quarantining a corrupt session file, and re-enabling a Doctor-disabled plugin require explicit confirmation. Doctor refuses to disable the connection, layout, settings, conversation, runtime, module-loader, or Doctor rescue entries.
Checkpoints are stored locally under $DSH_HOME/doctor/checkpoints/, with ten retained per profile and the newest healthy checkpoint always kept. They may contain exact copies of local configuration so that rollback is byte-accurate; they are never included in reports or uploaded. API keys are never printed, changed, or sent by Doctor.
See Recovery matrix and Security policy.
Development
Requires Node 24 and pnpm.
pnpm install
pnpm check
npm pack --dry-run
License
MIT
ruvnet/ruflo
amruthpillai/reactive-resume
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/colleague-skill
nocobase/nocobase
Tencent/WeKnora