前言¶
在 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 中表述爲五道閘門):
- 已武裝 —— 用戶在卡片上手動開啓。
- 沒有倒計時在跑 —— 避免重複下發。
- 所有 root 會話都空閒 —— 無 agent 仍在執行;設置中「會話都停下來」爲底線,不可關閉。
- 沒有運行中 / 停止中的後臺任務 —— 對應配置
blockOnJobs,默認開啓。 - 本批次沒有會話報錯 —— 對應配置
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「安裝」與「網絡受限時」小節)。
典型用法¶
- 安裝並重啓 DSH 後,在側邊欄「技能中心」下方找到 Shutdown Guard 卡片。
- 確認設置頁中「何時關機」相關開關符合預期(例如是否要求後臺任務跑完、是否在有會話報錯時跳過本輪、是否開啓 AFK 自動回答)。
- 長任務開始前在卡片上武裝;任務運行期間卡片隨會話與後臺任務狀態變化。
- 全部閘門滿足後進入倒計時;若需反悔,使用卡片「取消關機」或系統側
shutdown /a。 - 若未關機,在設置頁查看「上次爲什麼沒關機」或
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 與開發說明)。