ciceroyang/dsh-doctor
One-command health check for DeepSeek Harness local environments
项目介绍Project Overview
dsh-doctor 是 DeepSeek Harness 本地环境的一键健康检查插件,零依赖。它检查 Node、pnpm、dsh、DSH_HOME、配置、会话日志、zstd、端口与重复包,并输出 pass/warn/fail/skip 及修复建议,支持 JSON 与 dsh-doctor/v1 契约。环境异常、会话日志读不了或插件加载失败时使用。注意退出码仅 CLI 入口生效,Node 版本阈值以仓库 engines 为准。
dsh-doctor is a zero-dependency one-command health check for local DeepSeek Harness environments. It inspects Node, pnpm, dsh, DSH_HOME, settings, profiles, session logs, zstd, port 3080, and duplicate packages, reporting pass/warn/fail/skip with actionable fixes and optional JSON or dsh-doctor/v1 envelope output. Use it when setup, plugins, sessions, or logs misbehave. Caveat: exit codes apply only to the CLI entry point, and Node thresholds follow the repo engines.
请帮我了解并安装插件:【dsh-doctor】【https://github.com/ciceroyang/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 github:ciceroyang/dsh-doctor
把 ciceroyang/dsh-doctor 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-doctor
One-command health check for DeepSeek Harness local environments. A zero-dependency implementation of the community-requested "dsh doctor" idea (official Discussions #1719).
Usage
npx github:ciceroyang/dsh-doctor
node doctor.mjs --json # checks array
node doctor.mjs --json --envelope # dsh-doctor/v1 envelope (community contract)
node doctor.mjs --profile <dir> # target a specific DSH_HOME/directory
Community contract (dsh-doctor/v1)
Aligned with the zoahdev and moonquake2004 implementations (official discussion #1719):
- envelope:
{ schema, generatedAt, profile, exitCode, summary{pass,warn,fail}, ok, checks:[{name,status,detail}] } - status literals:
pass/warn/fail/skip(r5; theokliteral is retired, the top-level boolean staysok) - exit codes: 0 all-pass / 1 any warn / 2 any fail (CLI entry point only, see #1719 r4/r5)
- check-name vocabulary (v1.1 draft, see #1719):
node/pnpm/dsh/ds_home/profiles/sessions/log_health/dedupe/port— this implementation already uses the core names - the
nodethreshold aligns with the repo-declared engines (^22.19.0 || >=24.0.0, root package.json); #2259 asks to propagate it into the published manifests - vocabulary r5 compatible — drafted by @ciceroyang (this repo), reviewed by @sjh9714 (dsh-win32) and @moonquake2004
- the full frozen spec lives at docs/contract-v1.md (English) / docs/contract-v1.zh.md (中文)
Checks
- node version (>=18 usable; >=22.15 required for historical session-log reading)
- pnpm presence (dsh plugin depends on it)
- dsh on PATH
- DSH_HOME / settings.yaml existence and writability (with sudo-ownership hint)
- profile manifest integrity (per-profile bundle counts, corrupt ones flagged)
- session log count (multi-frame zstd health)
- built-in zstd availability
- port 3080 availability
- duplicate critical packages (multiple dsh-tools/dsh-skill/cordis copies = tool-scheduling crash risk, #1849)
- session-log health sampling (multi-frame zstd frame scan + full decode — the differentiating check)
Every check reports ok / warn / fail with an actionable fix.
Quick answers doctor encodes
- pnpm not found on PATH → npm i -g pnpm (mirror for restricted networks)
- "cannot save confirmation state" toast → settings.yaml not writable, fix ownership
- plugin tree failed to load → locate the entry via --dump-config, verify with a manual node import
- historical sessions unreadable → Node < 22.15 has no built-in zstd
References
- Proposal: official Discussions #1719
- Field guide with real pitfalls: https://github.com/ciceroyang/dsh-report-studio/blob/main/docs/tutorial-zh.md
nexu-io/open-design
freestylefly/awesome-gpt-image-2
anywhere-labs/dsh-desktop
walkinglabs/learn-harness-engineering
awesome-dsh-plugin/awesome-dsh-plugin
MemTensor/MemOS