dsh-auto-continue:DSH Web UI 中斷後自動發送「繼續」

前言

dsh web 跑長任務時,網絡抖動、上游超時、輸出 token 觸頂,都會讓當前回合突然停住。常見做法是盯着界面,等錯誤出現後手動輸入「繼續」再點發送。任務一多,這條鏈路很容易斷在人爲反應上。

下面介紹 dsh-auto-continue(npm 包名 dsh-client-auto-continue)。它在 DSH Web UI 裏監聽會話事件;當回合因非人爲原因結束時,按你配置的文本自動走與「發送」按鈕相同的 agent.followup 隊列,把中斷的任務接回去。自 0.8.0 起,引擎跑在宿主進程內,單實例值守,瀏覽器標籤全關也能掃描恢復,多標籤也不會重複發送。

這是什麼

dsh-auto-continue 是 DeepSeek Harness(DSH)的 Web UI 插件,由 HsiangNianian 維護,在 SkillHub 社區目錄歸類爲「工作流」。GitHub 倉庫約 37 stars、2 forks,當前發佈版本 0.8.1,MIT 許可證。

它解決的核心問題很直接:把「發現中斷 → 等待寬限 → 發送繼續」這條恢復鏈路自動化,並在錯誤分類、退避、冪等、循環檢測等邊界上提供可配置策略,避免盲目重試或重複執行工具。

核心功能

監聽哪些中斷

插件訂閱宿主進程內的會話事件流,對以下情況作出反應:

事件 含義
turn/enderror 回合失敗(模型 / 網絡 / 超時等)
turn/endinterrupted 宿主崩潰重啓後遺留的中斷回合(由啓動掃描恢復)
turn/endmax-tokens 達到輸出 token 上限
host/agent-error 無回合位置的 Agent 失敗(僅網絡/超時類消息自動續跑)

以下情況不會自動繼續:用戶主動停止(aborted)、策略拒絕(blocked)、正在運行或已有排隊消息的會話、子代理會話,以及處於冷卻期或連續次數上限內的會話。即時流裏的 interrupted 也不走自動續跑路徑,孤兒回合由宿主啓動時的掃描接手。

智能恢復策略

上述能力均可在設置卡片中開關或調參:

  1. 錯誤分類 — 臨時性錯誤(網絡、超時、5xx、429 等)自動續跑;永久性錯誤(401/403,或命中認證、API Key、餘額/配額、模型不存在、上下文超限等關鍵詞)跳過並通知。關閉分類後則全部自動繼續。
  2. 自適應退避 — 連續失敗時等待遞增(冷卻 × 係數,默認 20s → 40s → 80s…),有上限,避免對故障上游持續重試。
  3. 模板化繼續文本continueText 支持 {code}{message}{status}{tool}{turn}{errorCount}{sessionTitle}{elapsed} 佔位符;max-tokens 場景可用單獨的 continueTextMaxTokens 模板。
  4. 冪等護欄 — 續跑前檢查上一步工具調用:結果未確認時提示先覈對狀態、勿重複執行;已確認成功時說明結果、勿重跑;工具失敗則不加護欄。
  5. 循環守衛 — 監視運行中的回合:相同消息連續重複、短時間內大量短句且無工具調用、同一工具同參數同結果反覆調用,會取消當前回合並用可配置文本重啓。
  6. 暫停與通知 — 全局「暫停自動繼續」立即停掉即時與掃描;通知帶「立即續跑」(無視冷卻、上限與暫停)和「暫停該會話 1 小時」按鈕。
  7. 統計面板 — 展示今日自動繼續、恢復成功、繼續後失敗、永久性跳過、達上限停止、循環打斷等計數,按錯誤碼分組,可一鍵清零。

工作流程

檢測到中斷後,引擎先等待寬限期(默認 3 秒)。若期間宿主自行開啓新回合(turn/start),自動繼續取消;否則經 agent.followup 發送配置文本,與手動點發送等價。

