dsh-phoenix · 不死鸟
一个插件坏了,不该让你整个 DSH 都坏掉。
它解决什么问题
用 DSH 的人迟早会装插件。装得越多,出事的概率越大——不是谁有恶意,很多时候就是作者写错了一行代码,或者两个插件撞在了一起。
出事之后通常是这样:界面打不开,或者报一段看不懂的英文堆栈,或者干脆一片空白。你不知道哪里错了,也不敢乱动,最后只能把插件全删了重来——连带着你辛苦配好的模型、接口地址、密钥,一起没了。
不死鸟就是为了这件事存在的。
出事时你看到的就是这个——它告诉你是哪个插件、什么错,以及三个都通向「能继续用」的选择:

它怎么保护你
出事的样子不一样,它管的方式也不一样。三种情况,三种应对。
判断标准只有两条:进程是不是要死了,以及能不能指出是哪个插件干的。
一、进程要死,而且查得出是谁
DSH 有个未捕获的异常,按默认行为会直接退出。不死鸟会拦住,不退出,然后给你一个页面,告诉你:
- 是哪个插件出的问题(名字、图标、版本、装在哪里、是干什么的)
- 具体什么错(完整技术细节全在)
- 然后给你三个按钮
| 按钮 | 大白话 |
|---|---|
| 给个机会 | 把刚才临时停用的那个插件恢复回来,直接重启,看看是不是运气不好 |
| 停职 | 保持禁用,其它都留着,然后重启 |
| 开除 | 保持禁用,并且下次启动后把它彻底卸载干净 |
这里要说实话:为了让你不论点哪个都起得来,抓到这个插件的那一刻它就已经被临时停用了(写在 home 层,不动你的 profile)。所以「给个机会」不是什么都不做——它的作用正是把这个临时停用撤销,让插件照原样加载。三个按钮都不会让插件停在「被禁但没人知道」的状态。
然后 DSH 自己换一个新的干净进程重新跑起来。你点完按钮,等几秒,就能接着用。
注意它做了什么:它只动那一个出问题的插件。你的模型配置、你的接口地址、你另外十几个没问题的插件——一个字节都不碰。
二、进程要死,但查不出是谁
有时候错误深得离谱,栈里根本没有插件的信息,指不出是谁干的。
注意,这时候「查是哪个插件干的」这件事并没有放弃 —— 它只是在这一刻做不完。所以它不硬猜,也不乱禁,把两个选项摆给你:
| 按钮 | 大白话 |
|---|---|
| 再试一次 | 重启看看,也许这次就好了 |
| 进入复活模式(让 AI 查) | 相当于安全模式:这一次启动不加载第三方插件,进去以后把原始报错丢给 AI,让它反查 |
这种时候长得是这样——注意它不假装知道是谁,而是把原始错误原样摆出来交给 AI:

三、进程活着,但你什么都干不了
这一种最阴——界面还在,可你发不出消息、建不了新会话。DSH 自己只会弹一句它的报错,然后你就卡在那儿了。
不死鸟会把这句报错换成它自己的对话框(是对话框,不是那种一闪就没的小提示):报错原文一字不改地摆在里面,下面两个按钮,和上面一样:

| 按钮 | 大白话 |
|---|---|
| 再试一次 | 刷新页面。也许真的只是抽风 |
| 进入复活模式 | 相当于安全模式:这一次启动不加载第三方插件,进去以后把报错丢给 AI |
复活模式到底是什么
一句话:相当于 Windows 的安全模式。
开机的时候只加载最基本的组件,让你能进去把出问题的那颗驱动卸了;卸完了正常重启,一切照旧。
它有四个性质,每一个都不是可选的:
- 只这一次。 它不改你的 profile,也不改你的设置。关掉重开,就回到正常启动——不需要任何"退出来"的操作。
- 不碰你的供应商。 你的接口地址、密钥、模型列表,一个字节都不动。所以进去以后 AI 是活的、能回话,你才能让它帮你查。
- 不禁用它自己。 一个丢了监护仪的安全模式,第二次出事就没人救了。
- 只停第三方插件。 官方组件照常加载。停的是"你装的那些",因为按目前的证据,嫌疑只可能落在它们身上。
有一种情况供应商会消失:供应商是某个插件在运行时注册的。 那它跟着插件一起退场——这是插件自己的移除,不是不死鸟删的,而且只可能发生在插件被停用之后。你在设置里配的那些不在这个范畴。
进了复活模式,你就能正常对话了。把问题丢给 AI,让它帮你查。
这才是它真正的底气:不管 DSH 坏成什么样,你至少永远有一个能说话的地方。
为什么叫「不死鸟」
传说里的凤凰会烧成灰,然后从灰烬里重新站起来。
不是不会受伤,而是受伤之后还能活。
这个说法最早在路由器刷机圈里传开——机器刷坏了、变砖了,要有一层东西能把它救回来。后来大家就懂了:不是防止出事,是出事了不至于死。
DSH 现在的做法是反过来的。一个插件出事,它的处理方式是"把所有第三方插件全禁掉,把配置备份走,然后给你一个光秃秃的壳"。这能起来,但代价是你失去了一切。
不死鸟认为这个代价不该由你承担。
装了之后要做什么
什么都不用做。
放那儿就行。它自己会守着,平时完全不打扰你,不弹窗、不占资源、不影响任何正常使用。
它只在出事的时候出现一次。
标准复活流程
这是它存在的全部理由,一句话:
无论 DSH 坏成什么样,你至少要能开一个新会话,让 AI 帮你修。
具体是这样:
- 出事了。界面卡住、报错、或者干脆一片空白。
- 不死鸟把报错换成它自己的对话框——原来的错误一个字都不改,原样摆在里面。
- 对话框上有两个按钮:
- 再试一次 —— 刷新页面。也许只是抽风。
- 进入复活模式 —— 相当于安全模式:这一次启动不加载第三方插件,你的供应商和它自己都留着。
- 进了复活模式,你能正常对话。把问题丢给 AI,让它帮你查是哪个插件惹的祸。
- 查完、处理完,关掉重开,就回到正常启动。
为什么要你点按钮,而不是自动跳? 因为可能是误判。自动跳过去会消耗你的 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
No comments yet. Be the first to write one.