dsh-reloader:DSH 的 Web 界面一鍵重啓插件

前言

DSH 的 profile bundle 插件安裝或更新後,需要重啓 dsh web 進程才能生效。手動操作通常是先停止當前 web 進程,再重新運行 dsh web,最後刷新瀏覽器。

dsh-reloader 將這一步封裝成 DSH 可調用的 dsh_reload 工具,用於在插件變更後自動重啓 web 界面,減少手動 Ctrl+C 的操作。

這是什麼

lin-cheng-lab/dsh-reloader 是一個 DSH 插件,目標是減少安裝或更新插件後的手動重啓成本。它通過 dsh_reload 工具重啓監聽 3080 端口的 dsh web 進程,使新的插件變更能夠在刷新頁面後生效。

資料中標註的許可證爲 MIT。

核心功能

下面介紹資料中明確給出的能力:

  • 安裝或更新插件後,向 DSH 說“幫我 reload 一下”,即可觸發重啓流程。
  • 調用 dsh_reload 後,6 秒後進程自動重啓,頁面刷新即恢復。
  • 通過 lsof 按 3080 端口定位當前 dsh web 進程,再用 ps 校驗命令行包含 dsh 後執行 kill。
  • 等待端口釋放,最多 15 秒。
  • 使用 nohup 重新啓動 dsh web,日誌寫入 ~/.dsh/web.log。
  • 通過 ctx.shell 啓動後臺 detach 進程執行重啓,工具調用後立即返回。

安裝與啓用

先安裝到資料示例使用的 web profile:

dsh plugin --profile web add "github:lin-cheng-lab/dsh-reloader"

如果從本地源碼安裝:

dsh plugin --profile web add "file:/path/to/dsh-reloader"

首次使用 dsh_reload 工具需要一次手動重啓。之後,再執行 reload 流程即可自動重啓。

已覈實資料僅示例 --profile web,未說明其他 profile 的適用性。

典型用法

安裝或更新插件後,可以向 DSH 說:

幫我 reload 一下

資料給出的執行順序如下:

1、等待 6 秒。
2、用 lsof 按 3080 端口定位當前 dsh web 進程,並用 ps 校驗命令行包含 dsh,再 kill。
3、等待端口釋放,最多 15 秒。
4、用 nohup 重新啓動 dsh web,日誌寫入 ~/.dsh/web.log。

完成後刷新頁面即可。

若工具報錯,仍可手動重啓:在終端按 Ctrl+C 停止當前進程,然後運行:

dsh web

安全邊界與排查

  • 只 kill 監聽 3080 且命令行包含 dsh 的進程。
  • 隻影響監聽 3080 的 dsh web 進程,不碰其他程序。
  • 重啓失敗時,可查看日誌:
~/.dsh/web.log
  • 插件會以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。

開發依賴

如果需要本地開發,資料給出的命令是:

npm install --legacy-peer-deps
npm run build

第一條用於安裝 typescript 並跳過未發佈的 @deepseek-ai peer 依賴;第二條用於執行構建。

類型解析依賴本機 DSH 安裝中的 @deepseek-ai/cordis 與 @deepseek-ai/dsh-tools。資料列出的 peer 依賴爲:

@deepseek-ai/cordis ^4.0.1
@deepseek-ai/dsh-tools ^0.1.0-rc.6

結尾

dsh-reloader 解決的是很具體的問題:插件安裝或更新後,不再需要手動停止並重新運行 web 進程。

當前資料未提供目錄頁 URL,GitHub 倉庫地址如下:

https://github.com/lin-cheng-lab/dsh-reloader

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