dsh-auto-continue

DSH PLUGIN浏览器与联网

仓库 kemomimi12/dsh-auto-continue

浏览器与联网 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

Automatic turn-level resume for DeepSeek Harness: continues after transient model-request failures, merges provider outages into one storm, and always yields to a manual stop.DeepSeek Harness 自动续行插件:模型请求临时失败导致轮次中断后自动接着做;同一次网关故障只重试一次;手动停止永远优先。

一句话选型结论

按资料字段整理

dsh-auto-continue 是浏览器与联网类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类浏览器与联网 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-10-23 创建于 2026-10-22
README 13.4 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add @xfufu/dsh-auto-continue@1.0.1
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

浏览器与联网
字段来自项目仓库与公开索引,中文说明由本站标注

适用场景

智能体编排

上游标签

cordisdeepseek-harnessdshdsh-pluginfault-tolerancellm-agents

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在浏览器与联网场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-auto-continue当前 L5 · 运行验证通过 低风险 0 未标注 有
dsh-our-free-model L3 · 安装规范通过 低风险 8,796 未标注 有
dsh-web L3 · 安装规范通过 低风险 8,549 未标注 无
BrowserSkill L4 · 沙盒安装通过 低风险 8,456 未标注 有
dsh-pocket L5 · 运行验证通过 低风险 1,656 0.2.0-rc.2 等 12 个 有
Browser4 L4 · 沙盒安装通过 中风险 1,152 未标注 有

仓库档案

浏览器与联网
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方kemomimi12仓库 dsh-auto-continue · 默认分支 main
分类浏览器与联网network
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言未标注仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-10-22 · 2026-10-23最后推送 2026-10-22
本站收录2026-10-30首次进入本站目录的时间

README 全文

13.4 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-auto-continue

会话因为一次模型请求失败而结束轮次后,自动排队一条续行提示词接着做。

给 DeepSeek Harness 用的 Cordis 插件。手动停止永远优先,永久错误不重试,同一次网关故障只买一次续行。

它解决什么

dsh 的 agent loop 把「一次模型请求失败」当作整个轮次的终点:

// dsh-agent-loop: step() 内
if (finish.kind === 'error' || finish.kind === 'aborted') {
const action = await this.dispatch.waterfall('agent/request-error', {...});
if (action?.kind !== 'retry') throw new LlmError(...);   // → turn/end { kind: 'error' }
}

@deepseek-ai/dsh-llm-retry 只负责轮次内同一步的重试,而且只重试提供方策略里列出的失败码。当网关把长 SSE 掐断(MALFORMED_RESPONSE / STREAM_CLOSED),或重试预算耗尽时,轮次直接死掉,会话停在 idle 等你手动打字。

本插件在轮次边界补上这一层。

与内置重试的分工

层 谁负责 边界
同一步内重试 dsh-llm-retry + 适配器的 retryPolicy agent/request-error
跨轮次续行 本插件 session/event 的 turn/end

两层互补:先让内置重试把能救的救回来(便宜、无副作用),救不回来再由本插件续行(会多花一次上下文)。

建议同时配置 retryPolicy,否则 MALFORMED_RESPONSE / STREAM_CLOSED 这类错误根本不会进入重试,会直接落到本插件这一层,白白多花一次完整上下文。见下方配套配置。

安装

本包发布在 npm 官方源(registry.npmjs.org),公开包,安装不需要任何 token。

方式一:从 npm 安装(推荐)

让 dsh 里的模型调用 plugin_manager 工具:

install_bundle  target: @xfufu/dsh-auto-continue

install_bundle 会自己处理 pnpm 安装、写 profile 的 package.json 与 bundle 列表,不要手工编辑。

方式二:直接从 GitHub clone

不需要 npm 也能装,适合想改源码的人:

git clone https://github.com/kemomimi12/dsh-auto-continue.git D:/plugins/dsh-auto-continue
install_bundle  target: D:/plugins/dsh-auto-continue

方式三:手工写 profile

