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