前言¶
在 DeepSeek Harness(DSH)上開發和試用插件時,經常會碰到必須完整重啓客戶端的情況:新裝或更新了 bundle、改了只在啓動時生效的配置,或者界面與任務卡住。常見做法是手動關窗口再重新打開,步驟不多,但在反覆迭代時仍會打斷節奏。
dsh-restart-plugin 由社區開發者 zhangmaorongXL 維護,在 DSH 側邊欄底部註冊一個重啓入口。用戶確認後,插件通過脫離 DSH 進程樹的 PowerShell 助手結束當前主進程,並用同一可執行路徑重新拉起應用。下面介紹它的定位、安裝方式、使用步驟,以及需要提前知曉的限制。
這是什麼¶
dsh-restart-plugin 是一個同時包含 Host 端和 Web 客戶端的 DSH 插件,當前版本爲 0.1.0,採用 MIT 許可證,面向 Windows 桌面環境(依賴 PowerShell 與 WMI)。
插件在 DSH 生態裏歸類爲客戶端類能力:按鈕掛在 Web 客戶端側邊欄,重啓邏輯由 Host 路由與系統腳本完成。DSH 社區插件目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;安裝前建議自行查閱源碼與許可證,插件以當前 DSH 進程及用戶權限運行。
核心功能¶
依據 README 已覈實的能力如下。
界面與交互¶
- 在
sidebar.footer.action插槽註冊按鈕,默認order: 10。 - 側邊欄展開時顯示圖標和
Restart文案;收起時只顯示⟳圖標。 - 點擊後二次確認,提示會中斷未保存內容與運行中任務。
- 請求發出後按鈕禁用並顯示
Restarting...,避免重複點擊。
Host 與重啓機制¶
- 客戶端向
POST /dsh-restart-plugin/force-restart發請求;Host 先返回200,再異步執行重啓,減輕前端因連接斷開報錯。 - 在系統臨時目錄寫入
dsh-force-restart-<timestamp>.ps1,經 WMIWin32_Process.Create啓動隱藏的 PowerShell 助手,該進程不在 DSH 進程樹下。 - 助手等待 800 ms,查找主窗口標題包含
DeepSeek Harness的進程,記錄可執行路徑後強制結束,等待 1 s 再用原路徑啓動;腳本執行完後刪除自身。 - 源碼以 ESM 與瀏覽器模塊直接加載,無需單獨構建步驟。
警告:這是強制重啓,不等待會話保存,也不優雅關閉任務。未保存會話、正在執行的 Agent 任務與工具調用都可能被中斷。
工作原理(簡要)¶
經過上面的功能說明,流程可概括爲:
- 用戶點擊側邊欄底部
⟳並確認。 POST /dsh-restart-plugin/force-restart→ Host 立即返回{"ok":true,"message":"Restarting..."}。- WMI 啓動脫離進程樹的 PowerShell 助手 → 定位並結束 DSH → 用原 exe 路徑重啓。
側邊欄按鈕
│ POST /dsh-restart-plugin/force-restart
▼
DSH Host 路由 ── 立即返回 200 ──▶ 客戶端進入 Restarting...
│
│ WMI(脫離 DSH 進程樹)
▼
PowerShell 助手
│ 等待 800 ms → 結束 DSH → 等待 1 s
▼
重新啓動 DeepSeek Harness.exe
安裝與啓用¶
環境要求¶
| 項目 | 要求 |
|---|---|
| 操作系統 | Windows(PowerShell、WMI) |
| 應用 | DSH 桌面端,支持插件 bundle 與 Web 客戶端插件 |
| DSH 能力 | webServer 服務、sidebar.footer.action 插槽 |
| 進程標題 | 主窗口標題需包含 DeepSeek Harness |
| 參考環境 | Windows + DeepSeek Harness 0.2.2-rc.1 |
通過 CLI 安裝(推薦)¶
先在 PowerShell 中從 GitHub 添加插件(desktop 爲桌面端默認 profile 名,自定義 profile 請替換):
dsh plugin --profile desktop add github:zhangmaorongXL/dsh-restart-plugin
本地開發可使用 link:
dsh plugin --profile desktop add link:E:/path/to/dsh-restart-plugin
然後確認該 profile 的 package.json 同時包含依賴與 bundle 條目:
{
"dsh": {
"profile": {
"bundles": [
"dsh-restart-plugin"
]
}
},
"dependencies": {
"dsh-restart-plugin": "github:zhangmaorongXL/dsh-restart-plugin"
}
}
若 dsh.profile.bundles 中沒有 dsh-restart-plugin,需手動加入,否則 cordis.patch.yml 不會應用,插件也不會加載。
首次加載¶
首次安裝完成後,需要手動重啓一次 DSH(此時側邊欄尚無重啓按鈕)。成功後,側邊欄底部會出現 ⟳ 按鈕。
典型用法¶
- 在 DSH 左側邊欄底部找到
⟳按鈕。 - 點擊並在確認框中確認重啓。
- 按鈕變爲
Restarting...並禁用;幾秒內應用被強制結束並自動重新啓動。 - 若重啓前頁面未斷開,按鈕可能一直顯示
Restarting...,屬預期行爲;應用重啓後頁面會重新加載。
也可直接調用 Host 暴露的 HTTP 接口(內置客戶端使用 POST):
POST /dsh-restart-plugin/force-restart
成功接受重啓流程時響應爲:
{"ok":true,"message":"Restarting..."}
200 僅表示流程已被接受,不保證進程一定結束或應用一定拉起。該接口無獨立鑑權,依賴 DSH Web 服務的訪問邊界,不宜將 Web 服務暴露到不可信網絡。
適用場景與注意¶
適合:
- 安裝、更新或禁用插件後需要完整重啓 DSH;
- 修改了只在啓動時讀取的配置;
- 界面或任務卡住,希望快速重啓;
- 不想手動關窗再打開。
限制與排查要點:
- 只面向 Windows 桌面端;純
dsh web+ 瀏覽器場景通常沒有標題爲DeepSeek Harness的窗口,不適合依賴此插件重啓。 - 依賴窗口標題匹配;多個候選時只處理第一個。
- 當前版本無配置項(超時、標題規則、按鈕位置等均未提供)。
- 權限不足、安全軟件攔截 WMI 或 PowerShell 可能導致失敗;Host 錯誤帶
[dsh-restart-plugin]前綴輸出到控制台。
常見現象與處理見項目 README 中的故障排查表(如無按鈕、點擊無反應、退出後未重現等)。
結尾¶
dsh-restart-plugin 把「完整重啓 DSH 桌面端」收攏到側邊欄一次確認,適合插件與配置迭代頻繁的 Windows 用戶。使用前務必接受強制結束帶來的數據與任務中斷風險。
- 插件目錄:https://www.skillhub.cn/plugins/zhangmaorongXL/dsh-restart-plugin
- 源碼與文檔:https://github.com/zhangmaorongXL/dsh-restart-plugin