DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

KDreamelf /

KDreamelf/dsh-phoenix

Verified

Keep DSH alive through plugin faults: attribute the crash, quarantine only the culprit row, leave providers untouched.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: master@167f06c2

dsh-phoenix · 不死鸟

一个插件坏了,不该让你整个 DSH 都坏掉。


它解决什么问题

用 DSH 的人迟早会装插件。装得越多,出事的概率越大——不是谁有恶意,很多时候就是作者写错了一行代码,或者两个插件撞在了一起。

出事之后通常是这样:界面打不开,或者报一段看不懂的英文堆栈,或者干脆一片空白。你不知道哪里错了,也不敢乱动,最后只能把插件全删了重来——连带着你辛苦配好的模型、接口地址、密钥,一起没了。

不死鸟就是为了这件事存在的。

出事时你看到的就是这个——它告诉你是哪个插件、什么错,以及三个都通向「能继续用」的选择:

崩溃页:查得出是哪个插件

它怎么保护你

出事的样子不一样,它管的方式也不一样。三种情况,三种应对。

判断标准只有两条:进程是不是要死了,以及能不能指出是哪个插件干的。

一、进程要死,而且查得出是谁

DSH 有个未捕获的异常,按默认行为会直接退出。不死鸟会拦住,不退出,然后给你一个页面,告诉你:

  • 是哪个插件出的问题(名字、图标、版本、装在哪里、是干什么的)
  • 具体什么错(完整技术细节全在)
  • 然后给你三个按钮
按钮 大白话
给个机会 把刚才临时停用的那个插件恢复回来,直接重启,看看是不是运气不好
停职 保持禁用,其它都留着,然后重启
开除 保持禁用,并且下次启动后把它彻底卸载干净

这里要说实话:为了让你不论点哪个都起得来,抓到这个插件的那一刻它就已经被临时停用了(写在 home 层,不动你的 profile)。所以「给个机会」不是什么都不做——它的作用正是把这个临时停用撤销,让插件照原样加载。三个按钮都不会让插件停在「被禁但没人知道」的状态。

然后 DSH 自己换一个新的干净进程重新跑起来。你点完按钮,等几秒,就能接着用。

注意它做了什么:它只动那一个出问题的插件。你的模型配置、你的接口地址、你另外十几个没问题的插件——一个字节都不碰。

二、进程要死,但查不出是谁

有时候错误深得离谱,栈里根本没有插件的信息,指不出是谁干的。

注意,这时候「查是哪个插件干的」这件事并没有放弃 —— 它只是在这一刻做不完。所以它不硬猜,也不乱禁,把两个选项摆给你:

按钮 大白话
再试一次 重启看看,也许这次就好了
进入复活模式(让 AI 查) 相当于安全模式:这一次启动不加载第三方插件,进去以后把原始报错丢给 AI,让它反查

这种时候长得是这样——注意它不假装知道是谁,而是把原始错误原样摆出来交给 AI:

崩溃页:查不出是哪个插件

三、进程活着,但你什么都干不了

这一种最阴——界面还在,可你发不出消息、建不了新会话。DSH 自己只会弹一句它的报错,然后你就卡在那儿了。

不死鸟会把这句报错换成它自己的对话框(是对话框,不是那种一闪就没的小提示):报错原文一字不改地摆在里面,下面两个按钮,和上面一样:

对话框:进程还活着,但已经不能对话

按钮 大白话
再试一次 刷新页面。也许真的只是抽风
进入复活模式 相当于安全模式:这一次启动不加载第三方插件,进去以后把报错丢给 AI

复活模式到底是什么

一句话:相当于 Windows 的安全模式。

开机的时候只加载最基本的组件,让你能进去把出问题的那颗驱动卸了;卸完了正常重启,一切照旧。

它有四个性质,每一个都不是可选的:

  1. 只这一次。 它不改你的 profile,也不改你的设置。关掉重开,就回到正常启动——不需要任何"退出来"的操作。
  2. 不碰你的供应商。 你的接口地址、密钥、模型列表,一个字节都不动。所以进去以后 AI 是活的、能回话,你才能让它帮你查。
  3. 不禁用它自己。 一个丢了监护仪的安全模式,第二次出事就没人救了。
  4. 只停第三方插件。 官方组件照常加载。停的是"你装的那些",因为按目前的证据,嫌疑只可能落在它们身上。

有一种情况供应商会消失:供应商是某个插件在运行时注册的。 那它跟着插件一起退场——这是插件自己的移除,不是不死鸟删的,而且只可能发生在插件被停用之后。你在设置里配的那些不在这个范畴。

