dsh-goal-auto
Manifest validPer-session auto-resume toggle for long-running goal sessions: mark a session, and after the harness restarts the agent is resumed automatically and its active goal keeps running.
dsh-goal-auto
Per-session auto-resume toggle for long-running goal sessions in DeepSeek Harness (DSH).
What it does
- Adds a 🔁 toggle to the session header action bar.
- Marked sessions are resumed automatically after the harness restarts: the agent is reloaded, its agent preset is mounted, the goal is re-armed, and the goal-round-driver keeps driving rounds without any manual click.
Why resume is not enough (the three layers)
A plain agents.resume() after a restart leaves the session dead. Three things
must happen before a goal session runs again:
| Layer | Problem | Fix |
|---|---|---|
| Model variables | empty options -> {{model}}/{{provider}} unset, prompt assembly crashes | pass explicit agentOptions.provider/model/maxTokens |
| Tool set | resumed agent has no tools (preset not applied) | mount the agent preset in the resume setup |
| Goal driver | after restart goal.activation resets to disarmed | call goals.resume() to re-arm; driver auto-injects next round |
Adaptive preset
The preset is read from the session header (header.agentPreset) and mounted
per session, falling back to the configured default when the header has none.
Install
dsh plugin --profile web add file://<this repo path>
Or, as used here: keep the plugin in <DSH_HOME>/plugins/dsh-goal-auto and add
a file:/link: dependency in the profile's package.json + a junction under
profiles/<name>/node_modules/@huanlin/dsh-goal-auto.
HTTP surface
GET /__goal-auto/state-> enabled mapPOST /__goal-auto/toggle-> flip a session flag (+ start now if enabled)POST /__goal-auto/resume-now-> force resume of one session (diagnostics)
State lives in <DSH_HOME>/goal-auto-state.json (per-instance; safe to edit by
hand while the harness is stopped). Logs go to <DSH_HOME>/goal-auto.log.
Layout
src/index.js— cordis bundle (host): state, HTTP, boot auto-resumesrc/client.js— client bundle: header 🔁 togglecordis.patch.yml— loader insert for the profile
Watchdog requirement (IMPORTANT)
The plugin resumes sessions when the harness starts. It does not keep the
harness process alive. If dsh web crashes, hangs (TCP alive but HTTP dead), or
is killed, nothing inside the process can restart it — you must run a process
watchdog outside the harness.
Without a watchdog:
- the service dies and nobody brings it back;
- after a machine reboot nothing auto-starts;
- goal sessions only resume on the next manual start.
A reference watchdog system is included in this repository under
watchdog/. It is the same system used by the author:
watchdog/
watchdog-instance.ps1 per-instance resident watchdog
health = TCP listening AND HTTP 200
sliding window catches hard hangs AND intermittent
"slow death" (5+ HTTP failures in last 10 probes)
boot grace 120s so fresh starts are never killed
start-instance.ps1 auto-init + start one instance (seeds settings,
credentials, agent presets, plugin environment)
control.ps1 unified control: start|stop|restart|status [instance]
instances.txt instance registry: name|home_dir|port
Design notes (all learned the hard way):
- Watchdogs are per instance (one process per
instances.txtrow), all sharing one script. A single mutex per instance prevents duplicates. - Auto-start at logon via the Windows Startup folder (a small
.vbsper instance callingwatchdog-instance.ps1 -Name <instance>). instances.txtand every.ps1must stay pure ASCII — Windows PowerShell 5.1 mis-parses UTF-8 without BOM, and the harness rejects JSON files that carry a BOM.- Health probes use .NET
HttpWebRequest, notcurl.exe(curl in 5.1 intermittently returns 000 against a healthy instance). - Add a crash circuit breaker: if an instance dies N times within a short window, stop relaunching and alert — otherwise a plugin bug turns the watchdog into an infinite restart loop.
Configure instances.txt for your own homes/ports before use. The watchdog is
generic; the paths under watchdog/ reference the author's layout only as an
example.
Comments
Loading…
From the same category
by nexu-io
🎨 Best DeepSeek Harness Design Plugin. The open-source Claude Design alternative. 🖥️ Local-first desktop app. 🖼️ Your coding agent becomes the design engine: prototypes, landing pages, dashboards,
★ 98.6k
Apache-2.0
TypeScript
Sep 29, 2026
by Molunerfinn
:rocket: The Ultimate Image Uploader for Efficient Creators. Supports Obsidian, Typora, VS Code etc. and 60+ image hosting services (S3, GitHub, Cloudflare R2, Imgur, Aliyun OSS...). Paste, upload, d
★ 27.3k
MIT
TypeScript
Sep 24, 2026
by zhu1090093659
DeepSeek Harness (DSH) Web Plugin Aggregation Ecosystem · Everything is a plugin, distributed via the Creative Workshop
★ 8.1k
Apache-2.0
TypeScript
Sep 29, 2026
dsh plugin --profile web add dsh-webby YaoApp
✨ All your agents and workspaces in one place, on every device you own. Track tasks on a board, accessible from desktop, mobile, browser, or API. Self-hosted.
★ 8k
Go
Sep 28, 2026
by omdsh-dev
开放的侧边栏底座,支持三方拓展注册新侧边栏页面。内置文件渲染编辑/终端/侧边对话/Git/子代理页面 | Open sidebar foundation, supports third-party extensions to register new sidebar pages. Built-in file rendering/editing, terminal, side chat, Git,
★ 3.9k
↓ 49.8k/wk
MIT
TypeScript
Sep 28, 2026
dsh plugin --profile web add dsh-better-sidebarby ccch1mneyyy
DSH 官方公众号收录的 TUI 补位插件:Claude Code 风,鲸鱼顶栏/实时状态/流式思考/双击 Esc 回滚/上下文进度+TPS。npm 一键装。 DSH official WeChat featured TUI plugin — Claude Code style: whale bar, live status, streaming thoughts, double-Esc rol
★ 3.8k
↓ 10.1k/wk
MIT
TypeScript
Sep 29, 2026
dsh plugin --profile terminal add @deepseek-harness-tui/dsh-tui