前言¶
在 DSH 裏跑模型,多數人不是隻用官方 API。你在阿里百鍊上調模型,但市面上的用量插件幾乎都內置同一份 DeepSeek 官方價。結果就是:模型名一樣、服務商不一樣,價格可能差好幾倍;官方有峯谷時段,百鍊不一定有;私有部署帶租戶前綴的模型,在任何公共價目表裏都查不到。最後 token 統計得很準,金額是錯的,而且錯得悄無聲息。
下面介紹 looriann/dsh-cost-ledger。它定位是 DSH 的「費用」標籤頁,按天、按模型看 token 花了多少錢。它認的不只是 DeepSeek,同一份權重經百鍊、官方、第三方轉售賣出、價格不同時,它按「服務商 + 模型」二元組查價,不是按模型名瞎猜。界面照着 DeepSeek 官方控制台做:按天堆疊柱狀圖,鼠標懸停看到當天明細。
這是什麼¶
這是一個客戶端插件,由 Looriann 維護,分類歸在客戶端(client,web 平臺)。倉庫地址是 https://github.com/Looriann/dsh-cost-ledger,社區目錄頁是 https://www.skillhub.cn/plugins/Looriann/dsh-cost-ledger。當前 GitHub 星標 1。
它解決的核心問題分三層:
1、認身份:按 服務商 + 模型 二元組查價,而不是隻看模型名。
2、講出處:每個模型一行都帶置信度徽章(手填 / 官方 / 聚合目錄 / 繼承 / 未定價)。
3、能補價:查不到就明確標「未定價」,點一下就地填,填完歷史數字立刻重算。
插件的設計口徑是:寧願顯示「未定價」,也不顯示一個看起來很專業的假 ¥0.00。
核心功能¶
| 能力 | 說明 |
|---|---|
| 按天圖表 | 天 × 模型的堆疊柱狀圖,懸停顯示當天各模型花費,可切「金額 / tokens」 |
| KPI 條 | 今日 / 近 N 天 / 本月 / 緩存命中率 / 樣本數 |
| 價格來源徽章 | 每個模型一行徽章,一眼看出這個數是查來的還是你填的 |
| 就地補價 | 未定價橫幅點開填四個單價(元 / 百萬 token),保存即重算 |
| 隨包價目 | 自帶阿里百鍊 142 個模型的官方人民幣價:千問全系 + DeepSeek / Kimi / GLM / MiniMax 的百鍊上架版 |
| 歷史回填 | 首次啓動自動掃描 ~/.dsh/sessions/,過去幾天的賬立刻就有 |
| 可對賬 | npm run replay 用同一份代碼在終端復算,界面數字必須能復現 |
其中「可對賬」是它區別於普通用量面板的一點:界面和 replay 共用 lib/ 下的同一份代碼,所以界面上的數字一定能在終端復現。
安裝與啓用¶
安裝有兩種方式。
方式一:插件商場,搜索 cost-ledger,完整包名是 @looriann/dsh-cost-ledger,點擊安裝。
方式二:命令行,在 DSH 桌面 profile 下安裝:
dsh plugin --profile desktop add @looriann/dsh-cost-ledger
裝完重啓 DSH,瀏覽器按 Ctrl+Shift+R 硬刷新。打開任意會話,頂部標籤欄會多一個「費用」。
依賴條件寫在 package.json 裏,運行時屬於零依賴:
"engines": {
"node": "^22.19.0 || >=24.0.0"
}
README 同時寫明需要 DSH 0.2.0-rc.2 / 0.2.1-rc.2。這裏的 Node 範圍來自 package.json 的 engines 字段,DSH 版本約束來自 README 原文。注意控制命令必須按上面原文一字不改,尤其不要憑目錄名去拼 dsh plugin add github:owner/repo。
典型用法¶
1、打開任意會話,點頂部的「費用」。
2、首次打開會自動回填歷史;幾秒後圖表和 KPI 就有了。
3、頂部如果出現橙色橫幅「有 N 個模型還沒定價」,點裏面的 chip 補價,填四個單價並保存。
需要覈對原始賬目時,在倉庫目錄跑回放:
npm run replay # 回放全部會話,打印每天的 tokens 與金額
npm run replay -- <日誌文件> # 單個會話,逐輪成本
重新抓取官方價目用:
npm run prices # 重新抓官方價目,合併進賬本(不覆蓋手填行)
開發自檢命令也一併列出,均爲原文腳本:
npm run check # 語法檢查(8 個模塊)
npm test # 22 項單元用例 + 8 項插件冒煙
npm run replay # 回放本機真實日誌
npm run seed # 從抓取結果重建隨包價目表
npm run rename # 一鍵改包名(換 npm 作用域時用)
價格是從哪來的¶
按優先級從高到低:
| 來源 | 說明 |
|---|---|
| 你手填的 | 最高優先級,永遠不會被自動抓取覆蓋 |
| 官方價目 | 隨包種子(阿里百鍊官方頁,142 個模型,含第三方模型的百鍊版),或 npm run prices 重新抓 |
| 聚合目錄 | 計劃接入 models.dev / LiteLLM |
| 繼承同模型 | 同模型在別的服務商下有條目,借用但降級標註 |
| 未定價 | 只有 token 沒有錢,界面明確標紅 |
關於自動抓價,README 的口徑比較直接:bailian.console.aliyun.com 的模型廣場是登錄態 SPA,程序抓不到表格;但同一份表格有公開 Markdown 導出 help.aliyun.com/zh/model-studio/model-pricing.md,能解析出 CNY 單價、階梯區間和免費額度,當前 142 個模型。官方頁只列輸入 / 輸出單價,緩存單價不單列,插件按百鍊公開規則推算(緩存命中 10%、顯式創建 125%),並在價目表裏標 cacheRule 字段。真正抓不到的只有私有部署(cmaas-glm-5.3 這類帶租戶前綴的),設計上留空手填,不猜。
數字爲什麼可信¶
- token 不猜:直接讀 harness 的
assistant/message事件,input / cacheRead / cacheWrite / output四個分項原樣落賬。 - 不重複計費:以
sessionId + turn + step爲鍵,同一步驟重複上報是替換,不是累加。 - 整數微元:
micro = round(tokens × 單價),避免浮點誤差滾雪球;null ≠ 0。 - 讀時計價:金額永遠按當前價目表現算,改價不用重建歷史。
數據完全本地:
~/.dsh/cost-ledger/
├─ samples.ndjson ← 只追加的 usage 樣本(唯一事實來源)
└─ prices.json ← 你的價目表
不聯網,不上傳任何內容,也不讀對話正文,只讀 usage 裏的數字。刪掉 samples.ndjson 重啓等於從零重來。
適用場景與注意¶
適合這類人:同時在 DeepSeek 官方和百鍊上跑模型,需要按服務商區分同一模型的實際花費;有私有化部署模型,公共價目表裏查不到價;希望界面數字能在終端復現,而不是隻看一個面板。
有幾點需要寫在前面:
1、插件以當前 DSH 進程權限運行,安裝前應先檢查源碼(lib/ 與 scripts/)和許可證,而不是隻看 README。許可證是 MIT,作者 Looriann,README 註明事件解析語義參考了 @kidli1412/dsh-session-cost 與 dsh-context 的公開實現,代碼爲獨立編寫。
2、它是純本地工具,除你手動跑 npm run prices 時訪問阿里雲文檔頁之外不聯網,因此沒有後端賬號體系,也就不存在雲端賬單能力。
3、它顯示的是按你填的價目表算出來的估算,不是賬單。和官方賬單對不上時,常見原因包括緩存讀寫價沒填、階梯檔位不同、官方免費額度沒扣、四捨五入。
4、它只讀 session/event、只註冊自己的 /api/cost-ledger/* 路由、只在標籤欄加一個頁,不改任何內置組件,README 明確說明不會和其他用量插件衝突。
結尾¶
dsh-cost-ledger 把一個容易出錯的問題拆得很小:先記住每一筆 token 分項,再按「服務商 + 模型」框架計價,查不到就標「未定價」留給你填。它的價值不在把界面做得像官方控制台,而在讓金額可追溯、可復算、不靜默出錯。
目錄頁:https://www.skillhub.cn/plugins/Looriann/dsh-cost-ledger
GitHub:https://github.com/Looriann/dsh-cost-ledger