DeepSeek Harness 會話救援插件:自動恢復失敗與截斷對話

前言

在使用 DSH Web profile 運行智能體時,模型遇到 transient 錯誤或輸出被截斷通常需要手動干預。jayyuen666/dsh-session-rescue 旨在通過自動恢復邏輯和客戶端交互界面,減少這種手動操作。

插件定位

該插件由 JayYuen666 維護,定位爲 DSH Web 會話救援工具。它通過自動注入消息和提供客戶端 UI,處理模型失敗、截斷及未完成的 todo 列表。

核心功能

  • 三種自動恢復:針對 transient 失敗、max-tokens 截斷、未完成 todo 列表進行自動抓取。
  • 請求級 429 後備:當 host 未配置 retryPolicy 時接管 429 請求。
  • 客戶端交互 UI:提供編輯重發、fork 重發、停止並重問、手動重試及繼續輸出功能。
  • 自調度輪詢:使用 1s(待處理時)或 5s(後備)的頻率輪詢狀態。
  • 設置與校驗:包含設置卡片、429 重試預設以及與 @deepseek-ai/dsh-plugin-shared 的版本匹配檢查。

安裝與依賴

安裝前請確保已安裝 DeepSeek Harness (DSH) 版本 ^0.2.1-rc.2。

dsh plugin --profile web add @jayyuen66/dsh-session-rescue

自動恢復機制

插件監聽特定 Cordis 事件,在滿足條件時自動注入消息:

  1. resume:監聽 agent/error。當 failure 被判定爲 transient(如 RATE_LIMIT、SERVER、TIMEOUT、TRANSPORT、EMPTY_RESPONSE、HTTP 429、5xx、QUOTA、PI_AI_ERROR)時,在 resumeDelayMs 後恢復。
  2. continue:監聽 agent/status。當狀態變爲 idle 且最後 turn/end 的 reason.kind 爲 max-tokens 時,在 continueDelayMs 後繼續對話。
  3. unfinished:監聽 turn/end 和 todo/write。當 turn/end 完成但 todo/write 仍包含未完成項時,在 unfinishedDelayMs 後抓取未完成 todo。

429 請求後備策略

插件僅在 host 未配置 retryPolicy 時接管 429 請求。

  • 時間線:默認後備策略爲 2s/5s/10s/20s/30s,每次會話最多 5 次重試。
  • 限制:若 host 返回 Retry-After,則優先使用該值;若超過 30s(requestRetryBackoffCapMs),則不等待,直接委託給 host 處理。
  • 重置:計數器在 agent/status 變爲 idle 時重置。

客戶端 UI

客戶端 UI 懸浮於輸入框下方,提供以下操作:

  • 編輯重發:編輯當前會話內容並重發。
  • Fork 重發:創建新分支並重發。
  • 停止並重問:停止當前輪次並重新提問。
  • 手動控制:手動重試或繼續輸出。
  • 狀態顯示:倒計時橫幅與會話開關。

限制與注意事項

  • 不適用場景:不適用於子代理、aborted/中斷的 turns、ask_user_question,以及第一次 user/message 來源爲 schedule 的輪次。
  • 永久失敗:不處理 AUTH、INVALID_CREDENTIAL、MISSING_CREDENTIAL、INVALID_REQUEST、NO_ADAPTER、餘額不足等永久性錯誤。
  • 版本依賴:若 profile pins @deepseek-ai/dsh-plugin-shared,版本必須匹配,否則可能導致插件加載失敗。

總結

該插件通過自動化處理常見的網絡錯誤和截斷問題,並提供了豐富的客戶端交互手段,適用於需要在 Web profile 中保持會話連續性的場景。

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

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

小夜