前言¶
在使用 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 中保持会话连续性的场景。