Shutdown Guard:DSH 側邊欄「任務完成後自動關機」

前言

在 DeepSeek Harness(DSH)裏跑長任務時,常見做法是晚上交給 agent 一批工作,希望全部跑完就關機,人不必守在屏幕前。但「看起來沒動靜」並不等於可以安全關機:後臺任務可能還在跑、某條會話已報錯、agent 在等你點選或回答、或者你中途手動終止了任務。在這些情況下直接關機,輕則丟進度,重則把半成品的磁盤狀態留在機器上。

下面介紹社區插件 dsh-shutdown-guard(倉庫 ltayshark0637/dsh-Shutdown-Guard)。它在 DSH 側邊欄增加一張守夜卡片,用多條判定條件擋掉誤關機,並在滿足條件時通過 Windows 的 shutdown /s 安排關機。維護者爲 ltayshark0637,當前 npm 版本 1.5.1,許可證 MIT;在 SkillHub 目錄中歸類爲客戶端插件。DSH 社區目錄(如 SkillHub 條目)爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

這是什麼

Shutdown Guard 爲 DSH Web 側邊欄添加「所有任務完成後自動關機」卡片:位置在「技能中心」下方、會話列表上方,隨任務狀態實時變化。相比簡單監聽「空閒就關」,它把武裝狀態、後臺任務、會話報錯、阻斷性錯誤等拆開處理,並把「上次爲什麼沒關機」寫進卡片與設置頁。

插件要求 DSH >= 0.1.5-rc.1、Node >= 22.19,且 僅支持 Windows(package.json 中 os 爲 win32;非 Windows 平臺插件靜默不加載)。關機命令以當前 dsh 進程權限 執行;安裝前建議閱讀倉庫源碼與 MIT 許可證,確認行爲符合你的環境策略。

核心功能

五道閘門與關機命令

處於阻斷態時不會下發關機。其餘情況下,需同時滿足以下五條纔會調用 shutdown /s(README 中表述爲五道閘門):

  1. 已武裝 —— 用戶在卡片上手動開啓。
  2. 沒有倒計時在跑 —— 避免重複下發。
  3. 所有 root 會話都空閒 —— 無 agent 仍在執行;設置中「會話都停下來」爲底線,不可關閉。
  4. 沒有運行中 / 停止中的後臺任務 —— 對應配置 blockOnJobs,默認開啓。
  5. 本批次沒有會話報錯 —— 對應配置 onlyOnSuccess,默認開啓。

任一條件不滿足則跳過本輪,原因可在卡片與設置頁查看。滿足條件後進入倒計時(默認 60 秒,另有 8 個自定義檔位可調),倒計時期間可取消;取消後仍保持武裝,下一批任務完成仍會走同樣流程。

六種運行狀態與三種外觀

狀態流轉大致爲:未開啓 → 待命 → 等待後臺任務 → 倒計時 → 已下發;任意階段遇到阻斷性錯誤進入 阻斷。

設置頁可在三種外觀間切換,立即生效、無需重啓 DSH:

  • A · 警戒帶:大字狀態 + 底部滾動紅黃斜紋。
  • B · 雷達:同心圓與掃描光束,會話與後臺任務以圓點呈現(數量變化時圓點增刪、不重排)。
  • C · 終端:命令行摘要 + 六段判定條件指示燈。

未安裝插件前,可用倉庫提供的交互演示頁查看判定邏輯與外觀(數據本地隨機,不聯網)。

阻斷態與 AFK 接管

阻斷分爲兩類,武裝不會被自動解除:

  • halted:需人工處理(如額度不足、憑證失效、上下文超限等),需點「解除並重試」。
  • waiting:限流、5xx、網絡中斷等,按錯誤類型配置的重試策略自動重試,到點注入「繼續原計劃」類指令。

AFK 自動接管(默認開,可在設置關閉)在武裝期間包括:自動回覆 agent 提問(不替你選中任何選項)、會話報錯時的恢復策略、以及識別「半路手動終止」以避免誤關機。

配置與日誌

運行時配置項(README 表格)包括 countdownSec、marginSec、onlyOnSuccess、blockOnJobs、afkAutoAnswer、language 等;可通過 POST /config 或插件目錄內 patch 修改。事件流水在插件目錄 data/events.log,設置頁可查看最近事件;UI 偏好存於瀏覽器 localStorage(如 dsh-shutdown-guard.variant)。

安裝與啓用

官方推薦從 npm 安裝(Web profile):

dsh plugin --profile web add dsh-shutdown-guard

或從 GitHub 安裝:

dsh plugin --profile web add github:ltayshark0637/dsh-Shutdown-Guard

裝完後重啓 DSH。README 說明:客戶端 bundle 只在 DSH 啓動時編入模塊圖,修改 lib/client.js 後必須重啓,僅刷新頁面無效。網絡受限時優先走 npm registry;GitHub 安裝依賴 clone,若不通可使用 DSH 設置 → 插件 → 添加本地目錄絕對路徑等方式(詳見 README「安裝」與「網絡受限時」小節)。

典型用法

  1. 安裝並重啓 DSH 後,在側邊欄「技能中心」下方找到 Shutdown Guard 卡片。
  2. 確認設置頁中「何時關機」相關開關符合預期(例如是否要求後臺任務跑完、是否在有會話報錯時跳過本輪、是否開啓 AFK 自動回答)。
  3. 長任務開始前在卡片上武裝;任務運行期間卡片隨會話與後臺任務狀態變化。
  4. 全部閘門滿足後進入倒計時;若需反悔,使用卡片「取消關機」或系統側 shutdown /a。
  5. 若未關機,在設置頁查看「上次爲什麼沒關機」或 data/events.log 排查。

適用場景與注意

適合:在 Windows 上使用 DSH Web,夜間或離席跑批處理/agent 任務,且希望在嚴格條件下自動關機、並願意手動武裝的用戶。

務必注意:

  • 插件會經 subprocess 調用 shutdown.exe(/s /t 與 /a),僅在武裝且閘門全滿足時調用;仍屬高影響操作,建議在測試環境先走一遍演示頁與武裝/取消流程。
  • 監聽 agent/status、agent/error 等事件,並提供本機 /api/dsh-shutdown-guard/ 路由;POST 校驗 Origin 爲 127.0.0.1 或 localhost。README 寫明不發起外部網絡請求。
  • 非 Windows 暫不可用;FAQ 中說明等待後續開發。

結尾

Shutdown Guard 把「任務完成」拆成可檢查的閘門與可見狀態,減少離席跑 agent 時的誤關機風險,並提供 AFK 提問回覆與錯誤恢復等可選能力。進一步瞭解可訪問 SkillHub 目錄頁 與 GitHub 倉庫(含演示頁、CHANGELOG 與開發說明)。

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

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

小夜