foreee/dsh-net-dashboard:把本机网络质量放进 DSH 侧边栏

前言

跑 DSH 的时候,常有人想知道当前这台机器的网络到底好不好:IP 是什么、MAC 是多少、上下行速率多少、TCP 会话堆积了多少、到网关和公网的延迟在漂。放以前这套要靠另一个窗口开「活动监视器」、终端里ifconfig、netstat、ping 轮流敲,再自己对着时间点比。foreee/dsh-net-dashboard 把采集和展示收进 DSH 侧边栏,3 秒轮询一次,菜单不看也能持续刷新。

先说这是个什么:它由 foreee 维护,是一个客户端插件,给 DSH 侧边栏加一块网络巡检看板,展示本机 IP/MAC、流量速率、会话数和延迟曲线。目录页星标为 0,属于刚起步的插件。

核心功能

面板挂在 DSH 内置侧边栏条目下面,是 key-first 布局:一条 KPI 条加四张卡片,每张卡片默认收起核心数字,点详情再展开。

KPI 条常显四项:下载速率、上传速率、网关延迟、TCP 会话数。

四张卡片分别对应:

1、实时流量——聚合上下行速率(不含 loopback),带滚动曲线和峰值。详情展开后是每个接口的速率、累计收发计数。

2、延迟——每个目标一行紧凑卡片:当前值、丢包 chip、1 秒分辨率的迷你曲线。默认网关始终跟随,公网目标可配置。详情展开后有平均 / 最小 / 最大 / 抖动 / 丢包 / 收发统计。

3、会话——TCP 会话总数、UDP socket 数、Top 状态柱。详情展开后有 TCP 状态全量分布和会话数趋势。

4、网络——主接口看 IPv4、网关、DNS 解析器和公网 IP。详情展开后有 IPv6、MAC、Wi-Fi 信息、主机名、OS 版本,以及全量接口表和每接口实时速率。

深色、浅色主题都适配,图表用 shell 主题 token 上色。

安装与启用

官方安装命令:

dsh plugin --profile desktop add "github:foreee/dsh-net-dashboard"

浏览器 profile 用 --profile web。Web 侧的 Plugins 页面和 plugin_manager 工具也接受同一个地址。插件是纯 JavaScript,没有构建步骤,没有第三方依赖。

装完默认启用,不需要额外配置就能看到侧边栏面板。

典型用法

装好之后的事就是看一眼侧边栏。想加公网延迟目标,改配置:

{
  "pingTargets": ["119.29.29.29", "8.8.8.8"]
}

其他配置项:

  • enabled:默认 true,设 false 则什么都不挂载。
  • pingTargets:默认 ["223.5.5.5"],默认网关始终跟随,这里只是额外公网目标。
  • publicIp:默认 true,开启缓存 10 分钟的公网 IP 查询,可以关掉。

浏览器端轮询间隔默认 3 秒,可在界面切换,选择记在 localStorage。

它是怎么工作的

宿主侧 lib/index.js 挂一条只走 loopback 的路由:

Route Method Purpose
api/net-dashboard/snapshot GET 一次完整快照:接口、主接口事实、流量、会话、延迟

每个请求跑一遍 ifconfig、route、netstat、scutil --dns(都做了上限保护),Wi-Fi 相关事实再补一次 ipconfig getsummary。流量速率来自把 netstat -ib 的字节计数和内存里上一份采样做差分。延迟靠常驻的 ping -i 1 子进程(每个目标一个,失败重启,随插件停止)灌进滚动窗口,路由只读窗口,因此 3 秒轮询不会打出命令风暴。公网 IP 查询缓存 10 分钟,可关闭。

浏览器侧 lib/client.js 每 3 秒拉一次快照,自己维护流量和会话曲线的滚动历史,所有图表是内联 SVG,不引图表库。

这条路由有两层防护:socket 和 Host 头都必须来自 loopback,同时校验同源标记,已配对的远程设备会被拒。

适用场景与注意

适合在 macOS 上跑 DSH、想随时看到本机网络状态的人。采集命令和解析器都按 macOS 写的,Linux/Windows 不在支持范围。

几个已知限制:

  • 没有 Location 权限时 macOS 会隐藏 Wi-Fi SSID/RSSI,这几行直接省略。
  • 流量速率需要两次采样做差分,所以第一次轮询显示 —。

另外注意一个通用点:插件是以当前 dsh 进程权限运行的,装之前建议先翻一下 lib/index.js、lib/client.js 和 LICENSE,确认命令调用范围和许可证(MIT)符合自己的环境要求。

开发与验证

仓库里的测试和检查命令:

node --test test/*.test.js   # parser、trust-fence、loopback-guard 测试
node --check lib/index.js && node --check lib/client.js

包声明 type: module,main 是 lib/index.js,peerDependencies 要求 @deepseek-ai/dsh >= 0.2.0-rc.2,当前版本 0.1.0。

结尾

一句话回顾:它把本机网络状态的采集、算差分、轮询和图表都封装进一个插件,省掉开多个窗口敲命令的流程。目录页在 https://www.skillhub.cn/plugins/foreee/dsh-net-dashboard ,源码在 https://github.com/foreee/dsh-net-dashboard 。

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

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

小夜