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 模式提供了一種優雅的進程管理方式,通過寬限期機制平衡了便捷性與容錯性。