dsh-systeminfo:在 DSH 里查看本机 CPU、内存与进程的实时仪表盘

前言

在 DeepSeek Harness(DSH)里跑 Agent 或 Web 前端时,本机 CPU、内存、GPU 是否吃满,往往只能另开系统监视器或终端命令查看。指标和 Harness 窗口分在两处,调试负载、核对进程时来回切换不方便。

dsh-systeminfo 是社区维护的 DSH 客户端插件,把机器侧的常用指标收成一块可刷新的仪表盘,并可通过浏览器、GUI 浮层或其它插件注入的服务读取同一套数据。下面介绍它的定位、能力、安装方式与使用时需要注意的权限与暴露面。

这是什么

dsh-systeminfo(GitHub:tntfireage/dsh-systeminfo,维护者 tntfireage)把整机与分核 CPU、内存、GPU、登录用户、活动进程、按进程能耗与磁盘占用等,汇总成可轮询的快照与页面。宿主侧仅依赖 Node 内置模块,浏览器侧仪表盘为静态 HTML/CSS/JS,文档说明可在离线环境下使用。

插件在 DSH 生态里归类为客户端:除宿主服务外,还提供 Web 页面与嵌入 DSH GUI 的入口。

三种查看方式

README 将入口分为三类,可按使用场景选其一或组合使用:

界面 入口 适合
浏览器页 http://127.0.0.1:<web-port>/systeminfo/ 单独打开、放副屏常驻
DSH GUI 侧栏底部「系统信息」图标 → 浮层 用 Harness 时顺带盯指标
宿主服务 其它插件 inject: ['systemInfo'] 在代码里读指标

页面会跟随系统浅色/深色偏好(亦可用 ?theme=dark|light),嵌入 GUI 时会匹配 DSH 主题;默认约每 2 秒刷新(能耗 5 秒、磁盘 10 秒),标签页隐藏时暂停轮询。

核心功能

以下能力均以仓库 README 为准,macOS 为首要支持平台(Apple Silicon 与 Intel);Linux 为尽力而为的降级;其它平台仅暴露通用指标。

  • CPU:总体利用率仪表,user/system/idle/nice,1/5/15 负载,分核热力条。
  • 内存:总量/已用,wired / active / compressed / cached / free 堆叠条,swap 与内存压力。
  • GPU:Apple GPU 利用率、renderer/tiler、统一内存、外接显示器(面向 macOS 能力)。
  • 能耗:墙插/适配器输入、SoC 负载、电池瓦数/百分比/剩余、充电状态。
  • 用户:基于 who -u 的会话(终端、登录时间、空闲)。
  • 进程:默认按 CPU 排序,可切换内存或能耗;支持搜索、条数限制与用量条。
  • 能耗排行:按进程能耗影响排序(macOS top 的 POWER 列)。
  • 磁盘:各卷已用/总量/空闲,85%/95% 阈值预警配色。
  • 主机信息:机型、CPU 型号、核心数、OS、Node 版本、启动时间与 uptime。

交互上:R 手动刷新,主题按钮切换明暗;进程面板支持搜索、排序与 limit。

环境与依赖

安装与运行需满足:

  • DSH ≥ 0.2.0
  • Node ≥ 20

仓库 package.json 当前版本为 0.1.0,许可证 MIT。发行包中已提交构建产物 lib/,从 GitHub 安装时无需本地 build。

安装与启用

推荐通过 DSH CLI 从 GitHub 安装(将 desktop 换成你的 profile 名;dsh web 用户通常用 web):

dsh plugin --profile desktop add github:tntfireage/dsh-systeminfo

也可在 Settings → Plugins → plugin list → Install plugin 中填写:

https://github.com/tntfireage/dsh-systeminfo

本地目录或离线场景:

  1. Settings → Plugins → plugin list → Install plugin;
  2. 输入本地路径 <path-to-dsh-systeminfo>(或 file: 形式);
  3. 启用并刷新页面,侧栏底部应出现「系统信息」图标。

CLI 等价命令:

dsh plugin --profile desktop add <path-to-dsh-systeminfo>

若手工声明 profile 依赖,可在 <profile>/package.json 中写入依赖与 bundle,再执行 cd <profile> && pnpm install(字段示例见仓库 README)。

典型用法

独立仪表盘

将 Web GUI 的 URL 路径改为 /systeminfo/,例如 http://127.0.0.1:63405/systeminfo/;或在 GUI 浮层中使用「在浏览器打开」。

配置(可选)

在 profile 的 cordis.patch.yml 中可覆盖插件配置(字段均可选):

- id: dsh-systeminfo
  config:
    basePath: /systeminfo        # 路由前缀,无尾部斜杠
    sampleMs: 1000               # CPU / 进程采样间隔
    energySampleMs: 5000         # 能耗采样间隔
    maxProcesses: 200            # 进程 API 行数上限
    publicDashboard: true        # 公开页面/API(仅 loopback 绑定的服务)

给其它插件用

在消费者插件中注入 systemInfo,例如周期性拉快照:

export const inject = ['systemInfo']

export function apply(ctx) {
  ctx.effect(() => {
    const timer = setInterval(async () => {
      const snapshot = await ctx.systemInfo.snapshot({ processLimit: 10, processSort: 'cpu' })
      console.log(snapshot.cpu.usagePercent, snapshot.memory.usedPercent)
    }, 5000)
    timer.unref?.()
    return () => clearInterval(timer)
  })
}

snapshot() 文档说明不会因单字段失败而 reject;失败字段为 null,并记录在 snapshot.errors[]。另有 processes、energy、disks 及分项 cpu / memory / gpu / users 等方法,字段定义见仓库 docs/ARCHITECTURE.md §6。

HTTP API(本机调试)

路由前缀默认 /systeminfo,常用只读接口包括:

curl -s http://127.0.0.1:63405/systeminfo/api/snapshot | jq '.cpu.usagePercent, .memory.usedPercent'
curl -s -X POST http://127.0.0.1:63405/systeminfo/api/open   # 用默认浏览器打开仪表盘

进程表「操作 / STOP」对应 POST /systeminfo/api/kill,需 JSON body、专用头与 loopback 限制;README 对 PID 保护与二次确认有专门说明,使用前请阅读 Security 一节。

适用场景与注意

适合谁:需要在 DSH 会话旁持续观察本机负载的开发者;编写依赖机器指标的其它 DSH 插件时,可通过 systemInfo 服务复用采样逻辑,而不必各自解析 ps / top。

权限与信任:插件以当前 DSH 进程权限运行,能读取文档所列系统信息;部分路由(如结束进程)具备本机副作用。安装前应自行审阅源码与 MIT 许可证,确认与团队安全策略一致。

暴露面:文档说明 Web 路由对外部请求定义为「公开」,但 Web 服务默认只监听 loopback,指标不应离开本机。若 DSH 绑定到非 loopback 地址,应设 publicDashboard: false,或在反向代理上增加认证。插件不写文件、不发外网请求,且不从请求输入拼接 shell 命令。

平台差异:GPU、能耗排行等深度指标以 macOS 为完整路径;在 Linux 上应把仪表盘当作「尽力而为」的参考,而非与 macOS 一一对应的生产监控替代品。

结尾

dsh-systeminfo 把本机「生命体征」收敛成浏览器页、GUI 浮层与可注入服务三种形态,便于在 Harness 开发流程里就地查看负载与进程。社区目录页:https://www.skillhub.cn/plugins/tntfireage/dsh-systeminfo;源码与完整 API、安全说明见:https://github.com/tntfireage/dsh-systeminfo。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