全部插件

DSH / BUNDLE / CLIENT-UI

@luoshuizhiwei/dsh-desktop-restart

v0.4.5luoshuizhiwei / dsh-desktop-restart8ceddda568

可安装组合包UI 与客户端插件社区 · Topic 自动分析Web UI

概览

@luoshuizhiwei/dsh-desktop-restart

DeepSeek Harness desktop restart plugin with guarded restart, one-time receipts, snapshot candidate previews and optional Feedback hiding. UI follows the app language (zh/en). 桌面版重启插件:受保护的重启、一次性回执、快照候选预览及可选隐藏反馈;界面跟随主应用语言(中/英)。

README / ZH

插件文档

目录摘要

DeepSeek Harness desktop restart plugin with guarded restart, one-time receipts, snapshot candidate previews and optional Feedback hiding. UI follows the app language (zh/en). 桌面版重启插件:受保护的重启、一次性回执、快照候选预览及可选隐藏反馈;界面跟随主应用语言(中/英)。

dsh.pub 核对固定版本的组合包契约、运行时事实与分发语义;完整 README 请查看源仓库。

在 GitHub 阅读完整 README

LIMITATIONS

已知限制

- **只适用于 Electron 桌面版。** 在 `dsh web` 上状态路由会如实报 `desktop: false`,重启按钮禁用;这是设计如此,不是故障。 - **端口动态分配。** helper 将回环监听与本次新主进程及其 host 后代的进程身份关联;不把旧实例的监听当成新实例。无法确认时如实报告就绪未知。 - **显式立即重启仍可能打断任务。** 额外确认后会跳过任务等待;正在写的文件可能停在半路,插件不做回滚。安装中的硬拒绝仍有效。 - **插件安装守卫靠 pid 判断「还活着」。** 如果记录里的进程其实已经退出、而系统恰好把同一个 pid 复用给了别的进程,会被误判成「还在装」。概率很低:`run.json` 只存在于操作进行中或崩溃后的残留,而应用的插件操作会自己清掉残留记录;真遇上时那个进程一结束判断即恢复。应用自己也是这么判的。 - **强杀主进程。** 主进程自身的清理(窗口状态、托盘)不会执行。真正要紧的会话数据在 host 进程里,它会优雅关闭。这是「一键」必须付的代价 —— 主进程没暴露任何可请求的重启通道。 - **兜底清理最后会结束 host,那一瞬间它的会话日志可能不完整。** 只在一种情况下发生:主进程已经结束、端口等了 30 秒还没释放 —— 那说明 host 卡住了,不结束它新实例就绑不上端口。它不会被混在「残留进程」里顺手杀掉,日志里会单独写明。正常情况下端口 1 秒内就释放,这条路径走不到。 - **身份查询失败会停止重启。** 除宿主给出的父 PID 外,还核对可执行文件、父子关系和创建身份;不再因为进程表读不出就直接杀进程。企业策略若禁止进程查询,使用人工退出重开。 - **启动参数必须能够可靠恢复。** 参数不确定则以 `args-uncertain` 拒绝,不会悄悄丢弃参数启动。工作目录固定为可执行文件所在目录。 - **应用自动更新途中重启没有守卫。** 更新流程没有留下可读的状态凭据,这一条只能靠别在更新时点重启。 - **DSH 升级后可能失效。** 实现依赖当前的进程模型与 `ELECTRON_RUN_AS_NODE` 约定;守卫依赖 `agents` / `jobs` 服务与 `.plugin-manager/run.json`,取不到时会静默跳过守卫(而不是拦住重启)。若上游改变 host 的启动方式或给主进程加上重启 IPC,应改用官方通道。 - **只在 Windows 上验证过。** - **第三方皮肤(如 `dsh-claude-style`)会把 `aria-label` 当作可见行标题。** 它接管侧栏底部时按 `aria-label || textContent` 给每一行起名。所以本插件的 `aria-label` 只放**四个字以内的状态词**(「重启应用」「已排程」「重启中」「重试」…),详细提示(「有任务在跑(2 项正在生成或运行工具);点两次仍可重启」)走 `aria-describedby` 指向的视觉隐藏文本 —— 读屏照样念得到,但不会被画成按钮文字。(2026-10-20 修过一次:那句提示曾直接拼进 `aria-label`,在收起态的左下角被皮肤插件渲染成了很长的行标题。)