DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-auto-continue

Auto Continue

适用于 DeepSeek Harness (DSH) 的自动继续插件:当一轮因速率限制 (429)、配额耗尽、空响应或您自行配置的错误代码而结束时自动恢复,并提供每个会话的连续失败次数限制和一键快速切

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add dsh-auto-continue@0.4.7
README兼容性版本

兼容性与来源证明

Auto Continue 以 dsh-auto-continue 发布,当前版本为 0.4.7。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/11/4

版本

0.4.7stable
2026/10/5
0.4.6stable
2026/10/5
0.4.5stable
2026/10/5
查看其余 6 个版本收起版本
0.4.4stable
2026/10/4
0.4.3stable
2026/10/4
0.4.2stable
2026/10/4
0.4.1stable
2026/10/4
0.4.0stable
2026/10/4
0.1.0stable
2026/9/10

相关插件

正在加载相关插件…

最新版
0.4.7
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
114.6 kB
文件数
8
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 0
周下载
397
安全扫描
✓ v0.4.7 扫描通过
最近提交
2026/10/5
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 productivity-workflow 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Experimental Schedule Bundle@deepseek-ai/dsh-experimental-schedule-bundle为 Web 组合添加 Schedule、其任务页面和时间上下文的可选捆绑包Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / pet / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。

README

dsh-auto-continue

Auto-continue plugin for DeepSeek Harness (DSH) — when a turn dies on a rate limit, a quota exhaustion or an empty response, the plugin waits a moment and sends continue for you, so a long task survives a 429 instead of stopping dead. It keeps trying until the turn succeeds or a configurable consecutive-failure limit is hit, and any successful turn resets the counter to zero.

中文说明 →

Install

Requirements: Node ≥ 20 · DSH ≥ 0.2.0-rc.2

# 1. install the plugin into your DSH profile
dsh plugin --profile web add dsh-auto-continue

# 2. restart DSH  (the browser half is served at startup)
# 3. open  Settings → Auto-Continue  in the sidebar to configure it

That's it — the quick switch appears at the bottom of the composer straight away, and the plugin is already working with sensible defaults. Set Consecutive failure limit to anything from 1 to 100 (default 20), and add extra error codes if your provider returns something unusual.

Other ways to install / verify
# from a local checkout (editable)
git clone https://github.com/spix18/dsh-auto-continue
dsh plugin --profile web add "file:$PWD/dsh-auto-continue"

# headless profile instead of web
dsh plugin --profile headless add dsh-auto-continue

# run the verification harness (56 assertions over both halves, no DSH needed)
node test/run.mjs

If you installed from a checkout, re-run dsh plugin --profile web add "file:$PWD/dsh-auto-continue" after editing, then restart DSH.

Features

🔄 Turn-level auto-continueRuns after dsh-llm's own step-level retries are exhausted — the last line of defence for a turn that already failed
🚦 Knows the real failure classesRATE_LIMIT (429), QUOTA, ACCOUNT_QUOTA and EMPTY_RESPONSE are built in, always on
➕ Your own error codesAdd any code from Settings — a recursive search, so a provider message buried in an error cause still matches
🎛 Quick switch in the composerA pill at the bottom of the input area: click to arm or disarm without leaving the conversation
⚙️ Settings pageIts own section in the sidebar (Settings → Auto-Continue), rendered through DSH's official slot API — no DOM scraping
🧮 Per-session counterA failing session stops on its own; other sessions are unaffected. Any successful turn resets the count
✋ Manual message resetsSend a message yourself and every counter goes back to zero — auto-continues are not "interference"
⏱️ Random 1–2 s backoffDeliberately flat, not growing: it rides out a sliding rate-limit window instead of backing off past it
💾 Settings persistStored in ~/.dsh/dsh-auto-continue.json

How it works

LLM returns 429 / quota exhausted / an empty response
  ↓
dsh-llm retries the step itself (built in: 5 attempts, 500ms → 10s backoff)
  ↓
retries exhausted → the turn ends with  reason.kind === 'error'  or  'max-tokens'
  ↓
★ this plugin steps in
  ↓
wait 1–2 s at random → send "continue" → a fresh turn starts ✅
  ↓
…if it fails again, repeat up to the consecutive-failure limit
  ↓
any turn that ends normally → counter back to 0 🎉
  ↓
limit reached → stop and wait for you

Built-in codes are matched against LlmFailure.code exactly — DSH's documented contract is to route on the code, never by parsing a message. Codes you add yourself are matched against the whole recursive error, so an odd provider payload still gets caught.

