前言¶
如果你通過 Web 界面使用 DSH,大概率遇到過這樣的時刻:頁面卡死、無響應,或者剛裝完一個插件、改完一處配置,需要重啓進程才能生效。常規做法是回到終端,找到佔用 3080 端口的進程殺掉,再手動啓動 DSH,瀏覽器頁面還得自己刷新。
dsh-restart-web 把這套動作收斂成設置面板裏的一個按鈕:點擊後安全重啓整個 DSH 進程,瀏覽器約 5 秒後自動刷新重連,全程不用離開 Web 界面。DSH 的理念是「一切皆插件」,這類界面級的小功能正適合用插件來補齊。
下面介紹它的功能、安裝方式和工作原理。
這是什麼¶
dsh-restart-web 是 shaoyi1991 維護的一個 DSH 插件,MIT 協議,當前版本 1.0.0。它只做一件事:在 DSH Web 設置面板中添加「重啓」入口,點擊後安全重啓整個 DSH 進程。
從 package.json 看,它的 dsh.client 配置中 platform 爲 web,並注入 @deepseek-ai/dsh-client-runtime,是一個面向 Web 端的客戶端插件。
核心功能¶
1、在 DSH Web 設置面板添加「重啓」按鈕,點擊後安全重啓整個 DSH 進程,瀏覽器 5 秒後自動刷新重連。
2、跨平臺支持:macOS/Linux 使用 lsof + kill + 進程組逃逸,Windows 使用 netstat + taskkill。
3、重啓邏輯是獨立的 Node.js 腳本(lib/restart.js),以 detached 獨立進程啓動,不受 DSH 退出清理影響。
4、通過 process.execPath + process.argv[1] 獲取絕對路徑,不依賴 PATH,兼容通過 npx 安裝的 DSH。
5、重啓由 host 插件(lib/index.js)通過 POST /api/dsh-restart 觸發。
安裝與啓用¶
標準安裝命令:
dsh plugin --profile web add dsh-restart-web
也可以從 GitHub 安裝:
dsh plugin --profile web add github:shaoyi1991/dsh-restart-web
注意安裝後需要重啓一次 DSH 才能生效。之後在 Web UI 中打開 設置 → 重啓,就能看到並使用這個入口。
工作原理¶
先看整體流程:
Web 界面(設置 → 重啓)
│
▼ POST /api/dsh-restart
Host 插件(lib/index.js)
│
├── macOS/Linux: 用 bash set -m → 在新進程組中啓動 restart.js
└── Windows: 直接用 node → 啓動 restart.js(detached 模式)
│
├── 1. 等待 2 秒(讓 HTTP 響應正常返回)
├── 2. 殺掉佔用 3080 端口的進程
├── 3. 啓動新的 DSH:node bin.js web
└── 4. 退出(DSH 繼續運行)
點擊按鈕後,請求先發到 host 插件 lib/index.js 的 POST /api/dsh-restart,由它拉起重啓腳本 lib/restart.js。腳本會先等 2 秒讓 HTTP 響應正常返回,再殺掉佔用 3080 端口的進程,然後以 node bin.js web 啓動新的 DSH,最後自己退出,由新進程繼續服務。
有兩個設計點值得展開說一下。
爲什麼不直接調用 dsh 命令¶
DSH 通常通過 npx 安裝,在子進程的清潔環境中,dsh 並不在 PATH 上,直接調用會失敗。插件改用 process.execPath + process.argv[1] 拿到 Node 可執行文件和腳本的絕對路徑,不依賴 PATH,無論 DSH 是怎麼裝起來的都能正常重啓。
爲什麼需要 set -m¶
DSH 退出時會自動清理所有子進程組(kill(-pid, SIGKILL))。如果重啓腳本還留在原來的進程組裏,舊進程退出時會把它一起殺掉,重啓就無從談起。macOS/Linux 上,插件通過 bash set -m 把 lib/restart.js 放進一個新進程組,避開這層清理。Windows 沒有這個問題,直接用 detached 模式啓動重啓腳本即可。
適用場景與注意¶
適合的場景:
- DSH 卡死、無響應時快速恢復;
- 安裝新插件或修改配置後需要重新加載;
- 內存佔用過高,想通過重啓釋放。
注意:插件以當前 dsh 進程的權限運行,重啓動作會直接殺掉佔用 3080 端口的進程,並以 node bin.js web 重新啓動 DSH。安裝前建議先閱讀源碼和許可證(MIT),確認沒問題再裝。
結尾¶
dsh-restart-web 解決的問題很小,但足夠高頻:把「回終端找進程、kill、重啓、刷新頁面」變成設置面板裏點一下按鈕。如果你平時在瀏覽器裏使用 DSH,值得裝一個備着。
- GitHub:https://github.com/shaoyi1991/dsh-restart-web
- 社區目錄頁:https://www.skillhub.cn/plugins/shaoyi1991/dsh-restart-web (社區目錄爲獨立站點,與 DeepSeek、幻方無官方從屬關係)