DSH 的 --profile web 模式会在终端中保持一个长驻进程,通过浏览器提供的 Web UI 进行操作。关闭浏览器标签页通常无法停止该进程,迫使开发者手动切换回终端并输入 Ctrl+C。dsh-auto-exit 插件通过检测 WebSocket 连接状态,解决了这个问题,实现“关掉 Web UI 即退出 CLI 进程”。
插件简介¶
- 名称:dsh-auto-exit
- 一句话描述:关闭 Web UI 时自动退出 CLI 进程(等效于 Ctrl+C)
- 作者:xiaxingtianxia2-glitch
- 许可证:MIT
- 分类:工作流
核心功能¶
- 自动退出 CLI 进程
- WebSocket 连接检测
- 宽限期机制(默认 15 秒)
- 状态查看端点
- 支持配置项
安装¶
在启用 Web 模式的前提下,通过以下命令安装插件:
dsh plugin --profile web add dsh-auto-exit
使用方法¶
- 启动
dsh --profile web,用浏览器打开 Web UI(默认 http://127.0.0.1:3080)。 - 关闭浏览器标签页或窗口。注意:必须关闭所有标签页/窗口才会触发退出。
- 15 秒后进程自动退出(等效于
Ctrl+C)。
查看状态¶
插件提供状态查看端点,可用于调试或监控:
curl http://127.0.0.1:3080/auto-exit/status
返回示例:
{
"enabled": true,
"armed": true,
"sockets": 2,
"countdownMs": 0,
"graceSeconds": 15,
"pollMs": 1000,
"dryRun": false,
"lastEvent": "armed",
"fired": false
}
配置项¶
插件支持以下配置(默认值):
| 字段 | 默认值 | 说明 |
|---|---|---|
enabled |
true |
总开关 |
graceSeconds |
15 |
连接全部断开后等待的秒数再退出 |
pollMs |
1000 |
检测间隔(毫秒) |
armAfterFirstConnect |
true |
见到首个页面连接后才生效(启动时未开页面不退出) |
dryRun |
false |
试运行:只记录日志,不真正退出 |
适用场景与注意¶
- 适用范围:仅适用于
--profile web模式。 - 触发条件:需关闭所有标签页/窗口才会触发退出,页面刷新或短暂重开不会误退。
- 异常处理:电脑休眠或浏览器崩溃也会断开连接导致退出。如不希望此类情况触发退出,可调大
graceSeconds。
结语¶
dsh-auto-exit 为 Web 模式提供了一种优雅的进程管理方式,通过宽限期机制平衡了便捷性与容错性。