dsh-market 启动失败自救指南:DSH 打不开时如何一步步救回来
【免费下载链接】dsh-marketThe plugin market inside DeepSeek Harness — browse, search, one-click install · DSH 可视化插件市场项目地址: https://gitcode.com/gh_mirrors/ds/dsh-market
dsh-market 是 DSH(DeepSeek Harness)内的插件市场。当某个插件导致dsh web启动失败、界面彻底打不开时,它的恢复面板会接管原地址、把问题插件标红取消勾选,点一下"保存并重启"即可自救,全程不用碰终端、不用手改配置文件。
救援范围:哪些启动失败能救、哪些救不了
先说清楚它能兜住什么。这套能力的前提是:你已经在 DSH 里装好了 dsh-market,并且这次故障是"点了一键重启之后宿主没能起来"。它专门处理那类最折磨人的场景——DSH 的启动是全有全无的,一个插件加载失败,整个dsh web进程直接退出,市场自己的界面也随宿主一起消失,浏览器停在原地址刷新只会超时。
它不管这些:DSH 因缺依赖、磁盘满、内存不足等系统级问题起不来(不是插件组合导致的);部署由 systemd 当作服务主进程托管的情况(此时重启会连带杀掉整个服务)。
对照下面的典型症状,判断你的情况能不能救:
| 症状 | 意味着什么 | 本能力能否救它 |
|---|---|---|
| 点了一键重启,原地址刷新一直超时 | 替代进程没起来,恢复服务器已接管该地址 | 能,打开就是恢复面板 |
| 浏览器停在原地址、完全打不开 | 宿主进程已退出,原地址暂时没人应 | 能,重新访问同一地址即可 |
| 页面或日志提示"N entries did not activate" | 某插件加载/激活失败,进程整体退出 | 能 |
| DSH 因缺依赖 / 磁盘满起不来 | 与插件组合无关的系统级故障 | 不能,得先解决环境问题 |
| 部署由 systemd 当主进程托管 | 重启会连带杀掉整个服务 | 不能,交给进程管理器 |
救援机制:DSH 启动失败后,是谁接管了这个地址
这套能力平时完全隐身,只有"出险"时才登场。用"谁做了什么"的视角走一遍链路:
- 你点一键重启。src/restart.ts 的脱离终端助手拉起了一个新的 DSH 进程,并先把"现场信息"存盘——要监听哪个地址、这次装哪些插件、日志写在哪。这些信息在宿主退出后依然还在。
- 新进程如果 45 秒内没占到端口,助手判定这次没起来,把任务交给恢复服务器(src/recovery.ts)。
- 恢复服务器接管你原本就在用的那个地址。它监听的是浏览器本来就在不停轮询的同一个 URL,于是那个标签页收到的不再是"超时",而是一份可以点的恢复界面;就算标签页已经关掉,重新访问同一地址也会渲染一份独立页面。
- DSH 正常启动时,这一切都不会出现。端口一直被真正的宿主占着,恢复服务器根本没有出场机会——它只在救急时才现身。
这套机制带来三个实用特性:
- 🛟自动接管:接管的正是你一直在访问的地址,不用换 URL、不用找新入口。
- 独立页面:标签页丢了,重新访问原地址也能打开一份独立恢复页。
- 只读安全:它从不自己启动 DSH,只写 profile 自己的补丁层,不碰网络、不碰其它文件。
跟着做就能自救:从标红到一键重启
第一步:找到被标红的问题插件
你会看到:恢复面板顶部有本次启动的报错摘要,下面是一段可折叠的原始日志;再往下是插件清单,被 DSH 点名的插件整行标红、并且已经替你取消勾选,红色条目下方还有一行小字写明了报错原因。
你要做的:核对红色条目是不是日志点名的那几个。宿主基础设施类插件会显示"不能关闭"——关掉它们会连根拔起整条启动链,这一项不用你操心。
做完会发生:你不需要猜是谁的问题。标红的是日志里被明确指认的插件,不是面板的臆测,红色就代表"本次启动的日志写到了它"。
第二步:勾选下次要启用的插件
你会看到:清单规则很简单——勾选 = 下次启动启用。被点名的插件已经替你做成了未勾选状态。
你要做的:按自己的判断调整勾选。比如怀疑是插件 A 和插件 B 配合出错,就把两个都取消。面板底部会实时预览"将要新增哪些、停用哪些"。
做完会发生:预览即所得,你看到的改动和点按钮后实际写入的完全一致,不会多也不会少。
第三步:保存并重启,看结果与兜底
你会看到:面板底部有一个"保存并重启"按钮。
你要做的:点它。
做完会发生:你的选择被写进与市场热开关同一套cordis.patch.yml停用行——这是 DSH 官方的持久化补丁层,不是临时措施,重启后依然生效;随后恢复服务器释放端口、自动重新拉起 DSH。
结果与兜底:页面会持续观察这次启动。DSH 起来后,它会自动刷新回正常界面;如果又失败了,它会带着新的报错回到恢复面板,让你基于第二次错误继续排查。这就是它的兜底逻辑——不是一次性的,而是"改一次、试一次、再看一次"的循环,直到组合能被 DSH 接受为止。
细节与常见误判:这几个地方最容易踩坑
"标签页丢了、恢复页也没了,是不是全完了?"不会。恢复服务器有闲置超时(默认 15 分钟),超时会自动释放端口退出,把地址还给真正的宿主。重新访问原地址,或重新运行一次dsh web即可;若仍起不来,恢复面板会再次出现。
"我是用 systemd / pm2 / launchd 托管的,还能点吗?"当 DSH 是systemd 服务的主进程时,一键重启按钮会自动隐藏——因为重启会连带杀掉整个服务。pm2 和 launchd 不会被自动检测,需要你手动在设置 → 插件 → 插件配置里关掉"允许一键重启",把重启交给进程管理器。
"报错了但说不清是哪个插件,是不是就救不了?"救得了,只是要你多一步。面板会如实显示"没有解析到具体是哪个插件",并给出 DSH 原始输出。这时用导出日志按钮生成脱敏日志(家目录路径和密钥形状都已打码),贴出去能极大加快排查。
"它会不会偷偷乱改我的配置?"不会。恢复流程只写profile 自己的补丁层(cordis.patch.yml,停用载体还会同步dsh.profile.bundles),不碰网络、不碰其它文件。而且写入是"全有或全无":中途任何一行没写成功,它会拒绝重启并回到面板告诉你哪些没写成——宁可不启动,也不启动一个"猜出来的"组合。
"为什么我根本看不到恢复面板?"因为它只在"点过一键重启、且替代进程没起来"时才存在;DSH 正常启动时它压根不会出现。如果 dsh-market 本身没装好,也自然不会有这个面板。
"它监听的是外网地址吗?会不会被外人访问到?"不会。恢复服务器只在本机环回地址上监听,且每个写操作都强制同源校验,跨站请求会携带不同的 Origin,被直接拒绝。
可追溯来源
- src/recovery.ts:恢复服务器核心——解析启动失败日志、接管原地址、写入插件选择并循环重试。
- src/restart.ts:一键重启助手——拉起替代进程,失败时把现场移交给恢复模块。
- src/client/RecoveryPanel.tsx:市场页面内的恢复面板组件(红色标记、勾选清单、保存并重启)。
- README.zh.md:完整功能清单,含"重启没起来时的恢复"一节。
下次 DSH 因为某个插件起不来,别急着去翻配置文件。dsh-market 的恢复面板已经替你接好了这条线:看红色标记、取消勾选、点一下重启。你装的不只是一个市场,还是一份随叫随到的兜底保险。🛟
【免费下载链接】dsh-marketThe plugin market inside DeepSeek Harness — browse, search, one-click install · DSH 可视化插件市场项目地址: https://gitcode.com/gh_mirrors/ds/dsh-market
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考