icrefin/dsh-model-retry-settings ↗★ 0

dsh-model-retry-settings

Max-retries control for DeepSeek Harness: adds one preference card to the web client's Settings → Model page that sets how many times a failed model request is retried. 适合需要自定义模型请求失败重试策略以应对网络波动的 DSH 用户。

패키지
dsh-model-retry-settings
호환성
미검증
Harness peer 범위
*
Cordis peer 범위
^4.0.1 || ^4.0.4
버전
1.0.0
라이선스
MIT
최근 업데이트
2026. 10. 11.

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:icrefin/dsh-model-retry-settings

Configuration

The card is the only surface. There is no Loader config file to edit and no plugin-specific state outside the settings document.

WhatWhere
the preferencethe fields enabled and maxRetries of the model-retry-settings settings namespace
what that namespace isthis plugin's own Loader entry Config (id: model-retry-settings in cordis.patch.yml) — since dsh 0.1.7 an entry's Config is its settings namespace
how the card reads and writes itctx.configForms.get('model-retry-settings'), the same shared fenced form the host publishes, so a save is an ordinary settings mutation and the host stays the only authority on whether a value was accepted
what happens to the running processnothing to restart: both fields are .volatile(), so a save updates the value in place on the running fiber and the next failed request reads the new number

The entry id, the settings namespace, the client's ctx.configForms.get(...) and the settings.models.footer registration id are all model-retry-settings and must agree; cordis.patch.yml carries the same value.

There is no build step. lib/index.js (host) and lib/client.js (browser) are hand-authored in the forms dsh loads them in — plain ESM for the host, and the module loader's window.__ModuleLoader__.load({ id, factory }) factory form for the browser, which is also why the plugin needs no bundler.

Development scripts, all run from the clone:

sh scripts/verify.sh           # 37 checks against the real dsh SDK (host + browser halves)
sh scripts/install.sh          # pack to dist/ and print the install path
sh scripts/dev-profile.sh boot # boot this plugin in an isolated profile on :19499
sh scripts/dev-profile.sh dump # print the composed profile tree
sh scripts/dev-profile.sh url  # print the served client-bundle URL
sh scripts/dev-profile.sh remove

sh scripts/dev-profile.sh writes only under .dev-home/ inside the clone: a private dsh home with its own profile, so the profile the desktop app is using is never touched. That is also where a change is cheapest to check — a fresh boot composes the profile with the plugin already in it, so it activates. test/README.md documents exactly what each suite proves.