前言¶
在 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
按當前空閒·半價時段估算
要點如下:
- 上句結算是 settled 值:宿主側
spendStats投影重放完整持久化日誌,在turn/end處切輪並摺疊 token;重啓、分頁、壓縮不會改變已結算的上一句金額。 - 拆分上一句:同一輪裏有多少次模型調用、本句已發生多少花費,與「本會話已花」、輸出/緩存讀/未命中 token 一併展示。
- 起步價:按當前上下文體量估算「下一條消息」固定要付的重讀歷史輸入成本;並標註是否按北京時間的閒時半價估算。
- 上下文閾值:當前上下文佔比在 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 安裝爲準。
典型用法¶
- 按上一節命令安裝並重啓宿主。
- 打開帶 Composer 的會話,在狀態欄找到花費膠囊(客戶端註冊在
conversation.composer.dock,order: -1)。 - 每完成一輪對話,看摺疊態的「上句結算」是否與預期量級一致;若一輪裏工具調用很多,展開看「其中模型調用」次數。
- 上下文變長時關注「當前上下文」百分比與顏色;對照「起步價(重讀歷史)」決定是否該手動壓縮或縮短會話。
- 需要會話級總費時看「本會話已花」與 token 拆分行。
無額外配置文件;行爲由宿主日誌中的 usage 與 turn/end 驅動。
實現要點(便於審源碼)¶
- Host(
lib/index.js):註冊spendStats會話投影,消費assistant/message上的 providerusage,按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 成本與拆分,並提示上下文與下一句起步價,適合和官方統計行對照使用。