dsh-shutdown-guard-plus:任務結束後自動關機(全屏倒計時與自動守夜)

前言

在 DSH 裏跑長任務時,常見問題之一是:回答已經收尾,人卻還在等窗口、或臨時離開,電腦一直開着。手工關機又怕 agent 還在跑後臺任務。上游插件 dsh-Shutdown-Guard 用一套狀態機與會話/任務判定,在「確實可以關」時再下發 Windows 關機。本文介紹社區分線 dsh-shutdown-guard-plus(維護者 Jd44chs):在上游 v1.6.0(MIT)判定邏輯不變的前提下,增加全屏關機倒計時與可選的自動武裝,仍屬 DSH 客戶端類插件。

這是什麼

  • 定位:DSH 插件;會話與任務滿足條件後,調用 Windows 自帶 shutdown.exe 執行關機,側邊欄提供守夜狀態卡片。
  • 與上游關係:衍生分線(fork),不改上游五道判定閘與狀態機;插件 id 爲 dsh-shutdown-guard-plus,可與上游 dsh-shutdown-guard 並存,但 README 建議只保留一個,避免重複監聽「會話空閒」。
  • 版本與許可:package 版本 1.6.0-plus.1;MIT;上游基線 v1.6.0。
  • 平臺:package.json 聲明 os: ["win32"],面向 Windows;引擎要求 DSH >=0.1.5-rc.1,Node >=22.19。

側邊欄卡片對應六種狀態:武裝 / 待命 / 等待後臺任務 / 倒計時 / 已下發 / 阻斷,與上游一致。

上游機制(本分線原樣保留)

上游解決「讓它自己關電腦」,核心包括:

  1. 五道判定閘:已武裝、無進行中倒計時、全部 root 會話空閒、無運行中或停止中的後臺任務、本批次無會話報錯。
  2. 六種狀態流轉:未開啓 → 待命 → 等待後臺任務 → 倒計時 → 已下發;任意階段可進入阻斷。
  3. AFK 自動接管:agent 提問時可按配置自動回覆「用戶處於 AFK,先完成已交代的任務」。
  4. 阻斷分級:halted(需人工解除)與 waiting(按策略自動重試)。
  5. 默認安全基線:如 60 秒倒計時、等後臺任務、出錯跳過等;countdownSec、marginSec 等字段在默認配置中鎖死,改動須自定義配置。

判定細節以 上游 README 爲準;本分線只在其上做顯示與便利性加法。

本分線新增的兩項能力

全屏關機倒計時(fullscreen,默認 true)

倒計時開始時,在客戶端窗口上覆蓋整屏遮罩:

  • 黑底、大號等寬秒數、進度條;文案提示「正在關機」,並說明可按 Esc 或點「取消關機」撤銷。
  • 取消走上游原有 POST /cancel,不繞過狀態機。
  • 遮罩僅隨 snapshot 展示;state 離開 countdown / fired 即移除。關閉該開關後行爲退化爲僅側邊欄卡片。

實現位於 lib/client.js(fsEnsure / fsPaint 等),由 setSnapshot() 末尾 fsSync() 驅動。

自動守夜(autoArm,默認 false)

上游需手點「武裝」。開啓後,當 agent/status 由 running 變爲 idle,且配置允許、當前未武裝、無 root 會話在跑時,自動 setArmed(true) 並走上游 tryArm()。武裝之後的判定仍是上游五道閘。倒計時期間若 agent 再次 running,會撤銷關機。

README 說明默認關閉:開啓後每輪對話結束都可能進入倒計時,閒聊結束 60 秒也可能真關機。

配置字段

兩字段寫入 profile(data/config.json),不在 PROFILE_LOCKED_FIELDS 中,默認配置下也可改:

字段 類型 默認
fullscreen boolean true
autoArm boolean false

GET /api/dsh-shutdown-guard-plus/state 會下發上述字段;側邊欄與 /window 懸浮窗讀同一份狀態。

設置路徑:

設置 → 插件 → dsh-shutdown-guard-plus → 「守夜」標籤頁

頁面上方兩項爲本分線新增;其餘(後臺任務守衛、出錯跳過、倒計時時長、AFK 自動回答等)來自上游。

安裝與啓用

插件以當前 DSH 進程權限運行;安裝前請自行查看倉庫源碼與 MIT 許可證。社區目錄頁:SkillHub 插件頁。倉庫:github.com/Jd44chs/dsh-Shutdown-Guard-plus(目錄介紹處星標爲 0,以站點爲準)。

推薦從 GitHub 安裝(資料原文命令,Windows PowerShell):

& "$env:LOCALAPPDATA\Programs\DeepSeekRuntime\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add "github:Jd44chs/dsh-Shutdown-Guard-plus"

若 github: 前綴在當前 dsh 版本不被接受,可改爲 plugin add 指向本機已下載的插件目錄(路徑按你本機填寫)。

裝完後 dsh.profile.bundles 會追加 dsh-shutdown-guard-plus。必須重啓 DSH:lib/client.js 僅在啓動時編入客戶端模塊圖,刷新頁面不生效。

典型用法

  1. 安裝並重啓 DSH 後,在「守夜」設置頁按需開關 大屏關機倒計時 與 自動守夜(多數場景可先保持 autoArm 爲關)。
  2. 需要關機守衛時:關閉 autoArm 則手點側邊欄「武裝」;開啓 autoArm 則在對話結束且會話空閒滿足條件時自動武裝。
  3. 進入倒計時後:全屏層顯示剩餘秒數;要取消則按 Esc 或點「取消關機」。agent 重新跑任務時,上游會取消倒計時。
  4. 觀察卡片狀態:若卡在「等待後臺任務」或「阻斷」,說明上游閘未通過,需先處理任務或錯誤,而非強行關機。

適用場景與注意

適合:在 Windows 上用 DSH 跑批處理式 agent 任務,希望任務鏈結束後自動關機,又不想誤判仍在運行的會話或後臺 job。

注意:

  • 僅調用 shutdown.exe(/s /t 與 /a),不聯網、不寫系統目錄;不處理休眠/待機。
  • autoArm 打開後,每輪對話結束都可能倒計時;長時間等回答卻離開機器時有被關機風險。
  • 全屏遮罩無法蓋住 Electron 窗口層左上角標題徽標(README 稱無功能影響)。
  • 與上游同裝可能互相干擾,建議只啓用一個守夜插件。

結尾

dsh-shutdown-guard-plus 在 ltayshark0637 的 dsh-Shutdown-Guard v1.6.0 上做了最小加法:全屏倒計時提醒與可選自動武裝,安全判定仍交還給上游。需要客戶端側自動關機守衛時,可從 SkillHub 或 GitHub 安裝,在設置頁調整 fullscreen / autoArm 後重啓 DSH 使用。

  • 目錄頁:https://www.skillhub.cn/plugins/Jd44chs/dsh-Shutdown-Guard-plus
  • GitHub:https://github.com/Jd44chs/dsh-Shutdown-Guard-plus
羽毛球分组比赛记分
小程序二维码

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

小夜