前言¶
在 DeepSeek Harness(DSH)裏改插件、動宿主配置時,經常需要整進程重啓才能生效。Windows 上退出再點快捷方式也能做到,但步驟分散;若從任務管理器結束進程,還可能撞上 Electron 的崩潰對話框,或留下不該出現的控制台窗口。下面介紹社區維護的客戶端插件 dsh-restart-button:在側欄左下角加「重新啓動」按鈕,用兩段式確認降低誤觸,並在重啓流程裏處理 job object、權限與窗口可見性等問題。需事先說明:僅支持 Windows,實現依賴 schtasks、wscript、taskkill 等系統機制。
這是什麼¶
dsh-restart-button(GitHub:yami0310/dsh-restart-button)由 yami0310 維護,在 SkillHub 插件目錄 歸類爲客戶端插件。它通過 Cordis 補丁向網頁側欄注入 UI,並向宿主註冊 POST /api/dsh-restart-button,在桌面端完成「結束當前實例 → 拉起新實例 → 等待 Web 就緒」,且助手進程結束後不常駐、不留控制台窗口。
DSH 生態強調「一切皆插件」;SkillHub 等目錄由社區維護,與 DeepSeek / 幻方無官方從屬關係。安裝前建議閱讀倉庫源碼與 MIT 許可證,並知曉插件以當前 DSH 進程權限運行。
核心功能¶
側欄按鈕與確認¶
左側欄底部會出現圓環箭頭按鈕。點第一次變爲「確認重啓?」;再在 3 秒內點第二次才真正觸發重啓。展開側欄時顯示文字,收成豎條時僅顯示圖標。設計上不一點即重啓:按鈕緊貼設置入口,誤觸會立即掐斷當前會話。
重啓鏈路(概要)¶
按鈕 ──POST──> 宿主半邊 ──schtasks /run──> 任務計劃服務
│
▼
wscript
│
▼
node 助手(helper.mjs)
助手會先結束 GUI 主進程(避免 renderer 先死觸發崩潰彈窗),再按鏡像名清理剩餘進程,最後 spawn 新 DSH 實例,並探測 Web 界面是否就緒。計劃任務名 DSHRestartButton 用於讓助手脫離 DSH 的 job object,避免父進程退出時助手被一併殺掉。
安全與併發¶
接口只接受本機同源:Host 須爲 127.0.0.1 / localhost / [::1],且 Origin(若有)須與 Host 一致。同一時刻只允許一次重啓在進行,重複請求返回 409。
安裝與啓用¶
資料中的安裝方式爲克隆倉庫後,用插件管理器以 link: 加載目錄(便於後續 git pull 更新):
git clone https://github.com/yami0310/dsh-restart-button.git
在 DSH 插件管理器中執行(將 <倉庫路徑> 換爲本地克隆目錄):
plugin_manager install_bundle target=link:<倉庫路徑>
插件管理器會把包名寫入 profile 的 dsh.profile.bundles。客戶端半邊會熱加載;宿主半邊需重啓一次 DSH 後路由與計劃任務邏輯才完整生效。package.json 標明版本 1.0.0,運行環境 Node >= 18,os: win32。
典型用法¶
- 按上一節完成安裝,並重啓 DSH 一次。
- 在側欄底部找到重新啓動按鈕;需要重啓時點兩次確認。
- 若只想看助手如何歸類進程、不寫死重啓,可在倉庫目錄使用自檢模式:
DSH_RESTART_DRYRUN=1 node lib/helper.mjs "<DSH 的 exe 路徑>"
Windows CMD:
set DSH_RESTART_DRYRUN=1
node lib\helper.mjs "C:\Program Files\DeepSeek Harness\DeepSeek Harness.exe"
日誌寫入 %USERPROFILE%\.dsh\restart-button.log,自檢時不會結束任何進程。
配置與環境變量¶
| 環境變量 | 作用 |
|---|---|
DSH_RESTART_DRYRUN=1 |
只自檢,不重啓 |
DSH_RESTART_NODE |
指定內置 node.exe 路徑;默認從 exe 同級 resources/runtime/... 與 ~/.dsh/dsh-runtimes/... 查找,都不存在時再設置 |
適用場景與注意¶
適合在 Windows 上長期使用 DSH、且經常因插件或宿主配置變更需要完整重啓桌面的用戶。不適合 macOS / Linux:README 明確寫明整包建立在 Windows 任務計劃與 wscript 之上。
常見「點了沒反應」多與計劃任務權限有關(DSH 常以管理員運行,任務須 /RL HIGHEST);倉庫 README 的「九個坑」表記錄了 job object、windowsHide、端口探測、ELECTRON_RUN_AS_NODE、busy 超時等細節,排查時可對照日誌 restart-button.log。
卸載:在插件頁停用 dsh-restart-button;若要刪除計劃任務:
schtasks /delete /tn DSHRestartButton /f
相關鏈接¶
- 插件目錄:https://www.skillhub.cn/plugins/yami0310/dsh-restart-button
- 源碼與說明:https://github.com/yami0310/dsh-restart-button
經過上面的步驟,側欄即可用可控的方式完成 DSH 桌面端重啓,而不必反覆走系統退出或任務管理器路徑。