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 。

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

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

小夜