前言¶
在使用 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 事件,在滿足條件時自動注入消息:
- resume:監聽
agent/error。當failure被判定爲 transient(如 RATE_LIMIT、SERVER、TIMEOUT、TRANSPORT、EMPTY_RESPONSE、HTTP 429、5xx、QUOTA、PI_AI_ERROR)時,在resumeDelayMs後恢復。 - continue:監聽
agent/status。當狀態變爲idle且最後turn/end的reason.kind爲max-tokens時,在continueDelayMs後繼續對話。 - 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 中保持會話連續性的場景。