@kidli1412/dsh-session-cost:在 DSH Web 統計行裏實時看會話費用與餘額

前言

用 DSH(DeepSeek Harness)的 Web 客戶端跑會話時,輸入框下方的自帶統計行只顯示輪次、時長和 token 數。這一輪到底花了多少錢,要去官方平臺對賬才知道;賬戶餘額還剩多少,平時也不會專門盯着,往往等到請求因餘額不足失敗才察覺。

@kidli1412/dsh-session-cost 解決的就是這兩個問題:把本次會話的 Token 費用估算(按模型逐條 CNY 計價)與 DeepSeek API 餘額,併入自帶統計行。下面介紹它的實現、安裝與配置。

這是什麼

@kidli1412/dsh-session-cost 是 KIDLi1412 維護的 DSH Web 客戶端插件(manifest 中 client.platform: web),MIT 許可證,當前版本 0.1.9。它屬於 DSH「一切皆插件」生態裏的社區作品。

插件分兩端:

1、服務端:GET /api/session-cost/summary?session=<id> 增量摺疊會話事件並按模型計價;GET /api/session-cost/balance 查詢 DeepSeek 餘額;同時註冊 session-cost settings namespace 供配置卡讀寫。

2、瀏覽器端:註冊 conversation.composer.dock 槽位,把費用/餘額段追加進自帶統計行的 DOM,並在設置頁註冊一張插件配置卡片。

核心功能

會話費用估算

費用在服務端按模型逐條計價:先從會話事件日誌摺疊出每個模型的輸入/輸出/緩存命中 token(語義與 dsh-token-metertokenUsage 投影一致),再按 lib/cost.js 裏的 CNY 單價表計算。一個會話裏混合多個模型時,各模型分別計價,不會籠統取平均。

費用每 30 秒刷新一次,token 用量變化後也會自動觸發刷新。懸停可查看分模型明細,跨多個計價時段時會顯示高峯/空閒/舊價的費用拆分。

DeepSeek 餘額查詢

餘額複用官方接口 GET {baseURL}/user/balance,憑據經 DSH 的 credentials 縫解析。查詢帶 2 分鐘內存緩存和單飛防抖,每 5 分鐘刷新一次;?refresh=1 可強制繞過緩存。懸停顯示餘額構成(充值/贈送)。

顯示與交互

費用/餘額段追加到自帶統計行同一行。DSH rc.7 起自帶統計行有 748px 寬度上限加省略號截斷,追加段會被裁掉;插件會自動把統計行放寬到容器全寬並取消裁剪,效果同 zh_pro 的「統計全顯示」,但不依賴它。

⟳ 按鈕手動刷新,強制查詢上游,成功後短暫顯示「已更新 HH:MM」。懸停氣泡大致如下:

本會話費用估算: ¥0.1234
  deepseek-v4-flash · 輸入 12,345 tokens · 輸出 1,234 tokens · ¥0.0152
餘額: ¥36.44
  充值餘額: ¥30.00
  贈送餘額: ¥6.44
更新於 10:32
費用爲估算值:token 用量來自會話日誌,單價見官方定價頁(…)。

定價與估算

默認單價表取自官方定價頁中文版(2026-08-17 起生效),單位爲 CNY / 百萬 tokens:

模型 輸入(緩存未命中)空閒 / 高峯 輸入(緩存命中)空閒 / 高峯 輸出 空閒 / 高峯
deepseek-v4-flash ¥1.5 / ¥3.0 ¥0.05 / ¥0.10 ¥4.5 / ¥9.0
deepseek-v4-flash-vision-exp ¥1.5 / ¥3.0 ¥0.05 / ¥0.10 ¥4.5 / ¥9.0
deepseek-v4-pro ¥4.5 / ¥9.0 ¥0.15 / ¥0.30 ¥13.5 / ¥27.0
deepseek-chat(V3 遺留,默認) ¥2(平峯) ¥0.5 ¥3
deepseek-reasoner(V3 遺留,默認) ¥4(平峯) ¥1 ¥16

