前言¶
在 DeepSeek Harness(DSH)里用 Composer 跑长对话时,token 用量可以在「Token 用量」里看到,但「这一轮对话大概花了多少钱」「钱包还剩多少」「缓存命中省了多少」往往要切到平台用量页或自己心算。高峰与空闲时段单价不同,联网搜索从 2026-11-01 起按次计费,自动压缩摘要也会单独产生 LLM 成本——这些分散在事件流里,缺少一个和输入框同屏、可展开的账本。
下面介绍社区插件 花费与余额(仓库 TSE2006/dsh-spend-meter),维护者为 TSE2006,目录分类为 admin-security。它在输入框下方常驻一条药丸(本对话花费 + 平台余额),点开是全量账本面板:分项花费、缓存节省、按模型与逐轮成本、搜索计费、预算与近 14 天趋势,样式对齐 DSH 自带的 StatsPills 与 stat-dialog,设计令牌来自运行时的 --dsw-* / --dsh-* 变量。
这是什么¶
插件包名固定为 @local/spend-meter(本地 bundle,无需发布到 npm),当前版本 1.2.0(MIT)。Host 半注册会话投影 spendMeter,只读 DSH 会话事件流计花费;Client 半渲染药丸与弹层,并通过与「设置 → 账户」相同的 Remote 路径每 15 秒刷新余额。花费统计不额外请求平台账单,分子分项全部来自 usage 与 tool 事件;余额依赖已登录的 DeepSeek 平台账号,仅用 API Key 未登录时余额位显示 —,花费不受影响。
界面与能力¶
常驻药丸¶
输入框下方显示类似 ¥3.89 本对话 · 余额 ¥19.07 的裸文字按钮(与 3 轮 228 步 · 232 tok/s 同款风格)。余额低于 ¥5 变黄、低于 ¥1 变红;高峰时段 ¥ 图标变黄,空闲时段保持灰色。
账本面板¶
点击药丸打开弹层,主要内容包括:
| 区域 | 说明 |
|---|---|
| 时段 | 是否高峰,距下一个半价/高峰时段还有多久 |
| 花费 | 输入未命中/命中缓存、输出、联网搜索、自动压缩摘要:各自金额、token 数与折算单价(元/百万 tok) |
| 缓存 | 命中缓存省下的钱,以及「若无缓存本应花费」 |
| 余额 | 充值 + 赠送余额,以及「还能聊约 N 轮」;配置了预算时按钱包、今日预算、本月预算三者中最先见底者估算 |
| 预算 | 今日/本月已花与上限(需在 profile 配置 budget);达 80% 变黄,超支变红;输入框上方金额同步变色 |
| 近期 | 最近 14 天柱状条(今天高亮)与「本周」合计(北京时间周一起算) |
| 价目 | 在线更新成功时显示更新日期,失败时显示原因 |
| 细分 | 搜索按 web_search / web_fetch 拆次数与金额;压缩摘要按写摘要的模型拆 |
| 模型 / 逐轮 | 多模型会话按模型汇总;最近 8 轮成本,可展开更早轮次 |
| 导出 | 底部「复制 Markdown / 复制 CSV」整本账到剪贴板 |
| 链接 | 跳转 DeepSeek 平台「查看用量 / 去充值」 |
预算用尽时,药丸右侧会出现超支提示条,点 × 关闭;同一天或同一月只提示一次。
数据与计费口径¶
花费来自 Host 对事件流的折叠,重启或切换会话不丢本会话统计:
assistant/message、assistant/attempt的usage按(turn, step)归户;重试先扣旧样本再计新值,不重复计费。compaction/summary的 usage 单列「自动压缩摘要」。tool/call中web_search/web_fetch按次计价(默认 ¥0.005/次,北京时间 2026-11-01 00:00 起收费;此前记为免费)。- 高峰/空闲按每条事件时间戳判断:北京时间周一至周五 9:00–12:00、14:00–18:00 为高峰,其余半价;可在
config.holidays指定法定节假日全天按空闲价。
余额由 Client 调用 ctx.remote.account.getBalance(...),每 15 秒刷新,窗口重新可见或打开账本时立即刷新。
预算与跨会话日统计写入台账文件:默认 %USERPROFILE%\.dsh\spend-meter-ledger.json(设 DSH_PROFILE_DIR 时在该目录下;也可用环境变量 SPEND_METER_LEDGER 指定路径),保留约 70 天。未配置 budget 时弹层不显示预算小节;「近期」柱状条在台账全为 0(刚安装)时不显示。
失败且 usage 为 0 的请求(如 401)不计费;与 README 说明的实际账单行为一致。
价目与在线更新¶
内置默认价目(元/百万 tokens,格式为高峰/空闲)示例:
| 模型 | 缓存命中 | 缓存未命中 | 输出 |
|---|---|---|---|
| deepseek-flash(含 v4-flash 别名) | ¥0.04 / ¥0.02 | ¥2 / ¥1 | ¥8 / ¥4 |
| deepseek-v4-pro | ¥0.30 / ¥0.15 | ¥9 / ¥4.5 | ¥27 / ¥13.5 |
查表顺序:精确模型名 → 去掉日期/版本后缀 → 按模型族近似(弹层会注明)。未匹配模型计入 unpriced,不参与金额合计。
Host 半每天拉取仓库根目录 pricing.json 合并(先试 jsDelivr CDN,再试 raw.githubusercontent.com;可设 SPEND_METER_PRICING_URL 自建镜像)。本地缓存 %USERPROFILE%\.dsh\spend-meter-pricing.json,24 小时内不重复请求。优先级:config.models > 在线/缓存表 > 内置表。关闭在线更新:config.autoPricing: false。
安装与启用¶
需要 DSH 0.2.1-rc.5 及以上桌面端(插件以 bundle 形式注册到 profile)。安装步骤来自仓库 README,不是 dsh plugin add github:... 一类命令。
- 将整个插件目录放到任意位置,例如 Windows 下
%USERPROFILE%\.dsh\plugins\spend-meter。 - 在 DSH 中让 Agent 执行
plugin_manager的install_bundle,target填该目录的绝对路径;插件管理器中显示为「花费与余额」。 - 输入框下方出现
¥0.00 本对话 · 余额 ¥0.00即表示 Client 半挂载成功。
插件以当前 DSH 进程权限运行;安装前应自行查看 GitHub 源码 与 MIT 许可证,确认 bundle 内容与组织策略一致。
配置示例¶
在 profile 的 cordis.patch.yml(例如 %USERPROFILE%\.dsh\profiles\<profile>\)里为 spend-meter 条目增加 config(插件不声明 Config schema,字段按 README 兜底):
- id: spend-meter
config:
holidays: ['2026-10-01', '2026-10-02']
searchPerCall: 0.005
turnHistory: 120
currency: CNY
budget:
daily: 20
monthly: 200
warnRatio: 0.8
autoPricing: true
models:
deepseek-flash:
peak: { cacheHit: 0.04, cacheMiss: 2, output: 8 }
offPeak: { cacheHit: 0.02, cacheMiss: 1, output: 4 }
第三方渠道若不分峰谷,可在 models 下用平价写法(单组 cacheHit / cacheMiss / output 全天生效)。改源码后按 README 将 client.ui.js 复制为 client.js,客户端 HMR 约 3–4 秒生效。
适用场景与限制¶
适合需要在 Composer 同屏核对本会话花费、缓存节省、搜索与压缩摘要成本,并顺带看平台余额与可选日/月预算的开发者。跨会话累计仍以平台用量页为准(弹层有入口)。
README 列出的限制 worth 留意:价目以内置表为底、在线更新为补;预算与「本月」从插件开始记账日起算,安装前的历史不在台账中;「还能聊 N 轮」为本会话平均轮成本外推,长会话偏差会变大;只统计本会话事件,不替代官方账单对账。
客户端半在异常时不向 Cordis 抛错,避免拖垮整个应用;药丸可降级为 —,弹层底部有「插件异常」诊断块。
结尾¶
花费与余额把 DSH 事件流里的 usage 与工具调用折成人民币分项,并把余额、预算、近期趋势收到输入框旁,和 Harness 自带统计 UI 同一套视觉语言。社区目录页:skillhub.cn/plugins/TSE2006/dsh-spend-meter;源码与完整配置说明:github.com/TSE2006/dsh-spend-meter。