qschen86/dsh-web-restart
DSH Web 插件:从界面重启 DSH Web 服务,可选自动继续
catalog 简介:DSH web plugin: restart the dsh web service from the UI, with optional auto-continue
安装
组装默认值在插件的 `cordis.patch.yml`(`config.autoContinueAfterRestart: false`),机器级补丁(`~/.dsh/cordis.patch.yml` 整行替换该行)可改默认值。
优先级(settings 领域标准):用户设置分节 > 注册方 base(entry 配置)> schema 默认 false。
旧版本写在 `~/.dsh/dsh-web-restart.json` 里的开关会在首次启动时自动迁移进设置文档(该文件此后只存运行状态)。
### 设计取舍
- **只继续"被上次重启中断"的会话**,不自动拉起空闲会话,也不复活用户主动停止的工作;
- 恢复的 agent 与 GUI 打开会话是同一机制(`ctx.agents.resume`,模型选择从会话日志的最近请求头继承),因此行为与手动打开一致;
- 若重启后你已先打开了某个会话并开始新回合(agent 正在运行),扫描会跳过它,不会重复注入。
## 为什么重启动作不在插件里做
插件运行在 dsh web 进程内部,杀掉宿主进程等于自杀(脚本会随宿主一起死)。
因此插件只负责"请求",真正的 kill + 启动由 launchd 托管的监督进程(进程树之外)执行:
supervisor 每 5 秒轮询请求文件,发现到期请求就执行 停止 → 等端口释放 → 启动 → 健康检查;
服务意外掉线时 supervisor 也会直接拉起(崩溃自愈)。
监督脚本(v0.3)要点:
- **`ensure_deps`**:每次启动前检查 profile 里所有 `link:` 插件目录的依赖,缺失则自动
`npm install`——修复了"插件目录 node_modules 被清后 dsh web 启动即崩、服务宕机数小时"的故障;
- **失败诊断**:`start` 失败时把 `~/.dsh/dsh-web.log` 尾部写进监督日志,根因不用翻文件;
- **单实例锁**(mkdir 原子锁 + 陈旧锁回收),避免 watch 重复运行;
- **失败退避**:连续启动失败时轮询间隔 5s → 30s → 60s,避免空转;
- **`halt` 命令**:一条命令彻底停掉守护(launchctl bootout + 停服务);注意 `stop` 只是
临时停——watch 会在 5 秒内拉回(launchd KeepAlive 也会重生被杀的 supervisor)。
## 安装
把 qschen86/dsh-web-restart 加入你的 DSH 配置(web profile)即可启用。
README
展开完整 README 收起
README 内容为空。
tt-a1i/archify
zhu1090093659/dsh-web-ui
strukto-ai/mirage
liustack/modlens
omdsh-dev/DSH-better-sidebar
ccch1mneyyy/dsh-TUI
agentrq/agentrq
GanyuanRan/Aegis