JularDepick/dsh-system-monitor-plugin

dsh-system-monitor-plugin

监控dsh进程及其派生子进程的资源占用,并以面板图表报告整机与各会话的CPU与内存占用

未分類deepseek-harnessdeepseek-harness-plugindsh

dsh-system-monitor-plugin

| [简体中文]

面向 dsh 的插件: 监控 dsh 进程及其派生子进程的资源占用,并以面板图表向用户报告结果

支持 dsh 0.2.1-rc.1,0.2.1-rc.2 与 0.2.1-rc.3

特性

  • 自动采集: dsh 进程及其派生子进程的 CPU 占用率与内存占用(按量级自适应 KB/MB/GB;百分比三档: 确切 0 显示 0%,小于 0.01% 显示 <0.01%,其余两位小数)
  • 容器配额口径: 百分比分母取运行环境自身的 CPU 与内存配额(读不到配额时回退可见总量),故容器内读数不按宿主机总量摊薄
  • 会话归属: 进程按终端映射,显式汇报,会话环境变量与会话中执行命令所派生的进程归属到会话;派生入口这条信源在所有平台启用(Windows 与 macOS 读不到进程环境,它是主信源;Linux 与 WSL 上它负责认出 systemd 瞬态 scope 的中间层,其余链尾进程由进程环境补齐),面板按 本会话 / 全部进程 / 会话 / 子代理 四个维度分别展示
  • 独立配色: 面板使用自带的蓝白色调(含浅色与深色两套);占比条与表格配色块按语义分配,主进程与宿主,子代理合计,其他应用与空闲各有固定语义色
  • 泳道预备颜色池: 普通进程与会话按顺序取池内颜色,颜色池可在插件配置与面板设置子页中增删改(默认 16 色);成员数超过池容量时按取色方案处理,循环复用(默认)或自动取相邻两色的中间色插入颜色池(结果写入浏览器端本地偏好)
  • 句柄汇报: 提供汇报工具,Agent 可主动上报 subagent 等插件无法自主识别的进程句柄
  • 运行状态与诊断: 面板给出 正常 / 降级模式 / 数据源不可用 三种状态(降级有两种成因:查询源回退到次选命令,或有进程读到但无权读取 —— 后者会让读数略偏高),系统信息行列出逻辑处理器,总内存,容器配额(存在时),dsh 进程标识与其他应用进程数,降级时另给出不可读进程数;CPU 或内存占用达到 90% 的数值高亮显示
  • 面板展示: 监控数据只在插件 UI 面板展示,不暴露给 dsh 使用

安装

本版本同时适配 dsh 0.2.1-rc.1,0.2.1-rc.2 与 0.2.1-rc.3:dsh 自 0.2.1-rc.1 起在 manifest 声明了 engines.dsh 时由该范围单独决定(此时 peer 不参与判定),0.2.0-rc.2 只校验 dsh 前缀 peerDependencies;本插件两处声明同一组受支持版本,支持范围以外的 dsh 版本(含 0.2.0-rc.2 及更早)在安装与启动时都会被拒绝

本插件适用于 dsh 的 web 与 desktop 两个 profile,两者用同一份插件包安装;差异只在界面宿主环境(Web UI 会话区域标签页 / 桌面端同一槽位),采集机制与面板行为一致

从旧版本升级时直接安装新版本即可: 插件配置项与面板本地偏好沿用,不需要重新配置,已汇报的句柄由 Agent 在需要时重新上报

将本插件安装到 dsh profile:

dsh plugin --profile <name> add dsh-system-monitor-plugin

使用 tarball 分发时:

dsh plugin --profile <name> add dsh-system-monitor-plugin-0.3.0.tgz

使用

安装并启动后,插件在 Web UI 会话区域标签栏提供「系统监控」标签页,按四个维度展示被监控进程的 CPU 占用率与内存占用(按量级自适应 KB/MB/GB;百分比三档: 确切 0 显示 0%,小于 0.01% 显示 <0.01%,其余两位小数): 本会话进程资源(统计当前会话及其派生的子代理进程,子代理进程行带「子代理」标注且卡头另给其中子代理合计),进程资源,会话资源(其中归属为子代理的会话并成一行「子代理」合计),子代理资源(逐个展示各子代理,属于当前会话派生的排在前并标注「本会话」)

每张卡含该维度的合计,三段固定泳道的资源占比条(其他,DSH 及其子进程(按成员分段),空闲;各段标出占整机的百分比,放得下时于段内显示进程名/会话名)与明细表;卡片标题可点击折叠或展开该卡内容

明细表可按 CPU,内存或名称排序,并可隐藏 PID,父进程,会话,内存占比等可选列;已采样到的进程或会话在后续某轮未被采样时不会立即消失,而是归零保留,连续多轮未出现(默认 10 轮,可在插件配置与面板设置子页调整)后自动移除,也可逐行手动移除(该行再次被采样到会自动补回)

面板右上角「配置」按钮呼出面板内配置子页,可开关泳道内名称,切换 CPU 口径(整机 / 单核),视图列数(单列 / 双列),表格排序(默认 / CPU / 内存 / 名称)与显示列(逐列开关),调整行留存轮数,切换泳道颜色取色方案(循环使用 / 自动取间色新增),增删改泳道预备颜色池,并把当前快照复制为文本;设置与折叠状态记在浏览器端本地偏好;卡片折叠与配置子页均可用键盘操作(ESC 收起配置子页)

需要纳入监控的外部进程句柄,由 Agent 在会话中通过汇报工具上报

进程汇报机制的句柄字段(标识,父进程,进程名,会话标识等)与去重回执规则,见插件内的汇报工具参数说明

目录结构

dsh-system-monitor-plugin/
├── .gitignore          # git 忽略规则
├── AGENTS.md           # 开发协作守则与项目信息
├── COPYRIGHT           # 版权声明
├── LICENSE             # 许可证
├── README.md           # 中文主 README
├── README_en-US.md     # 英文 README
├── cordis.patch.yml    # 配置层 patch
├── package.json        # 包清单与构建脚本
├── pnpm-lock.yaml      # 依赖版本锁定
├── pnpm-workspace.yaml # pnpm workspace 声明
├── tsconfig.json       # 类型检查配置
├── tsdown.config.ts    # 构建配置
├── version.index.md    # 版本号索引
├── docs/               # 项目文档(官方插件开发文档, 技术规范, Tag 与 Release 规范)
├── scripts/            # 辅助脚本(语法验证, 构建前后处理)
└── src/                # 项目源码(插件入口, 配置, 常量, 客户端, 监控, 翻译)

版权信息

Copyright &copy; 2026 JularDepick

详见 COPYRIGHT

许可证

本仓库采用 Apache-2.0 许可证

相关链接

  • 本仓库使用的插件模板: https://github.com/JularDepick/dsh-plugin-dev-agent-template
  • dsh 官方仓库: https://github.com/deepseek-ai/deepseek-harness