前言¶
DeepSeek Harness(DSH)桌面版日常用 Electron 殼承載宿主與瀏覽器界面。發佈版裏,托盤菜單往往沒有「重啓」:想幹淨重開通常要先退出,再從開始菜單重新打開。長時間掛着 agent、改 profile 或排查問題時,少這一格入口會多一步操作。
dsh-power-button 是社區插件(維護者 WhichWitchWin,分類:客戶端),給桌面 GUI 補兩個可單獨開關的電源入口:可拖動、貼邊收起的懸浮按鈕,以及側欄頭像行旁的電源圖標。二者彈出同一菜單,可選重啓 DSH 或退出 DSH。插件僅支持 Windows,純 JavaScript、零 npm 運行時依賴,通過官方 bundle 槽位掛載,不依賴去讀其他插件的 DOM。
下面介紹它解決什麼問題、怎麼裝、怎麼用,以及安裝前需要知道的邊界。
這是什麼¶
| 項 | 說明 |
|---|---|
| 包名 | dsh-power-button(npm 當前 0.1.0) |
| 倉庫 | WhichWitchWin/dsh-power-button |
| 目錄頁 | SkillHub 插件頁 |
| 許可證 | MIT |
| 平臺 | Windows(taskkill、WMI、Windows PowerShell 5.1) |
| 對等依賴 | @deepseek-ai/dsh >= 0.2.0-rc.2 |
DSH 生態裏客戶端能力常以插件形式擴展;SkillHub 等目錄是社區站點,與 DeepSeek / 幻方無官方從屬關係。本插件以當前 DSH 進程權限運行,安裝前建議自行查看源碼與許可證。
核心功能¶
-
懸浮電源按鈕
可拖動;靠近左右邊緣會吸附並收成細邊,鼠標移到細邊上再展開。點擊彈出「重啓 DSH / 退出 DSH」。上下邊緣故意不做吸附,避免擋住窗口控件和輸入框。位置保存在瀏覽器localStorage。 -
側欄電源圖標
落在側欄頭像行、頭像左側,形態與官方圖標按鈕一致,菜單與懸浮按鈕相同。與@linxin666/dsh-web-all等同位置時走同一官方槽位,不依賴其他插件樣式。 -
有任務在跑時的二次確認
僅當宿主報告有 agent(含子代理)正在運行時彈出確認;空閒時直接執行。宿主無法作答時按「有任務」處理。 -
插件管理器內分項開關
卡片開關管整個包;配置頁另有「懸浮電源按鈕」「側欄底部電源圖標」,改動即時生效、無需刷新。
重啓語義上,插件從外部復刻一次「退出再按原命令行拉起」:Electron 主進程的 app.relaunch() 未對插件開放,因此宿主通過 loopback API 啓動脫離應用進程樹的 PowerShell 輔助腳本完成殺樹、等端口、再起實例。退出路徑使用 taskkill。
安裝與啓用¶
安裝會修改 profile 的 package.json 與 pnpm-lock.yaml,建議先備份:
Copy-Item "$env:DSH_HOME\profiles\desktop\package.json" `
"$env:DSH_HOME\profiles\desktop\package.json.bak" -Force
方式一:從 npm 安裝(推薦)
只有此方式會被插件管理器的「檢查更新」識別(對 registry 直裝包做版本比對)。
& 'D:\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd' `
plugin --profile desktop add dsh-power-button
方式二:本地目錄
& 'D:\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd' `
plugin --profile desktop add 'D:\path\to\dsh-power-button'
方式三:從 GitHub 直接裝
& 'D:\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd' `
plugin --profile desktop add 'github:WhichWitchWin/dsh-power-button#main'
CLI 路徑以本機 DSH 安裝目錄爲準,且須使用桌面版自帶的 dsh.cmd(帶 manageDesktopProfile);PATH 裏其他 dsh 可能對 desktop profile 報錯。三種方式都會寫入 profile 依賴並激活 dsh.bundle.patch。裝完後托盤退出 DSH 再打開一次,兩個界面纔會出現。包內 lib/ 爲可直接加載的成品,無構建步驟。
卸載:
& 'D:\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd' `
plugin --profile desktop remove dsh-power-button
典型用法¶
| 操作 | 結果 |
|---|---|
| 拖動懸浮按鈕 | 移動;鬆手靠近左右邊緣則吸附並收起 |
| 鼠標移到細邊 | 展開;移開收回 |
| 點擊按鈕 | 打開電源菜單 |
| 點擊菜單外空白 | 關閉菜單,控件回到細條 |
Esc |
關閉菜單 |
Enter / Space |
等同點擊按鈕 |
在插件配置頁可分別關閉懸浮或側欄入口。持久化配置寫在 profile 目錄下的 dsh-power-button.json,例如:
{ "floating": true, "sidebar": true }
若重啓時在日誌裏看到 WARNING: proceeding after ...s,可在 bundle patch 裏爲宿主半調高等待上限(默認 settleMs 500、waitForExitSeconds 20):
- insert:
- id: ui-restart-button
name: 'dsh-power-button'
config:
settleMs: 800
waitForExitSeconds: 30
排障日誌:restart-button.log;拒絕標記 restart-button.refused。目錄解析順序爲 $DSH_HOME\logs → 從宿主 profile 反推 → %TEMP%。
適用場景與注意¶
適合誰
- 主要在 Windows 上使用 DSH 桌面版,希望界面內一鍵重啓或退出,而不必每次從開始菜單重開。
- 需要懸浮快捷入口,或習慣在側欄底部操作的用戶。
務必知曉的邊界
- 僅 Windows;macOS / Linux 返回
supported: false並隱藏 UI。需要 WMI 可用。 dsh web終止模式下兩個界面均不出現。- 重啓等價於退出再打開:不保證恢復界面狀態,進行中的回合不會自動續上;有任務時強殺是固有代價,確認框會說明。
- 重啓後新窗口會盡量置前,但不保證立即獲得鍵盤焦點。
- 側欄佈局依賴 CSS
:has()與外殼 class 後綴;不支持時側欄重排失效,懸浮按鈕不受影響。
插件對破壞性 REST 動作做了 loopback、Host/Origin 與一次性閘門等護欄,細節見倉庫 README 的「安全護欄」一節。
結尾¶
dsh-power-button 填的是發佈版桌面 GUI 裏「界內重啓/退出」這一格:雙入口、可分項關閉、有 agent 跑時才二次確認。若你已在用 DSH desktop profile,可按上文 npm 方式安裝並重啓殼體後試用。
- 目錄頁:https://www.skillhub.cn/plugins/WhichWitchWin/dsh-power-button
- GitHub:https://github.com/WhichWitchWin/dsh-power-button