New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

dsh-reconnect

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dsh-reconnect

Safe model-request retry for DeepSeek Harness with exponential backoff, model-availability recovery, and configurable unknown-error limits.

latest
Source
npmnpm
Version
3.0.1
Version published
Weekly downloads
53
-48.54%
Maintainers
1
Weekly downloads
 
Created
Source

dsh-reconnect

Safe model-request retry for DeepSeek Harness with exponential backoff, relay/proxy recovery, and a live settings page.

  • Source code: github.com/mrbeandev/dsh-reconnect
  • npm package: npmjs.com/package/dsh-reconnect

Overview

dsh-reconnect retries recoverable model requests so temporary network, gateway, or provider failures do not interrupt an agent turn or a long-running task.

The plugin listens to DSH's agent/request-error waterfall. After the built-in normal Provider retry policy is exhausted, or when an always policy delegates recovery downstream, ReConnect resubmits the same model request using its own policy — so a relay that wobbles mid-stream is absorbed rather than surfaced as a session error.

Retry policy

ConditionBehavior
EMPTY_RESPONSE, RATE_LIMIT, SERVER, STREAM_CLOSED, TIMEOUT, TRANSPORTRetry indefinitely
Missing or unconfigured modelRetry indefinitely while configuration recovers
QUOTADo not retry by default; enable with retryQuota
Unknown errors such as PI_AI_ERRORRetry indefinitely by default; disable retryUnknown to apply a limit
Tool, argument, authentication, credential, context-overflow, and aborted errorsDo not retry

Tool execution failures in tool/result are outside this plugin's retry boundary. ReConnect uses the machine-readable failure code from agent/request-error; it does not infer model failures from arbitrary tool output.

Backoff and cancellation

  • Exponential backoff: 1s → 2s → 4s → …, capped at 60s by default
  • Honors a positive Provider Retry-After value as a minimum wait, even when it exceeds the local backoff cap
  • Emits standard llm/retry and llm/retry-started session events
  • Stops immediately when the turn aborts or the plugin unloads
  • Drains pending waits safely during hot reload and shutdown

Settings page

Open Plugins → dsh-reconnect, then the reconnect row. Its configure control opens the plugin's settings card, and the changes apply to the next failed request without restarting DSH.

  • Maximum retry delay: 1, 2, 5, 10, 30, 60, or 120 seconds, or a custom value
  • Retry quota errors: disabled by default
  • Retry unknown errors indefinitely: enabled by default
  • Maximum unknown-error retries: defaults to 3; applies only when indefinite unknown retries are disabled

In a profile without a Web client (a terminal or headless profile, for example) the row's auto-generated settings form remains available as a fallback; on web profiles the dedicated card takes over.

Configuration

- insert:
    - id: reconnect
      name: dsh-reconnect
      config:
        maxDelayMs: 15000
        retryQuota: false
        retryUnknown: true
        unknownMaxRetries: 3
SettingTypeDefaultDescription
maxDelayMsinteger60000Maximum local exponential-backoff delay in milliseconds
retryQuotabooleanfalseRetry quota or exhausted-balance errors indefinitely
retryUnknownbooleantrueRetry unknown error codes indefinitely
unknownMaxRetriesinteger3Consecutive unknown-error limit when retryUnknown is disabled

maxDelayMs limits only the local exponential delay. It does not cap a Provider Retry-After value or the total retry duration.

All four fields are declared volatile, so a change saved from the Plugins page applies to the next failed request without a restart.

Installation

Install and activate the package in the DSH web profile:

dsh plugin --profile web add dsh-reconnect

Then restart the running DSH web process if one is already up. Open Plugins → dsh-reconnect to confirm the bundle and its settings card are active.

The dsh plugin command forwards to the profile package manager. Because this package declares a dsh.bundle patch, DSH also adds it to the selected profile's active bundle list; no manual cordis.yml edit is needed.

To update or remove it later:

dsh plugin --profile web update dsh-reconnect
dsh plugin --profile web remove dsh-reconnect

GitHub

dsh plugin --profile web add github:mrbeandev/dsh-reconnect

Pin an exact release or commit for reproducible installations:

dsh plugin --profile web add github:mrbeandev/dsh-reconnect#v3.0.1

Local checkout

git clone https://github.com/mrbeandev/dsh-reconnect.git
dsh plugin --profile web add ./dsh-reconnect

Requirements

  • DeepSeek Harness 0.2.0-rc.1 or later
  • Node.js ^22.19.0 or >=24.0.0
  • A web profile for the visual settings card (the engine runs headless without it)

The settings card never reads credentials.

Compatibility

dsh-reconnect follows the Harness plugin API. Its breaking surface tracks the harness minor version during the pre-1.0 0.x line:

dsh-reconnectRequired DSHNotes
3.0.1+≥ 0.2.0-rc.1First release for the 0.2 config rewrite (.volatile() Config fields, the configForms client service, and the plugins.row.config slot).
3.0.0—Do not use. Its web settings card fails to activate, so the Web UI shows "Failed to load plugins — dsh-reconnect". Fixed in 3.0.1.
2.x0.1.5-rc.xReleased for the settings-namespace model that SettingsForms.register() supported. It cannot start on DSH ≥ 0.2 — ctx.settings.register no longer exists — so upgrade the profile instead.

Only the current major line receives fixes. Install the matching line for your DSH profile rather than upgrading in place on an older release.

Development

npm test
npm pack --dry-run

Publishing runs the test suite through prepublishOnly.

Credits

English edition maintained by the DeepSeek Harness community, based on the MIT-licensed MistRain-1/dsh-reconnect project. The original copyright notice is retained in LICENSE.

License

MIT

Keywords

dsh

FAQs

Package last updated on 30 Sep 2026

Related posts