dsh-recovery-resume:DSH 重啓後自動續跑被打斷的任務

前言

用 DeepSeek Harness(dsh)跑 agent 時,任務經常在半路被進程重啓打斷:崩潰、升級、手動重啓都會讓當前 turn 停在中途。重啓後會話還在,但 agent 不會自己接着幹,通常要你再發一條消息它纔會動。若你不在終端前,下載、推送或長鏈路工具調用可能一直懸着。

社區插件 dsh-recovery-resume(維護者 flandre2233,分類:工作流)在 DSH 重啓後自動入隊一條續跑消息,並要求 agent 先覈對真實進度再續做,而不是默認成功或失敗。下面介紹它的定位、觸發條件、安裝方式與使用注意。

這是什麼

dsh-recovery-resume 是 DSH 的 host 插件:在 Harness 重啓後,若檢測到「未處理的中斷」,會自動讓 agent 從合適的位置繼續;續跑文案會強調檢查實際做到了哪一步(例如重啓若發生在下載或推送中途,不能想當然認爲已完成或已失敗)。

倉庫:https://github.com/flandre2233/dsh-recovery-resume
社區目錄頁:https://www.skillhub.cn/plugins/flandre2233/dsh-recovery-resume
當前 package 版本:0.1.3(MIT 許可)。

核心功能

自動續跑的條件

下列條件須全部滿足纔會自動續跑,否則插件不做任何事:

  1. 上一個任務屬於意外打斷(中斷、出錯,或輸出過長被截斷),而非正常結束。
  2. 打斷之後你尚未發新消息,也沒有開始新任務。
  3. 打斷髮生在 15 分鐘以內(更久的不處理;該時長目前寫死,不可配置)。
  4. 該會話已經重新打開。

若上次失敗屬於重試也無用的情況(例如 API key 無效、餘額用完、對話超出上限),插件會跳過續跑,判斷標準與 DSH 官方對「值得重試」的界定一致。

若會話中存在進行中的 goal,插件會嘗試讓其繼續推進,效果類似界面上的「繼續」;你手動暫停的目標不會被自動恢復。

防止反覆續跑失控

爲避免「重啓 → 續跑 → 再崩 → 再續跑」的循環,插件內置三道限制:

保險 規則
1 同一會話,每個 DSH 進程啓動週期內最多自動續跑 1 次
2 連續 3 次續跑均無進展則停止自動續跑,記錄保存在 $DSH_HOME/recovery-attempts.json(重啓不清零)
3 兩次續跑之間冷卻:第 1 次之後 10 分鐘,第 2 次之後 20 分鐘

續跑後任務確有推進時,相關計數會清零。觸發上限時僅寫日誌,不執行其他操作。

已知範圍與限制

README 寫明:僅在 DSH 0.1.6-alpha.1 與 macOS 13(Intel) 上做過實際驗證;插件依賴 DSH 內部接口,升級 DSH 後建議重新跑測試。插件不判斷任務是否已在重啓前完成——若已做完,agent 可能多一輪檢查,屬預期行爲。子代理(subagent)會話不處理。

安裝與啓用

插件隨 DSH 以 host 插件方式加載,安裝前請自行查閱倉庫源碼與 MIT 許可證;插件以當前 dsh 進程權限運行,與你在本機信任的其他 DSH 插件相同。

安裝命令(來自倉庫 README):

dsh plugin --profile web add github:flandre2233/dsh-recovery-resume

裝完後再重啓一次 DSH,插件纔會生效。無需額外依賴或編譯。

確認是否加載:

dsh --profile web --dump-config | grep -A2 recovery-resume

怎麼確認它在工作

插件日誌出現在運行 dsh web 的終端;若通過桌面啓動器等打開 DSH,常見位置爲 ~/.dsh/host.log(由啓動器生成,手動運行 DSH 時該文件可能不存在):

grep dsh-recovery-resume ~/.dsh/host.log

觸發續跑時,日誌可能類似:

dsh-recovery-resume: agent 創建 id=session-… status=idle
dsh-recovery-resume: ★ 發現未處理的中斷(reason=interrupted turnSeq=8451 lastTool=bash)
dsh-recovery-resume: 續跑消息已入隊 session-…
dsh-recovery-resume: 已重新武裝 goal …

多數時候沒有任何續跑日誌是正常的。例如「無需續跑(尾部沒有未處理的非人爲中斷)」表示上次正常結束或你已繼續對話;「跳過 …(本次進程已續跑 1 次)」表示單次啓動續跑上限生效;「冷卻中(…還需 N 秒)」表示冷卻規則生效。若完全無相關日誌,先用 --dump-config 檢查插件是否加載。

開發與測試

倉庫提供不依賴 DSH 運行時的邏輯測試(Node >= 20):

npm test

也可單獨運行:node tests/logic.test.mjs(README 稱約 85 個用例,Windows 可跑)。

適用場景與注意

適合長時間 unattended 跑 agent、且遇到過 Harness 重啓導致 turn 懸空的工作流場景。不適合指望插件替你在任意錯誤下無限重試——永久性錯誤會被刻意跳過。

DeepSeek Harness 生態強調「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。安裝第三方插件前請閱讀源碼與許可,並瞭解其以 host 權限接入 DSH 的方式。

結尾

dsh-recovery-resume 解決的是 DSH 重啓後會話在、任務卻停住的問題:在嚴格條件與多重保險下自動續跑,並強制 agent 先覈對真實狀態。需要時可從目錄頁或 GitHub 查看 README 與 docs/notes.md 中的設計說明。

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

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

小夜