前言¶
跑 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 。