前言¶
用 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 許可)。
核心功能¶
自動續跑的條件¶
下列條件須全部滿足纔會自動續跑,否則插件不做任何事:
- 上一個任務屬於意外打斷(中斷、出錯,或輸出過長被截斷),而非正常結束。
- 打斷之後你尚未發新消息,也沒有開始新任務。
- 打斷髮生在 15 分鐘以內(更久的不處理;該時長目前寫死,不可配置)。
- 該會話已經重新打開。
若上次失敗屬於重試也無用的情況(例如 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