前言¶
DSH 把會話、任務和流式輸出組織在 Web 界面裏,但開發者想知道「這個會話消耗了多少 token、預估花了多少、緩存命中了多少」時,一般只能去翻日誌、手算,或者接一套外部監控。dsh-session-stats-panel 做的是把用量看板直接放進左側欄,作爲一個獨立的「會話統計」頁面,不彈窗、不改設置項。它由 Oblivionis7999(織風裁月)維護,零第三方依賴,圖表全部是手寫內聯 SVG / CSS。
下面介紹這個插件的能力、安裝方式、頁面口徑和注意事項。
這個插件是什麼¶
一句話定位:在 DSH Web 左側欄「自動化任務」下面新增一個獨立的「會話統計」頁面,復刻會話用量看板。代碼分宿主半和瀏覽器半:宿主半隻讀 ctx.sessionQuery,並註冊兩條只讀 HTTP 路由;瀏覽器半負責渲染頁面。
它補的是官方包沒覆蓋的部分。官方 @deepseek-ai/dsh-session-stats 註冊的是宿主側 sessionStats 投影(tok/s、牆鍾時間),本插件做的是按會話聚合的 token / 成本 / 緩存命中率,以及 DSH 進程自身的運行狀態採樣。
核心功能¶
頁面佈局¶
頂部是大標題 + 時間檔(近 24 小時 / 近 7 天 / 近 14 天 / 近 30 天)+ 幣種(人民幣 / 美元)。
第一行四張等寬指標卡:總 Token 消耗、預估成本、會話數、緩存命中率。
第二張橫跨整行的是「DSH 運行狀態」卡:CPU(單核)/ 內存(RSS)/ 事件循環 p99 / 運行時長,外加一條 5 分鐘 CPU 面積折線。
第三行並排:「每日消耗」按模型分色的堆疊柱狀圖 +「Token 構成」按模型分段的環形圖。
第四張橫跨整行的「分模型明細」卡:模型 / tokens / 佔比條 / 成本。
運行狀態採樣¶
每 5 秒採樣一次:CPU(進程 %、整機 %、核數)、RSS/堆、事件循環 p99/均值、運行時長、PID、Node 版本。底部是 60 點(5s x 60 = 300s)的 CPU 環形緩衝折線。
成本估算口徑¶
只認「模型原廠官方價目」:DeepSeek 指向 DeepSeek,GLM 指向智譜,Kimi 指向 Moonshot,Grok 指向 xAI,GPT 指向 OpenAI,Claude 指向 Anthropic,Qwen 指向阿里雲,以此類推。轉售/聚合平臺價(如 OpenCode Zen)和跨廠商兜底價一律不用。
DeepSeek 按峯/谷逐條計價,其它廠商平鋪單價;海外廠商的 USD 按 usdRate(默認 7.1)折算。查不到官方價目的模型不猜、不計錢:響應裏 priced:false、costCNY:0、priceLevel:"unpriced"、priceKey:null、sourceUrl:null;分模型明細的成本列顯示「未計價」,表底灰字提示「N 個模型無官方定價,未計入金額(tokens x.xxM)」。
README 附了一份「抓取日 2026-11-04」覈驗的原廠價目表,覆蓋 DeepSeek、智譜、阿里雲、MiniMax、階躍、小米、美團、xAI、OpenAI 等,並給出各廠商官方文檔鏈接。模型價格會變動,判斷某模型當前是否計價應以該表和插件實際行爲爲準,成本只能作爲本地估算,不能當作賬單。
圖表與配色¶
圖表顏色只取自宿主響應裏的 modelPalette(10 色),按 route 在窗口內首次出現的順序分配,第 11 個及以後歸入中性灰的「其他」切片;客戶端不硬編碼顏色,只讀 color 字段。深色主題只對色塊做亮度/飽和度微調,不維護第二套硬編碼色板。
主題跟隨宿主明暗色,消費 --dsw-alias-* 設計 token(帶淺色兜底值),淺色爲白底 + #e8eaed 細邊框,主色爲 #12b886 / #0ca678。
安裝與啓用¶
先取得插件目錄的絕對路徑,下面用 <插件目錄> 表示。本地開發用 link 安裝,不復制文件:
dsh plugin --profile web add "link:<插件目錄>"
卸載用包名:
dsh plugin --profile web remove dsh-session-stats-panel
要分發給別人,用 git 方式安裝:
dsh plugin --profile web add "git+https://github.com/Oblivionis7999/dsh-session-stats-panel.git"
裝完重啓 DSH(bundle 列表變化不支持熱重載),瀏覽器 Ctrl+Shift+R 強刷。裝好後左側欄「自動化任務」下面會出現「會話統計」。
運行要求來自 package.json:peerDependency @deepseek-ai/dsh 版本 >=0.2.1-rc.5(optional),engines.node 爲 >=22.19.0,版本 2.2.2,許可證 MIT。
頁面口徑與緩存¶
閱讀頁面時要注意幾個口徑:
1、近 7 天 是「今天及之前 6 個自然日」,按北京時區(UTC+8)對齊;柱狀圖與彙總嚴格同源,柱子之和恆等於卡片總量,默認時間檔是 近 7 天。
2、幣種切換不重新請求,美元是人民幣按 usdRate(默認 7.1)派生顯示。
3、總 Token 是四個互斥桶相加:inputTokens(未緩存輸入)+ outputTokens + cacheReadTokens + cacheWriteTokens;緩存命中率分母爲 inputTokens + cacheReadTokens + cacheWriteTokens(爲 0 時記 0)。
4、會話數是窗口內至少有一條 usage 事件的會話數,平均值 = 窗口總量 / 會話數。
5、宿主半不寫任何會話數據,只處理 event.type === "assistant/message" 且帶 data.usage 的事件;assistant/attempt、非消息事件、空 usage、時間戳非法的事件一律跳過,絕不拋錯。模型/供應商來自 data.message.source,缺失時路由爲 unknown/unknown。
緩存與增量:overview 響應緩存默認 ttlMs 60s;會話級緩存按 ctx.sessionPersistence.list() 的 revision 判斷是否變化,只有 revision 變了的會話才重新 readSession,其餘複用內存結果;沒有 persistence 後端時退化爲「每會話 60s TTL」。單次掃描併發上限 sessionConcurrency(默認 3),單會話讀取超時 readTimeoutMs(默認 10s),單會話失敗只記日誌,不影響其它會話。
有一個坑需要單獨說明:cordis.patch.yml 裏的 id 是 loader 表的鍵,DSH 按 id 合併 bundle 補丁,後加載的覆蓋先加載的。官方包已經佔用 id: session-stats,如果本插件也用同名,官方側 sessionStats 投影會靜默不掛載,界面看不出異常,只是流式計時數據缺失。因此本插件的 loader id 固定爲 session-stats-panel,並由 tools/selfcheck.mjs 斷言守住,防止回退。
適用場景與注意¶
適合想在 Web 界面裏直接看會話用量、成本估算和 DSH 進程狀態的 DSH 開發者;做多廠商模型對比時,按模型分色的每日消耗和 Token 構成能省掉手工拆分。
注意事項:
1、插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證(MIT)。
2、本包不修改 profile 配置、不監聽端口、不寫用戶數據;宿主半隻註冊兩條只讀 HTTP 路由。
3、價格表是抓取日快照,模型官方價格會變,成本只能作爲估算。
4、倉庫自檢腳本齊全:npm run selfcheck 會依次跑 tools/selfcheck.mjs(純核心冒煙)、tools/selfcheck-host.mjs(假 ctx 跑路由)、tools/selfcheck-client.mjs(假環境渲染頁面),可用來覈對行爲。
5、這是社區維護項目,GitHub 2 stars、分類爲客戶端,採用前先讀源碼更穩妥。
結尾¶
這個插件的價值在於把用量看板放進 DSH Web 側欄,用各廠商原廠官方價目做本地成本估算,零第三方依賴、圖表全部內聯。目錄頁在 https://www.skillhub.cn/plugins/Oblivionis7999/dsh-session-stats-panel,倉庫在 https://github.com/Oblivionis7999/dsh-session-stats-panel。需要說明的是,社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係,不要當作官方應用商店。