前言¶
在使用 DSH 進行開發或部署時,經常需要通過 Agent 會話啓動多個後臺服務(如 Web 服務器、數據庫代理等)。當服務數量增加,管理這些進程的啓動者、日誌位置以及健康狀態會變得困難。dsh-service-board 插件提供了一塊停靠式面板,能夠直觀地按會話分組展示服務,並支持實時日誌查看與進程控制。
是什麼¶
dsh-service-board 是一個 DSH 服務面板插件,用於在 Web GUI 側邊欄查看由哪個對話(Agent 會話)啓動了哪些服務。
該插件基於上游 dsh-process-board 分叉開發,修復了若干已知缺陷(如重啓後日志不可用、同名進程合併錯誤、面板搶佔輸入框焦點等),並增加了停靠式面板、運行時長統計與篩選功能。它遵循 MIT 協議,無運行時依賴。
核心功能¶
- 按會話分組:自動關聯進程歸屬的對話(Agent 會話)。
- 健康與狀態:提供三態健康探測(端口/HTTP 碼/PID)。
- 進程信息:顯示啓動時間與運行時長。
- 控制能力:支持禮貌停止(SIGTERM)與原地重啓(重放原命令行)。
- 日誌查看:實時 tail 日誌,支持按 ERROR(紅)/ WARN(黃)着色。
- 停靠式面板:面板停靠在右側,寬度可拖拽調整,支持全屏日誌。
- 篩選:支持按會話範圍、端口白名單與關鍵字隱藏服務。
安裝與啓用¶
安裝前需確保 DSH 已安裝且可用。根據使用端不同,需選擇對應的 profile(如 web 或 desktop)。
# 網頁端安裝示例
dsh plugin --profile web add dsh-service-board
安裝完成後,重啓 DSH 宿主(桌面應用需完全退出後重新打開,dsh web 需重新啓動),側邊欄會出現「進程面板」入口。
注意:與上游
dsh-process-board同時安裝會插入兩條側邊欄入口,請僅安裝其中一個。
使用方法¶
在側邊欄點擊「進程面板」,右側會展開停靠面板。
基本操作¶
- 查看日誌:點擊列表中的服務,面板下方展開實時日誌帶(ERROR 爲紅,WARN 爲黃,4 秒自動刷新,支持全屏)。
- 重啓服務:點擊「重啓」按鈕,面板內會確認原命令行,隨後停止進程樹並按原命令行以 detached 方式重啓。重啓後會等待一次掃描(約 1–3 秒)刷新狀態。
- 停止服務:點擊「停止」按鈕,先進行禮貌終止(SIGTERM/taskkill),給予 10 秒寬限期後強殺進程樹。對於 Windows SCM 託管的服務,會顯示爲「Windows 服務」且無法停止。
篩選與配置¶
插件支持配置篩選規則,將配置寫入 ~/.dsh/gate/process-board/config.json,下次掃描即生效。篩選條件包括:
* scope:監控範圍(全部 / 僅會話啓動)。
* ports:端口白名單。
* hide:隱藏關鍵字。
讓面板可見¶
面板默認只顯示帶有特定標記的進程。要被面板識別並管理,需設置環境變量:
* DSH_SESSION_ID:標識進程歸屬的會話 ID。
* DSH_PB_LOG:指定該進程的日誌文件路徑(/log 接口僅允許讀取該路徑)。
例如在 Windows PowerShell 中啓動服務:
$env:DSH_PB_LOG = "$env:TEMP\my-service.log"
Start-Process java -ArgumentList '-jar','app.jar' -RedirectStandardOutput $env:DSH_PB_LOG -WindowStyle Hidden
權限與限制¶
該插件需要以下系統權限才能正常運行:
* 讀取進程信息:在 Windows 上通過 WMI 和 PEB 環境塊讀取進程列表、命令行、端口與環境變量。
* 終止進程:具備終止進程樹的能力。
* 啓動進程:具備以 detached 方式啓動進程的能力。
* 本地 HTTP:插件在 DSH Web Server 上掛載了 /state、/config、/kill、/log、/start 路由,僅監聽 Loopback,並校驗 Host/Origin 以防跨站請求。
平臺限制:
* 進程掃描與會話歸屬:目前僅 Windows 平臺已實現(使用 WMI/PEB)。在 macOS / Linux 上,掃描器直接返回空數組,面板 UI 可用但列表爲空。
結尾¶
dsh-service-board 是一個面向本地開發者的工具,它將進程管理能力集成到 DSH 的 Web 界面中。通過會話分組與停靠式面板,它讓在 Agent 環境中調試服務變得更爲直觀。
- GitHub 倉庫:https://github.com/fanjinduo111/dsh-service-board
- 插件目錄:https://www.skillhub.cn/plugins/fanjinduo111/dsh-service-board