dsh-spend-pill:在 Composer 狀態欄顯示上一句真實花費

前言

在 DeepSeek Harness(DSH)裏跑智能體時,內置統計行會告訴你「25 turns · 226 steps」和「11.1M tok · 99% cache hit」,但看不到錢從哪來、上一句到底花了多少。Agent 計費有兩點和直覺相反:一是按模型調用計費,不是按「輪」——一輪裏讀文件、跑命令、改代碼可能各是一次請求,每次都會把整段上下文重新計費;二是重讀歷史常常是最大項——上下文到 39 萬 token 時,每次調用都要再讀 39 萬 token,往往比模型真正「思考輸出」還貴。

下面介紹社區插件 dsh-spend-pill(維護者 lalilulelo3),它在 Composer 狀態欄增加一顆「花費膠囊」,展示上一句已結算的實際成本,點開可看拆分;分類爲客戶端插件,當前版本 0.1.1,許可證 MIT。

這是什麼

dsh-spend-pill 是體量很小的 DSH 插件:在 Composer 狀態行增加一顆 cost pill,默認顯示類似 上句結算 ¥0.062,表示上一輪對話已結算的費用(來自宿主對完整會話日誌的摺疊,不是估算)。點擊可展開本會話累計、token 明細、上一句內的模型調用次數、本句進行中的花費,以及「下一句發出去時重讀歷史的起步價」。

與只看 token 命中率不同,它把「每輪幾次調用、上下文有多重、下一句話固定要付多少輸入成本」放在同一屏,方便對照 DSH 在上下文約 69% 附近自動壓縮的行爲(插件在 50% 琥珀、60% 紅色提示,留一點餘量)。

核心功能

摺疊態(Pill)

狀態欄一行文案,例如:

上句結算 ¥0.062

表示上一句結算金額;首輪尚無結算時顯示 ¥—。

展開態

展開後大致包含(示例來自 README,數值隨會話變化):

本會話已花           ¥2.12
輸出                 18.3 萬 token
緩存讀               5888.3 萬 token
未命中               20.7 萬 token
────────────────────
上句結算(第 28 輪)  ¥0.062
 其中模型調用        6 次
本句進行中           ¥0.041
────────────────────
當前上下文           39.3 萬(38%)
起步價(重讀歷史)    ¥0.0079
按當前空閒·半價時段估算

要點如下:

  1. 上句結算是 settled 值:宿主側 spendStats 投影重放完整持久化日誌,在 turn/end 處切輪並摺疊 token;重啓、分頁、壓縮不會改變已結算的上一句金額。
  2. 拆分上一句:同一輪裏有多少次模型調用、本句已發生多少花費,與「本會話已花」、輸出/緩存讀/未命中 token 一併展示。
  3. 起步價:按當前上下文體量估算「下一條消息」固定要付的重讀歷史輸入成本;並標註是否按北京時間的閒時半價估算。
  4. 上下文閾值:當前上下文佔比在 50% 琥珀、60% 紅色,便於在 DSH 自動壓縮前心裏有數。

計價說明(非發票)

價格硬編碼爲 DeepSeek 官方費率(閒時:緩存命中 0.02、未命中 1、輸出 4 元/百萬 token;忙時翻倍),按北京時間判斷峯谷。投影裏沒有每次調用的時間戳,混合峯谷時段會按當前費率折算,可能與賬單有偏差;README 明確說明這不是發票。僅 DeepSeek 默認可讀;換其他 provider 需自行改源碼中的 PRICE_PEAK / PRICE_OFF。

安裝與啓用

推薦從 GitHub 安裝(資料原文命令,勿用 npm 包名 dsh-spend-pill——npm 上仍是 0.0.0-stage 佔位包,無 lib/,會裝成空包)。

桌面端:

dsh plugin --profile desktop add "github:lalilulelo3/dsh-spend-pill"

CLI Web UI 將 desktop 換成 web:

dsh plugin --profile web add "github:lalilulelo3/dsh-spend-pill"

安裝後重啓 DSH 宿主。插件要求 Node >= 20,依賴 @deepseek-ai/cordis ^4.0.1 與 React ^18.2.0(由 DSH 環境提供)。

本地開發可用 link: 指向克隆目錄(需自行 clone,本文不展開);生產環境以 GitHub 安裝爲準。

典型用法

  1. 按上一節命令安裝並重啓宿主。
  2. 打開帶 Composer 的會話,在狀態欄找到花費膠囊(客戶端註冊在 conversation.composer.dock,order: -1)。
  3. 每完成一輪對話,看摺疊態的「上句結算」是否與預期量級一致;若一輪裏工具調用很多,展開看「其中模型調用」次數。
  4. 上下文變長時關注「當前上下文」百分比與顏色;對照「起步價(重讀歷史)」決定是否該手動壓縮或縮短會話。
  5. 需要會話級總費時看「本會話已花」與 token 拆分行。

無額外配置文件;行爲由宿主日誌中的 usage 與 turn/end 驅動。

實現要點(便於審源碼)

  • Host(lib/index.js):註冊 spendStats 會話投影,消費 assistant/message 上的 provider usage,按 turn/end 分輪摺疊。
  • Client(lib/client.js):注入 Composer dock,讀取 tokenUsage、contextPressure、spendStats 等投影渲染 UI。
  • 通過 cordis.patch.yml 與 @deepseek-ai/dsh-client-ui-slots 接入客戶端槽位。

安裝前建議瀏覽 GitHub 倉庫 源碼與 MIT 許可證;插件在當前 DSH 進程權限下運行,與社區目錄站點一樣,不屬於 DeepSeek / 幻方官方應用商店,而是 DSH「一切皆插件」生態中的第三方條目。

適用場景與限制

適合:主要用 DeepSeek 模型、在 DSH Desktop 或 Web Composer 里長時間跑 Agent、需要把 token 統計翻譯成人民幣並理解「每輪多調用 + 重讀歷史」成本結構的開發者。

限制(README 原文):

  • 首輪無上句結算,顯示 ¥—。
  • 被中斷且該輪沒有任何模型調用時,不會覆蓋上一次 settled 值。
  • 非 DeepSeek provider 需改源碼費率常量。
  • 峯谷混合使用時,按當前費率折算會有漂移。

結尾

DSH 內置行數/step/token 很有用,但缺「上一句到底花了多少錢」這一維。dsh-spend-pill 用一顆狀態欄膠囊補上 settled 成本與拆分,並提示上下文與下一句起步價,適合和官方統計行對照使用。

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

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

小夜