SERVER, TIMEOUT and TRANSPORT are intentionally not built in: dsh-llm already retries those inside the step, and continuing the turn on top of that would double up.

Settings

Open Settings → Auto-Continue.

ControlWhat it does
Enable pluginMaster switch. Turning it off hides the composer pill and stops all auto-continues
Show the quick switch in the composerHides just the pill; auto-continue keeps working
Consecutive failure limit1–100 (default 20). Any successful turn resets the count
Additional auto-continue error codesComma- or newline-separated. Multi-word provider messages are kept whole

Configuration (optional)

Declare overrides in cordis.patch.yml or your profile config:

- id: auto-continue
  name: dsh-auto-continue
  config:
    maxRetries: 20                 # consecutive failures before giving up
    continueMessage: "continue"    # the text sent as the follow-up turn
    errorCodes: ["invalid_request_error"]

Architecture

A standard two-half DSH plugin (Cordis):

dsh-auto-continue/
├── package.json          # dsh.bundle.patch + dsh.client declarations
├── cordis.patch.yml      # bundle patch: inserts the plugin row
├── lib/
│   ├── index.js          # host: error interception, backoff, continue, HTTP routes
│   └── client.js         # browser: composer bar + Settings section (React via slots)
├── test/run.mjs          # verification harness (56 assertions, both halves)
├── LICENSE               # MIT
└── README.md

Host half (lib/index.js)

HookPurpose
ctx.inject(["webServer"])Six HTTP routes under /api/dsh-auto-continue/* for the browser half
ctx.on("session/event", …)Watches turn/end for a retryable reason, then schedules the continue
ctx.agents.get(id).followup(…)Sends the continue user message

Browser half (lib/client.js) — React registered through DSH's official slot API (@deepseek-ai/dsh-client-ui-slots) instead of scraping CSS-module hashes:

  • conversation.input.left → the quick-switch pill in the composer tool row
  • settings.section → the Settings → Auto-Continue page
  • Polls GET /api/dsh-auto-continue/state every 2 s, pausing while the tab is hidden
  • Every registration is wrapped so a failure can never blank the slot
  • Both seats are kind: 'list' slots, so the plugin can never displace a core plugin's own entry — see Slot safety

Slot safety

DSH slots come in kinds. A list slot is keyed by id, so any number of plugins can contribute to it. A single slot holds exactly one entry — and the core plugin that owns it occupies that entry itself, at the end of its own apply. ctx.slots.register throws single slot "<name>" already has a registration for a second one.

That throw happens inside the owning plugin's own apply. So a collision does not merely fail the newcomer — it kills the core plugin's fiber and every plugin waiting on the service that plugin provides.

v0.4.2 claimed conversation.composer.bar (kind: 'single', occupied by @deepseek-ai/dsh-client-ui-conversation). At web boot that plugin failed, uiConversation never appeared, and seven dependents went down with it:

web boot: 8 entries did not activate
@deepseek-ai/dsh-client-ui-conversation: failed
@deepseek-ai/dsh-client-ui-chat: pending (waiting for service: uiConversation)
@deepseek-ai/dsh-client-ui-workflow-run: pending (waiting for service: uiConversation)
… and 5 more

v0.4.3 moved the switch to a list slot, which fixed the outage — but to conversation.input.dock, documented as "full-width entries above the composer card". A 24 px pill in a strip built for full-width entries gets stretched edge to edge by the container's align-items: stretch, which is exactly how it looked.

v0.4.4 moved it to conversation.input.left — "compact controls at the left of the composer tool row", the shape this control actually is. The test suite now records the documented shape of every slot this plugin touches, so neither the collision nor the mismatch can come back.

Permissions

  • No filesystem access beyond settings — only ~/.dsh/dsh-auto-continue.json (< 1 KB)
  • Never reads your API key — it reuses DSH's own agent / followup channel
  • No outbound network — all HTTP routes go through DSH's built-in web server (loopback only)

Upgrading from the old dsh-auto-continue-429? Your existing retry limit and error-code list are read from ~/.dsh/auto-continue-429.json once, then written to the new file.

Debugging

Host-side log lines (DSH stdout):

[Auto-Continue] Session sess_xxx failure 3/20, sending continue in 1862ms
[Auto-Continue] Sent continue to session sess_xxx
[Auto-Continue] Consecutive failure limit of 20 reached, stopping automatic continue

Settings file:

~/.dsh/dsh-auto-continue.json
→ {"enabled": true, "quickOn": true, "buttonHidden": false, "maxRetries": 20, "errorCodes": [...]}

Support

If you find this useful, you can support development at ko-fi.com/spix18. ☕

License

MIT © 2026