dsh-auto-continue:在限流与空响应后自动续跑一轮

前言

在 DeepSeek Harness(DSH)里跑长任务时,一轮对话可能因为 429 限流、配额用尽、或模型返回空内容而异常结束。DSH 内置的 dsh-llm 会在单步内重试若干次,但步级重试耗尽后,整轮仍会停在那里,需要人工再发一条「继续」才能把任务接下去。

下面介绍社区插件 dsh-auto-continue(维护者 spix18):在可恢复的错误类结束一轮后,等待片刻并替你发送 continue,让长任务在限流窗口内有机会自行恢复,而不是硬停。

这是什么

dsh-auto-continue 是 DSH 的 Auto-continue 工作流类插件。定位是:当一轮在限流、配额、空响应或你自定义的错误码上失败时,在 dsh-llm 步级重试已经用尽 之后,再自动发起一轮带 continue 的跟进,直到该轮成功,或达到可配置的连续失败上限。

插件以标准 Cordis 双半部形式发布(npm 包名 dsh-auto-continue,当前 README 对应版本 0.4.7,许可证 MIT)。社区目录页:skillhub.cn/plugins/spix18/dsh-auto-continue;源码与说明:github.com/spix18/dsh-auto-continue。

核心功能

轮次级自动 continue

插件监听会话的 turn/end。若结束原因是可重试的错误(或你扩展的错误码),则在随机 1–2 秒 后退避(固定区间、不指数增长,便于滑过限流窗口),再通过 agent 的 followup 发送 continue 消息,开启新一轮。

内置始终匹配的错误码包括:RATE_LIMIT(429)、QUOTA、ACCOUNT_QUOTA、EMPTY_RESPONSE。这些与 DSH 文档一致,按 LlmFailure.code 精确 匹配,不解析错误文案。

SERVER、TIMEOUT、TRANSPORT 未 内置为自动 continue 对象:dsh-llm 已在步内重试,轮级再 continue 会叠加重试。

连续失败上限与会话隔离

同一 session 内连续自动 continue 失败会累加计数;任意一轮正常结束 或 你手动发送一条消息,计数归零。达到 Consecutive failure limit(默认 20,可调 1–100)后停止自动 continue,等待你介入。其他 session 互不影响。

自定义错误码

在设置页可追加逗号或换行分隔的错误码;匹配时对整棵错误对象做递归搜索,便于捕获嵌在 cause 里的厂商码。

界面与持久化

  • 输入区底部 composer 提供快捷开关 pill,可临时启用/关闭,无需离开对话。
  • 侧栏 Settings → Auto-Continue 通过 DSH 官方 slot API 渲染,不依赖 DOM scraping。
  • 设置写入 ~/.dsh/dsh-auto-continue.json。

浏览器半部注册在 conversation.input.left(list slot)与 settings.section;Host 半部提供 /api/dsh-auto-continue/* 路由供 UI 轮询状态(约每 2 秒,标签页隐藏时暂停)。

安装与启用

环境要求: Node ≥ 20;DSH ≥ 0.2.0-rc.2。

先做安装,再重启 DSH(浏览器端在启动时加载),最后在侧栏打开设置。

# 1. 安装到 web profile
dsh plugin --profile web add dsh-auto-continue

# 2. 重启 DSH
# 3. 在侧栏打开 Settings → Auto-Continue 按需配置

若使用 headless profile,将 --profile web 换为 --profile headless 即可(README 原文示例)。

安装完成后,composer 底部会出现快捷开关;默认参数即可工作。可将 Consecutive failure limit 设为 1–100,并按需添加额外错误码。

配置说明

设置页

控件 作用
Enable plugin 总开关;关闭后隐藏 pill 并停止所有自动 continue
Show the quick switch in the composer 仅隐藏 pill;后台 auto-continue 仍可运行
Consecutive failure limit 1–100,默认 20
Additional auto-continue error codes 额外错误码,逗号或换行分隔

Profile / patch 可选覆盖

可在 cordis.patch.yml 或 profile 配置中声明:

- id: auto-continue
  name: dsh-auto-continue
  config:
    maxRetries: 20                 # 连续失败多少次后放弃
    continueMessage: "continue"    # 跟进轮发送的文本
    errorCodes: ["invalid_request_error"]

典型工作流程

理解插件在栈中的位置,有助于判断是否该开 auto-continue:

LLM 返回 429 / 配额用尽 / 空响应
  ↓
dsh-llm 步内重试(内置约 5 次,500ms → 10s 退避)
  ↓
重试用尽 → turn 以 reason.kind === 'error' 或 'max-tokens' 结束
  ↓
dsh-auto-continue 介入
  ↓
随机等待 1–2 s → 发送 "continue" → 新一轮开始
  ↓
仍失败则重复,直至成功或达到连续失败上限

长脚本生成、多步 agent 工作流、对接容易 429 的 API 时,这一层「最后一道防线」可以减少因短暂限流而整任务中断的情况。若错误属于服务端/超时/传输且步内已在重试,通常不必指望本插件再叠一层 continue。

适用场景与注意

适合: 已在 DSH web(或 headless)profile 中开发或运行 agent,且经常遇到可恢复的 429、配额或空响应,希望少手动点「继续」的场景。

注意:

  • 插件与 DSH 进程同权限运行;安装前请阅读 源码 与 MIT 许可证,自行评估是否纳入环境。
  • 社区目录 skillhub.cn 与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本包为社区维护的工作流扩展。
  • 自动 continue 会消耗额外轮次与配额;连续失败上限是为避免无限循环而设,请按厂商限流策略调整 limit 与自定义错误码。
  • README 提供本地 checkout 与 node test/run.mjs 验证方式;日常安装以 npm 包与上述 dsh plugin add 命令为准。

结尾

dsh-auto-continue 在 DSH 步级重试之后补一层轮级恢复:识别限流、配额与空响应等失败类,退避后自动发送 continue,并可用 composer 快捷开关与设置页控制行为与上限。

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

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

Xiaoye