V4 模型實行峯谷定價:高峯時段爲北京時間工作日 9:00–12:00、14:00–18:00,高峯價爲空閒價的 2 倍;2026-08-23 0 時起週末全天按空閒價計費。插件按每條 usage 樣本的事件時間歸屬時段分別計價;2026-08-17 0 時之前的樣本按舊的平峯價(LEGACY_PRICING)計。

兩點處理值得注意:

  • cacheWrite 沒有 DeepSeek 等價項(上下文緩存自動命中計費),默認按緩存未命中輸入價計(分時段),避免低估。
  • V3 遺留模型未列入官方頁面,保持最後已知的平峯價。

價格變動後,可以更新 lib/cost.jsDEFAULT_PRICING,也可以通過插件配置 pricing 覆蓋,支持平峯格式或分時段格式:

# ~/.dsh/settings.yaml 或 profile 插件配置
session-cost:
  pricing:
    deepseek-v4-flash:
      input: 1
      cacheRead: 0.02
      cacheWrite: 1
      output: 2
    # 或分時段(offpeak/peak 各自覆蓋,未給字段繼承默認):
    # deepseek-v4-pro:
    #   offpeak: { input: 4.5, output: 13.5 }
    #   peak: { input: 9, output: 27 }

安裝與啓用

從 npm 安裝:

dsh plugin --profile web add @kidli1412/dsh-session-cost

從 GitHub 安裝:

dsh plugin --profile web add github:KIDLi1412/dsh-session-cost

本地開發用鏈接安裝,改動即時生效:

dsh plugin --profile web add link:path/to/dsh-session-cost

安裝後重啓 dsh web,瀏覽器硬刷新(Ctrl+Shift+R)。經過上面的步驟,打開任意會話,自帶統計行末尾就能看到費用與餘額。移除:

dsh plugin --profile web remove @kidli1412/dsh-session-cost

設置項

設置入口:設置 → 插件 → 插件配置 → 會話費用顯示。

  • 低餘額閾值:默認 10 元,餘額低於該值顯示紅色,達到或高於時顯示黑色。配置經 session-cost settings namespace 持久化到 ~/.dsh/settings.yaml,即時生效。
  • 0.1.1 及更早版本的 localStorage 配置會在首次加載時自動遷移。
  • 0.1.5 起移除了「獨立狀態欄」顯示方式(統計欄下方單獨一行),只保留併入統計欄,舊配置裏的 displayMode 鍵會被忽略。

兼容性與安全

兼容性方面:

  • manifest 通過 dsh.compatibility.dshReleases0.1.2-alpha.40.1.2-alpha.50.1.2-rc.1 逐項聲明爲 compatible
  • Node 要求 ^22.19.0 || >=24.0.0(與 DSH 一致);dsh-market 顯示的宿主要求爲 engines.dsh: ^0.1.2-rc.1
  • 0.1.8 適配了 DSH 0.1.2:rc.1 起 live session 不再攜帶 .events 數組,插件改爲讀 session.seq、逐條讀 session.eventAt(seq),與官方 dsh-token-meter 的讀法相同。

安全方面:

  • 兩個端點均爲 loopback-only 精確路由(peer socket 地址 + Host 雙重校驗),瀏覽器同源調用。
  • API Key 不落盤:請求時經 credentials 解析 llm-deepseek 命名空間的 apiKeyEnv(默認 DEEPSEEK_API_KEY)。
  • 餘額緩存僅存內存,TTL 2 分鐘。

適用場景與注意

適合用 DSH Web 客戶端直連 DeepSeek API、想隨時掌握會話花費與賬戶餘額的個人使用者和智能體開發者。

使用前留意兩點:

1、費用是估算值。token 用量來自會話日誌中 provider 上報的 usage 樣本,單價表是寫死的默認值,官方調價後需更新 DEFAULT_PRICING 或用 pricing 配置覆蓋。

2、插件以當前 dsh 進程的權限運行,能讀取會話日誌、走宿主的憑據縫。安裝任何第三方插件前,建議先檢查源碼與許可證;本插件爲 MIT。

整體來看,這個插件把「花了多少、還剩多少」放進了每次會話都能看到的位置,配置成本只有一條安裝命令。項目源碼與文檔見 GitHub:https://github.com/KIDLi1412/dsh-session-cost

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

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

小夜