如果不想用 plugin_manager,编辑你的 profile($DSH_HOME/profiles//):

  1. package.json 的 dependencies 加一行:
"@xfufu/dsh-auto-continue": "^1.0.0"

或指向本地 clone:

"@xfufu/dsh-auto-continue": "link:D:/plugins/dsh-auto-continue"
  1. 同一个 package.json 的 dsh.profile.bundles 追加:
"@xfufu/dsh-auto-continue"
  1. 在 profile 目录跑一次 pnpm install。

验证安装

插件行出现在 profile 里且状态为 active 即成功。可用 plugin_manager 的 list_plugins 查看,或直接查:

include:auto-continue    enabled: true    fiberPhase: active

再确认日志里有这一行(说明启动自检通过):

auto-continue: host interfaces verified, resuming enabled

配套配置:retryPolicy

本插件只处理跨轮次的恢复。让内置重试先接住可重试的协议错误,才能少花上下文。在 cordis.patch.yml 里给提供方适配器加上:

- id: llm-deepseek
name: "@deepseek-ai/dsh-llm-deepseek-api-key"
config:
# ... 你原有的 baseURL / models / apiKeyEnv ...
retryPolicy:
mode: normal
maxRetries: 5
retryableCodes:
- EMPTY_RESPONSE
- RATE_LIMIT
- SERVER
- TIMEOUT
- TRANSPORT
- MALFORMED_RESPONSE   # tool 参数 JSON 被截断
- STREAM_CLOSED        # 流在 message_stop 之前结束
backoff:
initialDelayMs: 1000
maxDelayMs: 120000     # 必须 ≥ 网关的 Retry-After,否则会放弃重试
jitterRatio: 0.2

> maxDelayMs 小于提供方返回的 Retry-After 时,normal 模式会直接放弃重试。若你的网关会返回 Retry-After: 120000,这里就得是 120000。
>
> maxRetries: 5 是个折中:最坏退避约 31 秒;8 次则会让最后一次撞上 120 秒上限。

安全边界

  • 手动停止永远优先。 续行消息是立刻排进 inbox 的,不是藏在不可见的定时器里。你按停止 → cancel() 清空 inbox → 插件观察到消息消失并停手。
  • 人类输入优先。 你一旦发出消息,插件会把自己还排在队里的续行提示撤掉。
  • 永久错误不重试。 AUTH / QUOTA / INVALID_REQUEST / CONTEXT_WINDOW_EXCEEDED 等直接放弃。
  • 有预算上限。 每个会话有滚动窗口内的次数上限 + 连续失败上限,防止坏路由把余额烧穿。
  • 故障风暴合并。 同一错误码在时间窗内反复出现视为一次故障,只买一次续行(见下)。
  • 不抢 goal 的活。 会话已有 armed 的 goal 时不介入,避免和 dsh-goal-round-driver 打架。
  • 卸载即停。 插件 dispose 时取消所有待发续行。

故障风暴合并

网关整分钟不可用时,每个轮次都会以同一个错误码失败。若不合并,每次失败都像一个独立事件,各自买一次续行——2026-10-21 那次真实事故就是这样烧掉了 5 次。

风暴的判定:

  • 相同 code,且距上次同码失败 < stormWindowMs → 视为同一场风暴
  • 不同 code,或间隔超过 stormWindowMs → 新风暴,重新计数
  • 轮次正常结束、人工介入、或遇到永久错误 → 风暴关闭

一场风暴最多买 maxResumesPerStorm 次续行(默认 1)。

真实事故回放(5 个连续 SERVER 失败):

不合并:turn 7..11 各续一次 → 5 次
合并后:turn 7 续一次,turn 8..11 停手 → 1 次

配置

写在 cordis.patch.yml(或直接改 profile 里 auto-continue 那一行):

- id: auto-continue
name: &#x27;@xfufu/dsh-auto-continue&#x27;
config:
enabled: true
maxResumesPerWindow: 5        # 滚动窗口内最多自动续行几次
windowMs: 3600000             # 窗口长度(1 小时)
maxConsecutiveFailures: 3     # 连续失败几次后彻底停手
includeSubagents: true        # 是否也管子代理会话
stormWindowMs: 120000         # 同码失败间隔小于它就算同一场风暴
maxResumesPerStorm: 1         # 一场风暴最多买几次续行

> 这一行是可选的。不写就用代码里的默认值(与上表一致)。
>
> 注意:本插件没有声明 Config schema(原因见实现约束),所以 plugin_manager 的 Config.listConfigs 会显示 status: absent,这是预期行为,不影响插件工作。

字段 默认 含义
enabled true 总开关
maxResumesPerWindow 5 窗口内最多续行次数
windowMs 3600000 滚动窗口长度
maxConsecutiveFailures 3 连续失败(期间无正常结束轮次)上限
includeSubagents true 是否处理 origin: &#x27;subagent&#x27; 的会话
stormWindowMs 120000 同码失败合并为同一风暴的时间窗
maxResumesPerStorm 1 单场风暴的续行上限

四道闸门

一次失败要依次穿过,全部通过才续行:

  1. 永久错误 → 直接放弃
  2. 连续失败上限 maxConsecutiveFailures
  3. 滚动预算 maxResumesPerWindow
  4. 风暴预算 maxResumesPerStorm

实际续行次数取这几者的最小值。

续行提示词长什么样

进入历史的是普通 user 角色消息,source.kind === &#x27;auto-continue&#x27;:

The previous turn ended because a model request failed: TRANSPORT: DeepSeek Messages transport failed
This is automatic resume attempt 2. The session state above is authoritative.
Re-check the current workspace and tool results instead of assuming earlier narration is still current, then continue the task from where it stopped.
Do not repeat tool calls whose results are already in the transcript.

提示词刻意让模型重新核对工作区而不是相信之前的叙述——这正好对上「网关断流后可能有半截工具调用」的场景。

实现约束

本模块只 import node:crypto,不 import 任何包。原因:bundle 以 link: 方式安装后,ESM 从真实路径解析裸说明符(realpath 之后在 profile 之外),@deepseek-ai/* 会解析失败。所以续行消息在本地构造,config 也在本地校验,不依赖 @deepseek-ai/schemastery。

代价是没有 Config schema:plugin_manager 的配置页看不到字段,改配置直接编辑 cordis.patch.yml。

测试

npm run verify       # 全部:28 项行为 + 风暴 + 回放 + 打包校验
npm test             # 仅 28 项行为测试(含 7 项启动自检用例)
npm run test:storm   # 风暴合并效果演示
npm run test:replay  # 真实故障序列回放
npm run verify:pack  # 检查 npm 包内容(必需文件齐全、无测试文件泄漏)
文件 作用
test.mjs 28 项行为测试,用假 host 驱动真实插件逻辑
storm.mjs 对比有/无风暴合并:同一次故障从 5 次续行降到 1 次
replay.mjs 用 2026-10-21 真实会话事件序列回放决策
verify-pack.mjs 用 npm pack --dry-run 断言打包内容

test.mjs 覆盖:临时失败续行、永久错误不续行、用户中止不续行、人类输入撤回续行、连续失败上限、模型输出不算进展、正常结束才算进展、失败续行不重复购买、滚动预算、单风暴只买一次、不同码各自成风暴、超窗口算新风暴、子代理开关、busy 时不打扰、卸载后不再触发、7 项启动自检。

> 这些测试不依赖 dsh 运行时,只依赖 Node ≥ 22。

发布

维护者流程。推 tag 即触发 .github/workflows/publish.yml:

npm version patch        # 或 minor / major,自动改 package.json 并打 tag
git push --follow-tags

工作流会:

  1. 校验 tag 与 package.json 的 version 一致(不一致直接失败)
  2. 跑 npm run verify(行为测试 + 风暴 + 回放 + 打包校验)
  3. npm publish --provenance --access public 到 https://registry.npmjs.org

prepublishOnly 会在真正发布前再跑一遍 verify,prepack 会校验包名作用域与 repository 是否匹配。

一次性准备:NPM_TOKEN

工作流需要仓库 secret NPM_TOKEN,默认的 GITHUB_TOKEN 不能发布到 npm 官方源。

  1. 登录 npm → Access Tokens → Generate New Token → 选 Automation
    (Automation 类型绕过 2FA 提示,适合 CI)
  2. 复制 token
  3. GitHub 仓库 → Settings → Secrets and variables → Actions → New repository secret
    - Name: NPM_TOKEN
    - Secret: 粘贴 token

本地发布(可选)

不想走 CI 时,本地也能发:

npm login          # 首次
npm publish        # prepublishOnly 会自动跑 verify

试运行

发布前可先手动跑一次不发布的校验:

> GitHub 仓库 → Actions → publish → Run workflow → 勾选 dry_run

这会走完全部校验但不执行 npm publish。

已知限制

  • 只在轮次边界工作。 它不能修复一次失败的请求本身,只能在该轮次结束后重开一轮。
  • 续行会多花一次完整上下文。 这是它排在 retryPolicy 之后的原因。
  • 没有持久化状态。 插件状态在内存里,dsh 重启后预算与风暴记录归零。
  • 未在多个 dsh 版本上验证。 依赖的公开接口见下方启动自检;自检能挡住接口缺失,但挡不住语义变化(例如 followup 还在、但行为改了)。
  • 子代理会话默认也管。 若子代理失败后你想让它直接结束,把 includeSubagents 设为 false。

兼容性

项 要求
Node ≥ 22(用了 randomUUID、setImmediate)
dsh 提供 agents / sessions 服务与 session/event 事件(当前 desktop 版本满足)
权限 无特殊要求,纯 Host 插件,不碰文件系统

启动自检

插件激活时会结构性地检查它依赖的每个接口是否存在,不依赖版本号字符串。任一缺失就记录一条 error 日志并禁用自己,而不是装上去然后静默不工作。

检查项:

接口 用途
agents.get(id) 按 session 找到 live Agent
agents.list() 激活时枚举已有 Agent
ctx.on() / ctx.effect() 注册并持有事件监听
Agent.followup(message) 排入续行提示词
Agent.inbox.nextTurn / nextStep 续行前检查是否已有排队输入
Agent.inbox.remove(id) 人工接管时撤回续行
Agent.status 避免打扰正在运行的 agent
Agent.session 把会话事件对应到 agent

不兼容时的日志长这样:

auto-continue: disabling itself — this DeepSeek Harness does not expose 1 required interface(s):
- Agent.followup(message): needed to queue the resume prompt
Upgrade Harness, or remove the auto-continue bundle from the profile. Nothing will be resumed while disabled.

兼容时记一条确认:

auto-continue: host interfaces verified, resuming enabled

> 这条 info 日志是排查时的第一个检查点:看不到它,就说明插件没跑起来。

License

MIT

常见问题

6 问
答案由本站依据条目字段整理,不引用上游原文
dsh-auto-continue 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add @xfufu/dsh-auto-continue@1.0.1` 即可。

dsh-auto-continue 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-auto-continue 安全吗?

低风险。

dsh-auto-continue 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-auto-continue 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

同名或近似条目

8 条
不同作者的仓库分开列,请确认你要装的是哪一个
浏览器与联网
按星标排序,可作替代方案

dsh-our-free-model

dsh-our-free-model

在 DeepSeek Harness 中装上这个 DSH plugin,无需登录、注册或填 API Key,即可直接调用 DeepSeek

L3 · 安装规范通过 8,796 星

dsh-web

dsh-web

侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。

L3 · 安装规范通过 8,549 星

BrowserSkill

BrowserSkill

BrowserSkill 的 DeepSeek Harness 浏览器自动化桥接插件,通过原生浏览器工具控制可见的 Chrome 和 Edg

L4 · 沙盒安装通过 8,456 星

dsh-pocket

dsh-pocket

DSH Pocket 让 DeepSeek Harness 装进口袋:电脑跑 dsh web,手机扫码即实时同步访问(局域网+公网),人在外

L5 · 运行验证通过 1,656 星

Browser4

Browser4

L4 · 沙盒安装通过 1,152 星

agentrq

agentrq

L4 · 沙盒安装通过 1,140 星

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。