DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
S

@local/dsh-session-auto-resume

Session Auto Resume

自动恢复因应用关闭而中断的 DeepSeek Harness 会话:具有活动目标的会话会重新激活,并在下次启动时继续其回合预算;处于回合中的非目标会话会被检测并记录,以便一键恢复。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:tmt-homelab/dsh-session-auto-resume#80faa90da1e072ecde0134c62809f102279f4885
README兼容性版本

兼容性与来源证明

Session Auto Resume 以 @local/dsh-session-auto-resume 发布,当前版本为 1.0.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/10/19

版本

1.0.0stable
2026/10/19

相关插件

正在加载相关插件…

最新版
1.0.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/19
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 productivity-workflow 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Experimental Schedule Bundle@deepseek-ai/dsh-experimental-schedule-bundle为 Web 组合添加 Schedule、其任务页面和时间上下文的可选捆绑包Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / pet / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。

README

dsh-session-auto-resume

A DeepSeek Harness plugin that automatically resumes agent sessions interrupted by app closure. When the DSH host relaunches, sessions that were mid-work at closure are detected from persisted state and recovered without human action:

  • Sessions with an active goal are explicitly resumed and the goal re-armed — after which the bundled goal-round-driver continues the round budget automatically. (The driver deliberately "never revives work on its own"; this plugin performs the explicit resume the driver requires.)
  • Mid-turn sessions without a goal are detected and logged with a ready-to-run resume command — surfaced, never auto-worked.
  • Cleanly-ended, stale (>48 h), live, and subagent-owned sessions are skipped. Per-boot resume cap. Fail-closed on goal transitions. Never-throw activation.

Why

The desktop host has quit-time inspection of active work but no startup recovery path: after any closure (crash, SIGTERM, deliberate quit/reload), interrupted sessions stay interrupted until a human notices. This plugin closes that gap entirely outside the app bundle, so it survives app updates.

Live verification

Tested against a real closure-then-relaunch cycle (operator-approved SIGTERM of the running host; app relaunched):

  • An unscripted interrupted goal session (not planted, not known to the operator) was auto-resumed and its goal re-armed at boot; the round driver then continued the session.
  • A session holding an active goal continued on an automatic continuation round with no human message.
  • Round budgets advanced correctly; a live session was correctly skipped; 489 subagent-owned sessions were correctly excluded in one pass.

verify-d1.mjs (included) turns any future closure into a one-command verdict: PASS (exit 0) / FAIL (exit 1, names the broken check + evidence tail) / VOID (exit 2, no closure recorded after the plugin armed). Its own fixture selftest (verify-d1.test.mjs) exercises every verdict path against synthetic evidence trees.

Design notes

  • Policy is explicit and minimal: only durable goal phase active auto-resumes; paused/blocked goals are deliberate human states and are never re-armed; non-goal sessions are surfaced only. The plugin's installation is the one-time authorization.
  • Resume mirrors the harness's own resume flow (agents.resume({resumeSessionId, agentOptions, setup}) + goals.resume(agent, {id, revision})), including binding the default model — a resume without a model binding produces turns failing with prompt variable "{{model}}" has no value (the agent loop binds that variable from agent.options). This plugin binds it and logs a loud resume-no-model line if it cannot.
  • It never hand-appends to session logs. Session-log append contracts (headerSeq must reference an earlier request/header) make cold-log markers unsafe; detection is recorded in the plugin's own log instead.
  • Fail-closed everywhere: goal resume throws on exhausted budgets or invalid phase transitions (caught, logged, never retried); the boot pass, classification, logging, and resume are each guarded so a plugin failure cannot block host boot.

Install (as a local profile plugin)

  1. Copy this package to ~/.dsh/plugins/dsh-session-auto-resume.

  2. Link it into your profile's dependencies and add it to the profile's dsh.profile.bundles list:

    "dependencies": { "@local/dsh-session-auto-resume": "link:/Users/you/.dsh/plugins/dsh-session-auto-resume" },
    "dsh": { "profile": { "bundles": [ "@local/dsh-session-auto-resume" ] } }
    
  3. The package's own cordis.patch.yml carries the required insert row (a bundles-list entry alone is silently skipped). It ships with dryRun: true — the first boot logs would-resume decisions without acting; verify them against your live sessions, then set dryRun: false.

  4. Restart the app. Evidence lands in ~/.dsh/logs/session-auto-resume.log (ARMED on every activation, one pass-done per boot).

Test

node selftest.mjs        # classification truth table, fake-ctx passes, mutation checks
node verify-d1.test.mjs  # proves verify-d1 on every verdict path (synthetic fixtures)

Status

  • Selftest: all legs green under the app runtime (ELECTRON_RUN_AS_NODE).
  • Live fire: one real closure-recovery verified end to end; one defect found and fixed during it (the model binding above).
  • Known limitation: sessions are matched against the most recent 30 persisted sessions by creation time (config scanLimit), and the mechanism mounts at boot only (no hot reload of plugin-file changes).

Not affiliated with DeepSeek. MIT licensed. Filed upstream as a discussion — this repo is the reference implementation.