@dsh-external/dsh-llm-retry-settings
A settings card for the DSH LLM auto-retry engine (@deepseek-ai/dsh-llm-retry). Tune the retry count and backoff from Settings → General; changes take effect immediately.
[中文说明](./README.zh-CN.md)
Features
- Includes the settings UI (client bundle
lib/client.js): a card in Settings → General — no separate UI package needed. - Overrides
maxRetries,initialDelayMs,maxDelayMs, andjitterRatioon theagent/request-errorretry policy. - Preserves each provider's own
modeandretryableCodes— only the retry count and backoff timing are overridden. - Default
enabled: false= fully bypassed; nothing changes until you enable the override.
Install
Prerequisite: a DSH Desktop profile (the web profile lives at ~/.dsh/profiles/web).
Option A — GitHub Release package (recommended)
# 1. download the packaged plugin tgz from the v0.0.1 release
gh release download v0.0.1 -R zeng6125-rgb/dsh-llm-retry-settings
# 2. unpack it into the profile's node_modules
mkdir -p ~/.dsh/profiles/web/node_modules/@dsh-external
tar -xzf dsh-external-dsh-llm-retry-settings-0.0.1.tgz -C ~/.dsh/profiles/web/node_modules/@dsh-external/
mv ~/.dsh/profiles/web/node_modules/@dsh-external/package \
~/.dsh/profiles/web/node_modules/@dsh-external/dsh-llm-retry-settings
# 3. register the bundle in the profile, then restart DSH
# add "@dsh-external/dsh-llm-retry-settings" to dsh.profile.bundles
# in ~/.dsh/profiles/web/package.jsonOption B — dsh CLI / pnpm (requires git + network)
The dsh plugin command forwards its arguments to pnpm in the profile directory:
# from a git repo (pnpm clones it; the committed lib/ means no build needed)
dsh plugin --profile web add github:zeng6125-rgb/dsh-llm-retry-settings
# or from the release tarball URL
dsh plugin --profile web add https://github.com/zeng6125-rgb/dsh-llm-retry-settings/releases/download/v0.0.1/dsh-external-dsh-llm-retry-settings-0.0.1.tgzThen enable the plugin in the profile: add "@dsh-external/dsh-llm-retry-settings" to dsh.profile.bundles (or use the Desktop plugin-inventory UI) and restart DSH.
> Note: the command is dsh plugin (a subcommand of the dsh CLI), not dsh-plugin. The dsh CLI is bundled with the Desktop app; if it is not on your PATH, invoke it via the app's node_modules bin, e.g. node "<app>/node_modules/@deepseek-ai/dsh/lib/bin.js" plugin --profile web ....
Option C — from source
git clone https://github.com/zeng6125-rgb/dsh-llm-retry-settings.git
cd dsh-llm-retry-settings
npm run build # bash scripts/build.sh (requires DSH_CHECKOUT)Link the local build into the profile and register the bundle:
dsh plugin --profile web link "$PWD"
# then add "@dsh-external/dsh-llm-retry-settings" to dsh.profile.bundles and restart DSHUsage
1. Open DSH Settings → General. 2. Find the LLM 自动重试 card. 3. Toggle 开启覆盖 (enabled) to apply the override. 4. Set maxRetries / initialDelayMs / maxDelayMs / jitterRatio and click 保存.
Changes are written to the dsh-llm-retry settings namespace and picked up live by the retry engine.
Configuration
| Key | Type | Default | Description |
|---|---|---|---|
enabled | boolean | false | Enable the retry-policy override. |
maxRetries | integer (≥ 0) | 2 | Maximum retry count (0 = do not retry). |
initialDelayMs | integer (≥ 1) | 500 | Initial backoff before the first retry (ms). |
maxDelayMs | integer (≥ 1) | 10000 | Upper bound for backoff (ms). |
jitterRatio | number (0–1) | 0.1 | Random jitter applied to backoff (0 = none). |
How it works
The host half registers the dsh-llm-retry settings namespace (schema validation + persistence + live sync) and prepends an agent/request-error listener that rewrites retryPolicy before the official @deepseek-ai/dsh-llm-retry recover runs:
agent/request-error → [this plugin: override count/backoff] → dsh-llm-retry recoverUI
Settings → General → LLM 自动重试 card. Edits are draft-based: click 保存 to commit or 放弃 to discard. After saving, the card verifies the write against the settings snapshot and shows 已保存 ✓ / 保存失败 ✗.
Requirements
- Host plugin:
@deepseek-ai/dsh-llm-retry - Client runtime:
@deepseek-ai/dsh-client-web-react - DSH
settingsservice
Build
npm run build # bash scripts/build.sh (requires DSH_CHECKOUT)
npm run typecheck # tsc --noEmitLicense
[MIT](./LICENSE)