MovieMaker93/dsh-plugin-safe-upgrade ↗★ 0
dsh-plugin-safe-upgrade
Unofficial community plugin for DeepSeek Harness (dsh): safe config history, guarded upgrades and automatic rollback. Not affiliated with or endorsed by DeepSeek. 适合需要保障 DSH 框架和插件升级稳定性、防止配置损坏的运维人员。
Install
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:MovieMaker93/dsh-plugin-safe-upgradeREADME
Read the full README ↗Configuration
Everything is auto-detected: the unit from the process cgroup, the install
directory from the running dsh binary, the health URL from --host/--port,
and the profiles from $DSH_HOME/profiles. To override, add a row to your
profile's cordis.patch.yml. A patch replaces the whole config, so list every
key you want to keep.
- id: safe-upgrade
config:
channel: latest # dist-tag that /upgrade offers first
failOnWarnings: false
telegram: # optional; credentials are read at send time
envFile: /etc/dsh/alerts.env
tokenVar: TELEGRAM_BOT_TOKEN
chatVar: TELEGRAM_CHAT_ID
| Key | Default | Meaning |
|---|---|---|
unit / scope | detected | systemd unit and system/user scope |
installDir | detected | folder whose node_modules holds @deepseek-ai/dsh |
profiles | all | profiles validated with --dump-config |
healthUrl | from --port | any HTTP answer except 5xx counts as up (401 is normal) |
healthTimeoutMs | 150000 | how long a new boot may take |
bootTimeoutMs | 120000 | how long plugins may stay loading before the boot counts as unhealthy |
idleWaitMs | 300000 | how long an upgrade or rollback waits for running turns before it gives up without stopping dsh |
channel | latest | dist-tag offered first; tags behind it are hidden |
checkIntervalHours | 6 | npm dist-tag check interval |
keepPrev | 2 | previous install copies kept for rollback |
keepGoodTags | 10 | good-* tags kept |
snapshots | true | auto-commit config edits |
failOnWarnings | false | treat warnings as failures (dry runs, upgrades, manual rollbacks) |
uiCheck | auto | auto: roll back on dsh's failure screen, warn if the check can't run; true: also roll back when it can't run; false: skip |
chromium | detected | path to a Chromium/Chrome binary for the UI check |
uiTimeoutMs | 45000 | how long the UI may take to show the composer |
telegram | off | {envFile?, tokenVar?, chatVar?} |