前言¶
改 DSH 插件配置、換 profile、或動過 bundles 之後,通常需要完整重啓宿主進程才能生效。手動關窗口再開,或在任務管理器裏找 DeepSeek Harness.exe,步驟多且容易漏掉仍在跑的實例。下面介紹維護者 yashua233 的客戶端插件 dsh-restart-yashua:側欄按鈕、/restart 指令、harness_restart 工具三條入口共用同一套重啓邏輯,並在每次真正重啓前強制確認——因爲重啓會中斷當前會話。
這是什麼¶
- 倉庫:yashua233/dsh-restart-yashua
- 分類:客戶端(注入側欄與設置 UI)
- 許可證:MIT
- 當前插件版本(資料來源
package.json):1.0.16 - 聲明兼容的 DSH 版本:0.2.1-rc.5(無版本範圍,跨小版本可能裝不上或行爲不對)
插件不聯網、不收集數據;除寫 $DSH_HOME/logs/restart.log(進程號、asar 讓位、啓動結果等,不含會話內容)外無其它副作用。
核心功能¶
三種入口,一套實現¶
| 入口 | 用法 | 確認方式 |
|---|---|---|
| 側欄按鈕 | 點「重啓 Harness」 | 就地展開確認條,點「重啓」才執行 |
| 指令 | /restart --yes |
必須帶 --yes,否則只提示 |
| 工具 | harness_restart action=restart confirm=true |
必須 confirm: true,否則只返回「需要確認」 |
側欄是兩段式:第一次點擊不重啓,按鈕原地變爲「重啓會中斷當前會話,確定嗎?」及[重啓][取消],降低誤觸。
啓動前體檢(只讀)¶
每次 harness_restart action=status 以及每次真正重啓前,插件會檢查已知會導致「DSH 打不開」的情況,例如 profile 帶 UTF-8 BOM、本地登錄 cookie 過多導致 431、client.js 模塊 id 與包名不一致、bundles 登記與安裝不一致、app.asar 與解包目錄並存、宿主被第三方補丁改過等。發現問題時在工具返回裏說明項、後果與修法;重啓仍會執行(重啓本身常是爲讓修復生效)。
體檢相關配置見下文「配置與體檢開關」。
重啓機制(三層回退)¶
- 桌面運行時服務:若宿主提供
desktopRuntime/desktopActions的requestRestart,交給 Electron relaunch(首選)。 - 脫離進程樹重來(主要面向 Windows 桌面):通過
wscript以 detached 方式啓動腳本,按可執行文件路徑精確匹配同名進程後結束舊實例,必要時處理app.asar與解包目錄衝突,再拉起 GUI;並清理ELECTRON_RUN_AS_NODE、DSH_PERMISSION_MODE等環境變量,避免新進程繼承宿主模式。 - 都不成立:明確返回失敗,提示手動重啓,不假裝成功。
Linux / macOS 上第 2 層不適用,會落到第 3 層。側欄觸發的 HTTP 路徑 POST /dsh-restart/restart 另有同源校驗與請求體 confirm: true 要求(缺則 428 needs_confirmation)。
安裝與啓用¶
安裝命令以 README 爲準;desktop 爲桌面端常見 profile 名,web 端用 ~/.dsh/profiles/ 下你實際使用的名字。裝完後重啓一次 DeepSeek Harness 生效。
# 從 GitHub
dsh plugin --profile desktop add github:yashua233/dsh-restart-yashua
# 從 npm(若已發佈)
dsh plugin --profile desktop add dsh-restart-yashua
# 本地目錄(開發或自改)
dsh plugin --profile desktop add link:/path/to/dsh-restart-yashua
插件以當前 DSH 進程權限運行;安裝前建議自行查看倉庫源碼與 MIT 許可證。社區目錄 skillhub.cn 插件頁 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
典型用法¶
側欄:點「重啓 Harness」→ 確認條點「重啓」。
指令(必須顯式確認):
/restart --yes
工具:
harness_restart action=restart confirm=true
查看環境與可用重啓路徑、延遲:
harness_restart action=status
排障時可看 $DSH_HOME/logs/restart.log,關注 left=0(舊進程已清乾淨)、asar swap、started 等行。改包名或顯示「未安裝」時,README 還提到可用宿主自帶 node.exe 運行 scripts\check-identity.mjs 做身份自查(Windows 路徑示例見倉庫「遇到問題」一節)。
配置與體檢開關¶
全局配置文件:~/.dsh/dsh-restart.json(改完即時生效),也可在「設置 → 重啓與體檢」中調整。
| 字段 | 默認 | 說明 |
|---|---|---|
enabled |
true |
總開關;關閉後三條入口不註冊 |
delayMs |
1200 |
觸發到真正重啓的緩衝毫秒數 |
preflight.crashLogs |
true |
是否回看 crash-*.log |
preflight.crashLogDays |
7 |
回看 crash 日誌的天數 |
preflight.sessions |
true |
是否檢查會話文件(明顯異常才報) |
在 profile 的 cordis.patch.yml 中可覆蓋插件 config,例如:
- insert:
- id: dsh-restart-yashua
name: 'dsh-restart-yashua'
config:
delayMs: 2000
適用場景與注意¶
- 適合:頻繁改插件或 profile、需要可靠 relaunch 的桌面 DSH 用戶;與 dsh-qq-mail-notify、dsh-mail-command 可任意組合(本插件重啓後 mail-command 的落盤口令仍有效,README 有說明)。
- 注意:重啓必然中斷當前會話;Windows 桌面端依賴
wscript.exe;僅聲明在 0.2.1-rc.5 上實測,其它版本需自行改dsh.compatibility.dsh再試。 - 生態:DSH 理念是「一切皆插件」;本介紹事實均來自上述 GitHub README 與
package.json。
結尾¶
dsh-restart-yashua 把「重啓宿主」收成側欄、指令、工具三條帶確認的路徑,並在重啓前做只讀體檢,減少改配置後仍打不開的情況。目錄頁:https://www.skillhub.cn/plugins/yashua233/dsh-restart-yashua;源碼與完整排障說明:https://github.com/yashua233/dsh-restart-yashua。