dsh-restart-yashua:一鍵重啓 DeepSeek Harness

前言

改 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 與解包目錄並存、宿主被第三方補丁改過等。發現問題時在工具返回裏說明項、後果與修法;重啓仍會執行(重啓本身常是爲讓修復生效)。

體檢相關配置見下文「配置與體檢開關」。

重啓機制(三層回退)

  1. 桌面運行時服務:若宿主提供 desktopRuntime / desktopActions 的 requestRestart,交給 Electron relaunch(首選)。
  2. 脫離進程樹重來(主要面向 Windows 桌面):通過 wscript 以 detached 方式啓動腳本,按可執行文件路徑精確匹配同名進程後結束舊實例,必要時處理 app.asar 與解包目錄衝突,再拉起 GUI;並清理 ELECTRON_RUN_AS_NODE、DSH_PERMISSION_MODE 等環境變量,避免新進程繼承宿主模式。
  3. 都不成立:明確返回失敗,提示手動重啓,不假裝成功。

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。

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

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

小夜