全部插件

DSH / BUNDLE / CLIENT-UI

dsh-safety-restart

v0.1.0Dayi-Z / dsh-safety-restarte702262e1d

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

概览

dsh-safety-restart

DSH 的安全无感重启:agent 可以自己重启宿主并接着干,但重启前必须过四道闸(重启循环熔断、有别的会话在跑就拒绝、profile bundle 解析不了就拒绝、拿不到可靠的拉起手段就拒绝),重启后原会话自动接续。桌面端走 Electron app.relaunch(),web/CLI 端走 detached helper。

README / ZH

插件文档

目录摘要

DSH 的安全无感重启:agent 可以自己重启宿主并接着干,但重启前必须过四道闸(重启循环熔断、有别的会话在跑就拒绝、profile bundle 解析不了就拒绝、拿不到可靠的拉起手段就拒绝),重启后原会话自动接续。桌面端走 Electron app.relaunch(),web/CLI 端走 detached helper。

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

在 GitHub 阅读完整 README

LIMITATIONS

已知限制

- **`busy` 只覆盖本进程启动之后的轮次。** 它是按 `session/event` 维护的,更早就在跑的会话不在里面。所以第二道闸是"尽力而为",不是权威快照。超过 `busyStaleMs` 的记录会被当作过期清掉(防止一条漏掉的 `turn/end` 把闸门永久焊死)。 - **bundle 体检是轻量的**:它只证明"包在、入口文件在",**不证明它能被 import 成功**,更不证明客户端半在 slot 契约上是对的。要那一层用 [dsh-guardian](https://github.com/) 的 bundle scan。 - **web 健康检查是"端口恢复",不是"HTTP 200"。** helper 只做 TCP 连接探测(127.0.0.1 上的端口能连上就算恢复)。它证明的是 *web 在监听*,不是 *web 健康* —— 后者需要服务的业务路由(dsh-guardian 探 `/guardian/report` 就是这样)。端口怎么推:`--port <n>` / `--port=<n>` 优先,否则 argv 里有 `web` 子命令默认 3080,推不出来就跳过健康检查退回 10 秒存活检查。**宁可不探测也不探测错误的端口**:新实例其实活着,却因为探错端口误报失败,比不探测更糟。 - **web 端退出是 `process.exit(0)`(非优雅)。** 会话日志是只追加的 jsonl,写到哪算哪;工具结果在 `delayMs` 之前已回传;尾巴真被截了也有续作提示兜。不退就永远重启不成,那才是真的坏。 - **客户端半按 rc 契约写**:`settings.plugin.item` 在 rc.12 是 `list`(要 `id`),更晚的契约是 `keyed`(要 `key`)。所以**两个都传** —— 多传一个用不到的字段不会报错,少传必需的那个才会。整个 `apply` 包在 try/catch 里:契约再漂,结果也只是"没有这张卡片",不会牵连界面。