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 中保持会话连续性的场景。

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

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

小夜