API 费用计量(dsh-api-cost-meter)
简体中文 | English
在 DeepSeek Harness 的输入框下方加一行常驻读数,实时显示今日与当前窗口的 API 调用费用:
今日 ¥0.5488 · 本窗口 ¥0.1372
点击读数会在其上方浮出一个明细面板(position: fixed,不参与布局,所以对话与输入框不会位移),
列出分模型的费用、调用次数与输入 / 缓存命中 / 输出 token。点面板外、按 Esc 或再次点击读数即可关闭。
安装
dsh plugin add dsh-api-cost-meter
或在 Harness Web UI 的 设置 → 插件 → 添加 里粘贴包名 dsh-api-cost-meter。
装好后输入框下方即出现读数;若没有出现,刷新一次页面。
要求:DSH Web 界面(dsh web)。插件无第三方运行时依赖。
显示什么
- 今日:本机时区当天 00:00 起,所有会话(含子代理会话)的合计。
- 本窗口:当前打开会话从第一条消息起的合计,切换会话即切换。
实时:Host 通过 SSE(/plugin/cost-meter/stream)在每次模型调用结束时立即推送一帧,前端不做高频轮询;
金额变化用 420ms 缓动滚动到位,不硬跳。模型调用进行中(llm/stream 在途)时,读数左侧会亮起一个呼吸小圆点
表示「正在生成」——此时金额尚未计入,因为费用要等该次调用返还 usage 才能结算。
SSE 不可用时前端自动退回 1.5 秒轮询。
费用是怎么算的
每次模型调用都会在会话日志里留下一条 assistant/message,其 usage 记录
inputTokens / cacheReadTokens / cacheWriteTokens / outputTokens。插件按下面的官方价目
(人民币 / 百万 tokens)逐条结算后累加:
| 模型 | 缓存命中输入 | 缓存未命中输入 | 输出 |
|---|---|---|---|
deepseek-flash |
空闲 0.02 / 高峰 0.04 | 空闲 1 / 高峰 2 | 空闲 4 / 高峰 8 |
deepseek-v4-pro |
空闲 0.15 / 高峰 0.30 | 空闲 4.5 / 高峰 9 | 空闲 13.5 / 高峰 27 |
- 高峰时段:北京时间周一至周五 09:00–12:00、14:00–18:00;其余为空闲时段,价格减半。 法定节假日未内置日历,按高峰计。
deepseek-v4-flash、deepseek-v4-flash-vision-exp、deepseek-chat、deepseek-reasoner按deepseek-flash计价。- 价目来源:https://api-docs.deepseek.com/zh-cn/quick_start/pricing/(2026-11 抓取)。
DeepSeek 调价后需更新
index.js顶部的PRICES。 - 未收录的模型仍统计 token 与调用次数,但费用记 0,并在读数旁以「未配置价格」提示模型名(不臆造价格)。
数据从哪来
- 实时:Host 订阅
session/event,只对assistant/message做 O(1) 累加。 - 历史:插件加载时通过
sessionPersistence从磁盘日志回填当天用量(最多最近 200 个会话, 每个会话从日志尾部回读、遇更早事件即停),所以重启不会把当天已花的钱清零。会话在session/created时也会补读,覆盖恢复/继续的旧会话。 - 同一事件用「每个目标各自的 seq 下界」去重,实时与回填不会重复计费。
隐私
插件只读本地会话日志,不向任何外部服务发送数据。Host 仅注册两条只读本机路由:
GET /plugin/cost-meter/state?sessionId=<SessionId> # 单次快照(轮询兜底)
GET /plugin/cost-meter/stream?sessionId=<SessionId> # SSE 推送
两者都只接受 GET、拒绝跨站请求(sec-fetch-site 非 same-origin 时返回 403),
响应里只有费用与 token 统计,不含任何对话内容。
已知限制
- 只覆盖
deepseek-flash与deepseek-v4-pro两档官方价目;其他模型显示 token 但不计价。 - 节假日日历未内置,法定节假日按高峰计价。
- 金额是按 token 用量推算的费用,不等于账单;实际扣费以 DeepSeek 平台账单为准。
开发
npm pack --dry-run # 查看发布内容
- Host 入口
index.js(纯 ESM,无依赖):订阅事件、聚合、注册路由。 - Client 入口
client.js:window.__ModuleLoader__.load注册到conversation.composer.dock(idcost-meter,order 2)。 - 文案:
client.js内置 zh / zh-CN / en 字典;locale/*.json是插件管理器中显示的标题与描述。
License
MIT
No comments yet. Be the first to write one.