dsh-restart-foot:DSH 桌面端側欄底部一鍵重啓

前言

在 DeepSeek Harness(DSH)裏裝插件、改配置之後,要讓界面和宿主加載新內容,往往需要退出整個桌面應用再手動打開。瀏覽器裏刷新頁面即可,但 DSH 桌面殼走的是 dsh-app: 協議,沒有「只刷新不重開進程」的等價操作;主進程、渲染進程和 DSH 宿主是一棵樹,半吊子的退出容易留下鎖或重複實例。下面介紹社區插件 dsh-restart-foot:在側欄底部、頭像/設置入口正上方加一枚重啓按鈕,兩次確認後結束整棵進程樹並重新拉起,且重啓輔助腳本不彈出控制台窗口。

這是什麼

dsh-restart-foot 由 GitHub 用戶 1207291706 維護,分類爲客戶端插件,MIT 許可,當前版本 1.0.0(見倉庫 package.json)。它只做一件事:在 DSH 桌面應用側欄 foot 區域註冊一行操作,點擊後按既定流程停止應用可執行文件對應的全部進程,再啓動同一路徑的可執行文件。裝完插件或改完設置後,不必到任務欄或系統托盤裏手動退出。

社區目錄頁:https://www.skillhub.cn/plugins/1207291706/dsh-restart-foot
源碼與說明:https://github.com/1207291706/dsh-restart-foot

DSH 生態強調「一切皆插件」;SkillHub 等目錄是社區站點,與 DeepSeek / 幻方無官方從屬關係。

按鈕位置與 UI 約束

該行註冊在 sidebar.footer.action 插槽。側欄 foot 是自下而上的棧(.footArea → .footerActions → .settingsArea),因此按鈕出現在賬號/設置區塊的正上方,而不是點頭像彈出的菜單裏——官方 @deepseek-ai/dsh-client-ui-settings-account 的 AccountMenu 無擴展插槽,放在 foot 行是唯一不覆蓋內置 UI 的加法。

控件使用殼層自帶的 Button、Tooltip 與刷新圖標,顏色與焦點環跟隨設計系統;交互時有懸停半圈、按下、armed 時輕晃、重啓中旋轉等動效,prefers-reduced-motion 下全部關閉。

核心行爲

  1. 第一次點擊:進入確認態,按鈕變爲錯誤色並顯示「再點一次確認」,約 5 秒無操作則恢復 idle。
  2. 第二次點擊:向宿主發送 POST /dsh-restart-foot/restart,請求頭須帶 x-dsh-restart-foot: 1,避免誤觸、預取或其它標籤頁誤停應用。
  3. 無控制台窗口:宿主寫入批處理,經 wscript.exe 以 GUI 子系統、隱藏窗口方式 detached 啓動輔助進程。桌面應用通過 job object 管理子進程,若輔助進程不 detach,會隨主應用一起被殺死而無法完成重啓。
  4. 批處理順序:等待約 1 秒以便 HTTP 響應返回 → 按應用鏡像名結束進程 → 輪詢確認進程已退出(最長約 20 秒)→ 對殘留 pid 強制結束 → 再啓動可執行文件。重啓前會清除繼承的 ELECTRON_RUN_AS_NODE,否則二次啓動可能變成無腳本的 Node 進程並立刻退出(表現爲「關了就再沒起來」)。
  5. 啓動後校驗:最多約 20 秒等待應用進程再次出現,並寫入日誌;失敗時按鈕 tooltip 與 /dsh-restart-foot/ping 的 lastLaunchError 會保留原因。

運行中的 Agent 回合會被中斷,與會話相關的日誌在磁盤上,重開會話可繼續。日誌文件:%TEMP%\dsh-restart-foot.log(逐步記錄 request、stop、wait、force-stop、start、back 等)。

環境要求

  • DeepSeek Harness 桌面應用,且運行在 Windows 上。
  • 客戶端僅在頁面 origin 爲 dsh-app: 時註冊;在普通瀏覽器訪問 http://127.0.0.1:<port> 時沒有可重啓的桌面殼,該行不會出現。
  • 宿主側若 process.execPath 不是桌面可執行文件(例如在終端裏 dsh web 時的 node.exe),重啓相關路由會返回 501。
  • Node 20+;無構建步驟,無運行時 npm 依賴。

安裝與卸載

當前推薦從 GitHub 安裝(npm 包已打好但作者網絡無法註冊 npm 賬號,正式上架前不可用 dsh plugin add dsh-restart-foot):

dsh plugin add github:1207291706/dsh-restart-foot

同一來源的 git 寫法:

dsh plugin add git+https://github.com/1207291706/dsh-restart-foot.git

指定 profile 時:

dsh plugin add --profile desktop github:1207291706/dsh-restart-foot

安裝後刷新頁面(或仍用舊方式重啓一次)以加載客戶端模塊。

卸載:

dsh plugin remove dsh-restart-foot

典型用法

日常流程:安裝或更新其它 DSH 插件、修改需重啓宿主才生效的配置 → 在側欄底部找到「Restart DeepSeek Harness」(中文 locale 下爲對應文案)→ 連續點擊兩次確認 → 等待應用自動關閉並重新出現。

若點擊後 seemingly 無反應,可按 README 建議順序排查:按鈕 tooltip 上的失敗文案 → GET /dsh-restart-foot/ping(含 lastLaunchError)→ POST /dsh-restart-foot/selfcheck(需同樣請求頭,僅做啓動能力探測)→ %TEMP%\dsh-restart-foot.log。

探測類路由(不殺真實進程):

方法 路徑 用途
GET /dsh-restart-foot/ping 存活探測:平臺、是否找到桌面目標、可執行路徑、PowerShell 路徑、lastLaunchError
POST /dsh-restart-foot/restart?probe=1 報告目標,不操作進程
POST /dsh-restart-foot/selfcheck 診斷 cmd/PowerShell 探針,不寫真實進程

路由由 DSH Web 服務提供,凡能訪問該端口的客戶端均可調用;默認綁定 loopback 時可限制僅本機訪問。

適用場景與注意

適合:經常在 Windows 桌面 DSH 裏迭代插件與配置、希望少一步手動退出再打開的開發者。

務必注意:

  • 插件以當前 DSH 進程權限運行;安裝前應閱讀 index.js、client.js 等源碼並確認 MIT 許可證與行爲是否符合預期。
  • 僅 Windows 桌面殼;Linux/macOS 或純 dsh web 場景不適用。
  • 重啓會中斷進行中的 Agent 任務,屬預期行爲。

實現思路上, detached 輔助進程、按鏡像名停止、確認退出後再啓動等做法,參考了 MIT 許可的 dsh-restart-button(CZY1326);本倉庫爲獨立實現,插槽、路由前綴、輔助腳本與日誌路徑均不同。

結尾

dsh-restart-foot 把「整應用重啓」收進側欄底部兩行點擊裏,針對 Windows 桌面 DSH 的進程模型做了 detach、ELECTRON_RUN_AS_NODE 清理與退出輪詢,避免無控制台輔助腳本被 job object 拖死或二次啓動失敗。需要安裝命令與路由細節時,以 GitHub README 爲準。

  • 目錄頁:https://www.skillhub.cn/plugins/1207291706/dsh-restart-foot
  • 倉庫:https://github.com/1207291706/dsh-restart-foot
羽毛球分组比赛记分
小程序二维码

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

小夜