进了复活模式,你就能正常对话了。把问题丢给 AI,让它帮你查。

这才是它真正的底气:不管 DSH 坏成什么样,你至少永远有一个能说话的地方。

为什么叫「不死鸟」

传说里的凤凰会烧成灰,然后从灰烬里重新站起来。

不是不会受伤,而是受伤之后还能活。

这个说法最早在路由器刷机圈里传开——机器刷坏了、变砖了,要有一层东西能把它救回来。后来大家就懂了:不是防止出事,是出事了不至于死。

DSH 现在的做法是反过来的。一个插件出事,它的处理方式是"把所有第三方插件全禁掉,把配置备份走,然后给你一个光秃秃的壳"。这能起来,但代价是你失去了一切。

不死鸟认为这个代价不该由你承担。

装了之后要做什么

什么都不用做。

放那儿就行。它自己会守着,平时完全不打扰你,不弹窗、不占资源、不影响任何正常使用。

它只在出事的时候出现一次。

标准复活流程

这是它存在的全部理由,一句话:

无论 DSH 坏成什么样,你至少要能开一个新会话,让 AI 帮你修。

具体是这样:

  1. 出事了。界面卡住、报错、或者干脆一片空白。
  2. 不死鸟把报错换成它自己的对话框——原来的错误一个字都不改,原样摆在里面。
  3. 对话框上有两个按钮:
    • 再试一次 —— 刷新页面。也许只是抽风。
    • 进入复活模式 —— 相当于安全模式:这一次启动不加载第三方插件,你的供应商和它自己都留着。
  4. 进了复活模式,你能正常对话。把问题丢给 AI,让它帮你查是哪个插件惹的祸。
  5. 查完、处理完,关掉重开,就回到正常启动。

为什么要你点按钮,而不是自动跳? 因为可能是误判。自动跳过去会消耗你的 token,也让你莫名其妙换了个界面。选择权在你手里——这也是它敢接管报错显示的原因。

复活模式为什么能救你? 它这一次只加载官方组件,所以第三方插件的问题不存在了;但你的模型、接口地址、密钥都还在,所以 AI 是活的、能回答的。这就是"能开一个新会话,让 AI 帮你修"的完整含义。

适合谁

给刚玩 AI 的人 —— 你不太懂什么是"插件冲突"、"未捕获异常",你只想安安静静地用。装它,然后忘掉它。真出事的时候,它会把选择摆在你面前,而且每个选项都能让你继续用下去。

给爱折腾的老手 —— 你知道 fail-loud 是什么意思,你也不想因为一个社区插件写错一行代码就把整个 profile 赔进去。它给你的是可归因、可撤销、可审计——所有判断都写进日志,每一次隔离都能一条命令撤回。

什么时候它会救不了你

诚实地说,有些情况任何插件都救不了:

  • 进程被系统直接杀掉(原生模块崩溃、内存耗尽)—— 那时 JS 已经不在运行了
  • 出问题发生得太早(在任何一个插件加载之前)—— 那是它还没上岗
  • 配置文件本身坏了、解析不了 —— 那种情况它自己都读不到配置

这些情况它不会假装能处理。它会把能记录的都记下来,留给你或者 AI 去查。

还有一个限制要说清楚:桌面版(Desktop)里,复活模式不能自动帮你另开一个窗口。 桌面版的 profile 由应用自己管理,CLI 也不能替它启动。所以在桌面上点那个按钮,它会老实告诉你「请手动关掉再重新打开」,而不是假装成功。

它也不会偷偷替你做决定。 唯一的自动动作是:抓到肇事插件时先把它临时停用(否则你连崩溃页都刷不出来),而这个动作会在页面上明写出来,并且可以用「给个机会」一键撤销。除了这一个,它不改你的配置、不动你的供应商、不卸载任何东西——那些都要你点按钮。

安装

dsh plugin --profile <你的 profile 名> add github:KDreamelf/dsh-phoenix

桌面端(Desktop)的 profile 由应用自己管理,命令行不能直接改,需要在应用内的插件管理界面安装。

装完重启一次 DSH 就生效了。不需要任何配置。

出事了怎么办

如果你看到了那个崩溃页面,说明它已经在工作了。

拿不准选哪个,就选**「停职」**——它最安全:只禁用出问题的那个,其它一切都不动。之后你想恢复,随时可以:

dsh-phoenix restore --all

想知道更多

  • 想了解它内部怎么工作 → 技术细节
  • 想自己验证一遍 → 验证步骤
  • 想贡献代码 → 开发说明

许可

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 167f06c2b996

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout