dsh-desktop-quick-actions:DSH 桌面側欄底部的重啓與充值快捷按鈕

前言

DeepSeek Harness(DSH)桌面版在側邊欄底部可以掛客戶端插件,把常用操作放在界面裏而不是記命令或翻菜單。重啓客戶端、打開 DeepSeek 充值頁是兩類高頻需求;在 Windows 上若用 taskkill 再 spawn 可執行文件的方式重啓,往往還會彈出一個控制台窗口,關掉窗口後新進程也可能被一併帶走。下面介紹社區插件 dsh-desktop-quick-actions(維護者 penghao73551,分類:客戶端),它在側欄底部提供兩個圓形按鈕,分別處理「無控制台窗口的重啓」和「在系統瀏覽器打開充值頁」。

這是什麼

dsh-desktop-quick-actions 是面向 DSH desktop profile 的客戶端插件(npm 包名同插件 id,當前版本 1.1.0,MIT 許可證)。它在 DSH 桌面側邊欄底部渲染兩個圓按鈕:

  • Restart:關閉當前應用並再次啓動,且不會出現控制台窗口。
  • Top up:在系統默認瀏覽器中打開 DeepSeek 充值頁。

重啓邏輯依賴 Windows WMI,因此 Restart 僅支持 Windows 10/11;Top up 在桌面應用能運行的環境下均可使用。插件需 Node 20+,並與提供 webServer 的 DSH 桌面宿主配合(README 寫明兼容 DSH desktop 0.2.1-rc.* 及更高版本)。

目錄頁:https://www.skillhub.cn/plugins/penghao73551/dsh-desktop-quick-actions
源碼與說明:https://github.com/penghao73551/dsh-desktop-quick-actions

爲什麼需要專門的重啓實現

README 說明:最直白的實現是幾行 taskkill 加 spawn(exe),在 Windows 11 上容易表現爲:WMI 創建的 console 子進程被交給 Windows Terminal,SW_HIDE 與 -WindowStyle Hidden 對其無效,出現黑色終端窗口;用戶關閉該窗口會向同一控制台上的子進程發送 CTRL_CLOSE_EVENT,剛拉起的 DSH 桌面也會在數秒內退出,且日誌裏不一定有崩潰信息。

本插件用兩層機制規避(一層不夠):

層級 做法 目的
啓動器 Invoke-CimMethod Win32_Process Create 啓動 wscript.exe,運行生成的 .vbs,內部 WScript.Shell.Run cmd, 0, False wscript.exe 爲 GUI 子系統,不分配控制台,Terminal 無從接管
應用啓動 同樣通過 WMI Win32_Process Create 啓動 DSH 可執行文件 新進程由 WmiPrvSE.exe 持有,不繼承控制台,關終端窗口不會影響應用

WMI 不可用時仍保留 Start-Process 作爲回退。

端口如何傳遞

桌面宿主每次啓動會綁定新端口,硬編碼端口在第二次重啓就會錯。宿主側從觸發重啓請求的 req.headers.host 讀取端口,以 -Port 傳給 PowerShell helper;若無法確定端口,helper 會跳過端口檢測,改爲等待進程就緒。

核心功能與 HTTP 路由

插件在 desktop 的 web 服務上註冊路由(plain dsh web profile 下會跳過並寫日誌):

方法 路徑 用途
GET /dsh-quick-actions/info 診斷:應用 pid、exe 路徑、helper 是否存在、充值 URL、檢測到的端口、平臺
POST /dsh-quick-actions/restart 啓動 detached 的 relaunch helper
POST /dsh-quick-actions/open 在默認瀏覽器打開 URL
POST /dsh-quick-actions/rendered 客戶端上報繪製位置(佈局探測)

/open 僅接受 https://,不接受 file:、javascript: 或裸路徑。

安全相關行爲(摘自 README):

  • Helper 先讀取目標 pid 的 ExecutablePath,與即將啓動的可執行文件不一致則中止,避免誤殺 pid 被複用後別的進程。
  • 保留原始命令行,自定義參數(如 --user-data-dir)在重啓後仍在。
  • 子進程環境中剝離 NODE_OPTIONS,避免繼承注入的 loader。
  • 各步驟追加寫入 ~/.dsh/desktop-quick-actions.log,失敗時可查拒絕原因。

導入階段不拋未捕獲異常,避免拖垮桌面 recovery 流程;各步驟有 guard 與日誌。

安裝與啓用

安裝命令(與 README 一致):

dsh plugin --profile desktop add dsh-desktop-quick-actions

安裝後需手動重啓 DSH 桌面應用一次;之後側欄底部的 Restart 按鈕即可走完整 relaunch 流程。

卸載:

dsh plugin --profile desktop remove dsh-desktop-quick-actions

典型用法與驗證

日常使用:在 DSH 桌面側邊欄底部點擊 Restart 或 Top up 即可,無需額外配置項(資料中未列出用戶可編輯的配置字段)。

重啓後可在 PowerShell 中核對日誌與是否誤啓 Windows Terminal:

# after clicking the button
Get-Content "$env:USERPROFILE\.dsh\desktop-quick-actions.log" -Tail 20
Get-Process WindowsTerminal -ErrorAction SilentlyContinue   # expect no output

健康日誌示例:

relaunch: helper start: pid=41828 exe=<install>\DeepSeek Harness.exe port=54264
relaunch: stopping app process
relaunch: starting app via WMI: "<install>\DeepSeek Harness.exe" ...
relaunch: wmi start ok: new pid=39380
relaunch: app is up again; done

需要排查插件狀態時,可對 desktop 宿主發起 GET /dsh-quick-actions/info(具體 base URL 以當前 desktop 監聽地址爲準)。

適用場景與注意

適合在 Windows 上長期使用 DSH 桌面版、希望側欄一鍵重啓且不想看到 Terminal/控制台閃窗,或需要快速打開充值頁的用戶。Top up 對非 Windows 桌面場景仍可能有 UI 價值,但 Restart 的 WMI helper 僅面向 win32(package.json 中 os: ["win32"])。

DSH 生態是「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。安裝前建議閱讀 GitHub 源碼與 MIT 許可證,並理解插件以當前 DSH 桌面進程權限運行,重啓會結束並重新拉起同一可執行文件。

結尾

dsh-desktop-quick-actions 把「無控制台的重啓」和「瀏覽器打開充值頁」收進側欄兩個按鈕,並在 Windows 11 上針對 WMI + Windows Terminal 的坑做了分層處理與端口傳遞。需要安裝說明與路由細節時,以 README 爲準:

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

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

小夜