前言¶
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