DSH 环境诊断、分级修复与一键回滚,附带运行时自愈服务。
安装
# npm 包(预构建)
dsh plugin --profile web add @jorinyang/dsh-doctor
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:jorinyang/dsh-doctor
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
🩺 dsh-doctor
DeepSeek Harness 的私人医生
崩溃诊断 · 可逆修复 · 一键回滚 · 运行时自愈
English · README.en.md
崩溃报错,无法启动?
两行命令接住你的情绪,解决你崩溃的源头。
# ① 安装
dsh plugin --profile web add @jorinyang/dsh-doctor
# ② 修复
dsh-doctor
自带 CLI,安装自动注册到系统 PATH,直接执行即可。修复全程可逆,改坏了随时回滚。
💡 它是什么
DeepSeek Harness 没有内置 doctor 命令。当 DSH 崩溃、启动失败、或某个插件破坏了 profile 时,你只能对着报错干瞪眼,靠重启进程碰运气。
dsh-doctor 是 DSH 的第一款「诊断 + 修复 + 回滚」一体化工具,同时也是一个运行时自愈服务:
| 能力 | 形态 | 说明 |
|---|---|---|
| 🔍 诊断 | dsh_doctor 工具 / dsh-doctor CLI |
只读检查 9 大类,报告哪里坏了、为什么 |
| 🔧 修复 | dsh_doctor_fix 工具 / dsh-doctor fix |
分级修复,每个可逆改动都记录 undo 步骤 |
| ↩️ 回滚 | dsh_doctor_rollback 工具 / dsh-doctor rollback |
LIFO 逆序回滚,恢复到修复前 |
| ⚡ 运行时服务 | dsh-doctor Cordis 服务 |
DSH 存活时动态诊断、自愈、监控生命周期 |
✨ 为什么选择它
🎯 两行命令,救活崩溃的 DSH
不需要读懂报错,不需要手改配置文件:
dsh-doctor # 先诊断,看问题出在哪
dsh-doctor fix # 再修复,自动处理
↩️ 修复可逆,敢改才敢修
每次修复都会生成一个 journal,记录每个改动的 undo 步骤。改坏了?一条命令回到解放前:
dsh-doctor rollback # 回滚最近一次修复
dsh-doctor rollback --list # 列出所有修复日志
dsh-doctor rollback --id <id> # 回滚指定日志
⚡ 运行时自愈,DSH 活着也能调
不是只能「停机修复」。dsh-doctor 通过 Cordis 原生能力接入运行时:
ctx.provide('dsh-doctor')— 暴露诊断/修复/回滚 API 给其他插件ctx.on('internal/status')— 响应式监控插件生命周期,检测 FAILED 自动告警ctx.effect()— 可逆效应,卸载无残留
🌍 跨平台,开箱即用
安装后自动注册到系统 PATH,Windows / macOS / Linux / fish 全覆盖,无需手动配置。
🚀 快速开始
方式一:DSH 插件(Agent 内使用)
# 从 npm 安装
dsh plugin --profile web add @jorinyang/dsh-doctor
# 重启 dsh web
dsh web
安装后,在对话中告诉 agent:
运行 dsh_doctor # 诊断
用 safe 范围运行 dsh_doctor_fix # 修复
运行 dsh_doctor_rollback # 需要时回滚
方式二:全局 CLI(命令行直接使用)
npm install -g @jorinyang/dsh-doctor
# 或
npx @jorinyang/dsh-doctor
演示
$ dsh-doctor diagnose --profile web
DSH Diagnostic Report (profile: web, port: 3080)
DSH home: ~/.dsh
[OK] Node.js v24.15.0
[OK] pnpm 11.9.0
[OK] DSH 0.1.0-rc.6
[OK] DSH home exists
[OK] profile dir exists: web
...
[XX] bundle missing: some-broken-plugin
fix: Run pnpm install in profile dir
48 pass 0 fail 3 warn
✓ No blocking issues found; DSH should start normally.
📖 命令速查表
| 命令 | 说明 | 别名 |
|---|---|---|
dsh-doctor |
只读诊断(默认) | diagnose / check |
dsh-doctor fix |
修复(可回滚) | repair |
dsh-doctor rollback |
回滚(LIFO) | undo |
dsh-doctor rollback --list |
列出修复日志 | journals / list |
dsh-doctor setup |
注册到系统 PATH | install / register |
通用选项
| 选项 | 说明 | 默认 |
|---|---|---|
--profile <name> |
DSH profile 名称 | web |
--port <number> |
Web 端口 | 3080 |
--scope <level> |
safe / deps / full | safe |
--id <id> |
回滚目标 journal id | 最近一次 |
-h, --help |
帮助 | |
-V, --version |
版本 |
修复范围(scope)
| 范围 | 动作 | 风险 |
|---|---|---|
safe ⭐ |
创建缺失目录/文件;修复 allowBuilds 占位符 | 🟢 低 — 仅文件/配置 |
deps |
safe 全部 + pnpm install --fix-lockfile |
🟡 中 — 网络 + 依赖 |
full |
deps 全部 + 停止残留进程(健康时跳过) | 🔴 较高 — 进程终止 |
🏗️ 工作原理
dsh-doctor 对齐 DeepSeek Harness / Cordis 的「时空可组合(Spatiotemporal Composability)」范式:
flowchart LR
subgraph CLI["🔧 dsh-doctor CLI(离线)"]
D[诊断]
F[修复]
R[回滚]
end
subgraph Runtime["⚡ 运行时服务(在线)"]
SVC[dsh-doctor 服务]
WATCH[生命周期监控]
end
DSH["🖥️ DeepSeek Harness"]
D -->|发现问题| F
F -->|记录 journal| R
R -->|LIFO 恢复| DSH
F -->|可逆改动| DSH
SVC -->|diagnose/repair/rollback| DSH
WATCH -->|internal/status| DSH
时间可组合(Temporal)— 修复可逆
每个改动都记录反向撤销函数,回滚按 LIFO 逆序执行:
- 覆盖文件 → 保存原始内容,回滚时恢复
- 新建文件/目录 → 回滚时删除(仅空目录)
- 系统边界操作(pnpm install、杀进程)→ 标记「需手动补偿」
空间可组合(Spatial)— 运行时自愈
通过 Cordis 原生能力声明依赖、响应变化:
ctx.provide— 提供服务ctx.on— 响应式监听ctx.effect— 可逆效应
🆚 为什么不用传统方案
| 传统「重启大法」 | 手动改配置 | dsh-doctor | |
|---|---|---|---|
| 诊断 | ❌ 靠猜 | ⚠️ 靠经验 | ✅ 9 大类自动检查 |
| 修复 | ❌ 杀进程重来 | ⚠️ 手改易错 | ✅ 分级自动修复 |
| 回滚 | ❌ 无 | ❌ 无 | ✅ 一键 LIFO 回滚 |
| 运行时调整 | ❌ 只能重启 | ❌ 停机 | ✅ Cordis 动态服务 |
| 跨平台 | — | — | ✅ Win/macOS/Linux/fish |
❓ FAQ
Q:DSH 崩溃到连插件都加载不了,还能用吗?
能。dsh-doctor 是自包含 CLI,不依赖 DSH 运行。DSH 崩了也能直接 dsh-doctor fix。
Q:修复会破坏我的配置吗?
不会。每个可逆改动都先记录 undo 步骤,改坏了 dsh-doctor rollback 一键恢复。
Q:safe / deps / full 怎么选?
先用 safe(仅文件/配置,零风险)。没解决再升级 deps(重装依赖),最后 full(清理进程)。
Q:它和 DSH 自带的命令冲突吗?
不冲突。dsh-doctor 是独立插件 + 独立 CLI,不修改 DSH 核心。
🤝 贡献
欢迎提 Issue、PR。Bug 报告请附带 dsh-doctor diagnose 的输出。
📄 许可证
无痛折腾 DeepSeek Harness 🎉
如果你觉得有用,点个 ⭐ Star 支持一下吧!
链接
同类插件
strukto-ai/mirage#dsh★ 3431
把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Slack、Gmail、Notion、Postgres)而非宿主磁盘,支持按挂载点设置读/写/执行模式、按命令选择沙箱(进程内 monty、pyodide、quickjs;远程 docker、e2b、daytona),并可在虚拟终端中安装 CLI(git、gh、slack、linear、ntn、gws,或自行注册的程序树)作为命令头词。
hust-open-atom-club/oh-dsh★ 176
社区发行版:TUI、桌面端与 Web UI 统一体验,分层安装、一步到位。
Jayden-X-L/forkprobe★ 65
同一任务并行试跑多个技能,对比结果选出最优。
vlln/plugin-registry★ 39
插件生态基建:浏览器面板管理官方 repository 插件(0 patch)+ make-dsh-plugin 插件开发引导技能。
forrestchang/dsh-multica-runtime★ 33
让 dsh 运行时跑在 Multica 上。
DietCokewithSugar/dsh-user-experience★ 18
帮你发现项目中可能存在的用户体验问题:自动走查 React/TypeScript 源码,定位问题并给出具体优化建议。