[Idea] Long-run reliability: version pinning, stuck-tool timeouts, and power assertions while sessions are active #6542
Replies: 1 comment
Evidence update (2026-09-23): §1's risk model materialized at scale this week0.1.7-alpha.1/alpha.2 shipped 2026-09-22, and the tracker is now living through exactly the failure mode this post asks to prevent — updates replacing working setups with no chance to intervene. Individually each item below is "just a bug report"; together they describe one systemic gap: Half-published releases break the documented launch path outright. Tag Broken boots take settings with them — the exact "data-format markers + migration + warned downgrade" gap from the original ask: a failed startup still consumes Source-start dual-copy identity bugs — the two-module-copies-in-one-process family that a pinned, installed version sidesteps entirely: a bare (Same-week clean-install failures beyond pinning, for completeness: Context for scale: 2026-09-22→23 added a record ~140 discussions in a single day, and the recurring theme is not any single bug but "an update I did not choose broke a working setup". An official 中文摘要:0.1.7-alpha 风暴把原帖 §1 的风险模型变成现实——半发布的 rc.3 导致 |
Uh oh!
There was an error while loading. Please reload this page.
Summary
We run
dsh webfor long unattended agent work (hours-long tasks, phone-side supervision). Three reliability gaps keep biting; we currently patch each with a community plugin or wrapper, and each feels small enough upstream to benefit every long-task user.1. Version pinning as a first-class citizen
Today
npx @deepseek-ai/dshresolveslatestbefore any plugin or config can intervene, so a broken release replaces a working one with no chance to intervene; in our history one update changed on-disk structures such that downgrading could no longer read what had been written. Our current defenses are unofficial: a shell wrapper that pins the version via a~/.dsh/pinned-versionfile, plus a plugin that selects the launcher version for our desktop shell.Asks:
dsh pin <version>writing a well-known file that the documented launch command respects, with clear upgrade/dsh unpinpaths;2. Stuck-tool timeouts and session hygiene
A session can hang forever on a
tool/callthat never sees a matchingtool/result. We run a watchdog that auto-cancels only a whitelist of should-be-fast operations and otherwise warns — the whitelist exists because there is no per-tool timeout to configure outside MCP (toolCallTimeoutMsexists for MCP servers, which is great; host and plugin tools have no equivalent).Asks:
dsh session list --stuck(sessions with pending unanswered tool calls older than N minutes) anddsh session cancel <id>in the CLI, so watchdogs do not need raw API access at all.3. Power assertions while sessions are active
On macOS, closing the lid suspends
dsh webmid-task;caffeinateonly blocks idle sleep, not the hardware lid event. Our keep-awake plugin shells out topmset -a disablesleep 1— effective, but blunt: global, system-wide, and easy to forget in the on state.Ask: an opt-in "keep awake while sessions are running" setting that holds a power assertion only while sessions are active (equivalents: Electron's
powerSaveBlocker, macOSIOPMAssertion) and releases when idle. Scoped assertions beat global disable-sleep for everyone.All three exist today as community workarounds on our side; happy to share implementation details for any of them.
Environment
macOS 15.5 arm64; dsh 0.1.x; long-running web profile with watchdog + remote supervision.
All reactions