宿主啓動或重連時,還會掃描存活會話:最後一個回合在掃描時間窗內(默認 15 分鐘)以非人爲原因結束、且其後沒有新回合或用戶消息的,會被自動續跑。例如瀏覽器關閉期間宿主崩潰,agent-loop 恢復會話後引擎可接着接手。

安裝與啓用

DSH 插件安裝進 profile(dsh web 對應 web profile)。要求 DSH ≥ 0.1.0-rc.7;rc.6 及更早版本會因 settings.plugin.item 槽位不兼容而加載失敗,需先升級 DSH。

推薦從 npm 安裝:

dsh plugin --profile web add dsh-client-auto-continue
dsh web

也可直接從 GitHub 默認分支安裝(跟蹤 main,適合嚐鮮;穩定性首選 npm):

dsh plugin --profile web add github:HsiangNianian/dsh-auto-continue
dsh web

安裝後重啓 dsh web。驗證配置是否掛載:

dsh --profile web --dump-config | grep auto-continue

瀏覽器控制檯應出現 [auto-continue] 已啓動 日誌;每次檢測中斷與自動發送也會打日誌。

卸載:

dsh plugin --profile web remove dsh-client-auto-continue
dsh web

典型用法

圖形界面配置

打開 設置 → 插件,找到 dsh-client-auto-continue 配置卡片。修改是暫存式的,點「保存」後寫入 ~/.dsh/settings.yamlauto-continue 段落,宿主會監聽文件變更並即時生效。

默認繼續文本就是 繼續,多數場景開箱可用。若希望續跑消息攜帶失敗上下文,可改 continueText,例如:

繼續 ({tool}: {code})

達到輸出 token 上限時,可單獨配置 continueTextMaxTokens,例如:

繼續輸出, 不要重複已生成的內容

直接編輯配置文件

也可跳過 GUI,編輯 ~/.dsh/settings.yaml

auto-continue:
  paused: false
  continueText: '繼續'
  continueTextMaxTokens: '繼續'
  guardTools: true
  graceMs: 3000
  cooldownMs: 20000
  maxConsecutive: 3
  scanOnBoot: true
  freshMs: 900000
  classify: true
  backoffFactor: 2
  backoffMaxMs: 300000
  loopGuard: true
  notify: false

常用調參方向:把 cooldownMsmaxConsecutive 調高可降低頻繁續跑;開啓 notify 可在自動繼續、放棄或遇到永久性錯誤時彈出瀏覽器通知(首次會請求權限)。

適用場景與注意

適合誰: 長時間用 dsh web 跑 Agent 任務、且經常遇到網絡或上游臨時故障的開發者。對 max-tokens 截斷、宿主崩潰後遺留的中斷回合,也能減少手動盯屏。

使用前請注意:

  1. 插件引擎跑在 dsh 宿主進程內,自動發送的 sessions.prompt 與手動點發送權限相同。安裝前應閱讀源碼並確認 MIT 許可證,理解它會以當前 dsh 進程權限代你發消息。
  2. 錯誤分類能擋掉認證、餘額等永久性失敗,但關閉分類後會對所有錯誤續跑;冪等護欄和循環守衛建議保持開啓,尤其在涉及 git push 等可能部分成功的工具時。
  3. 全局暫停或會話級暫停生效時,只有通知裏的「立即續跑」會破例發送一次;需要人工介入的回合,用暫停比反覆自動繼續更合適。
  4. SkillHub(skillhub.cn)是 DSH 插件社區目錄,與 DeepSeek / 幻方無官方從屬關係;DSH 本身遵循「一切皆插件」的擴展思路,本插件是社區維護的工作流類擴展。

鏈接

經過上面的步驟,中斷恢復從「盯着界面手動續」變成可配置、可統計、可暫停的自動化流程;對依賴 dsh web 長時間跑任務的場景,能少掉不少無效等待。

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

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

小夜