前言¶
在 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
本地目录或离线场景:
- Settings → Plugins → plugin list → Install plugin;
- 输入本地路径
<path-to-dsh-systeminfo>(或file:形式); - 启用并刷新页面,侧栏底部应出现「系统信息」图标。
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。