前言¶
在使用 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