@deepwhale-cn/dsh-token-cost
把 DeepSeek Harness 会话日志里的 token 用量做成一个侧栏面板:今天 / 近 7 天 / 近 30 天 / 本月花了多少、缓存命中省了多少、哪个模型和哪个会话最贵、离本月预算还有多远,并能导出 CSV / JSON。
金额是本机估算,非官方账单:按本机会话日志里逐次调用的 usage 和 DeepSeek 官方定价页的快照计算,不含平台赠送额度、优惠、汇率波动等实际结算因素。
关键词:token 花费 · 用量统计 · 缓存命中 · 预算进度 · DeepSeek 定价 · DeepSeek Harness 插件
为什么要有面板
DSH 把每次模型调用的 usage 都写进了 session.v4.jsonl.zstd,但那是几十个压缩日志,没人会去 zstd -dc | jq。
面板把这一步做完:打开侧栏就知道今天/这个月花了多少、钱花在哪个模型和会话上、缓存到底省了多少。
面板里有什么
| 区块 | 内容 |
|---|---|
| 四个窗口 | 今日 / 近 7 天 / 近 30 天 / 本月(按本地自然日,本月按本地 1 日起) |
| 概览 | 花费(美元 + 人民币)、缓存命中节省、缓存命中率、调用次数 / token 总量 |
| 预算进度 | 本月花费对比预算,进度条 + 剩余;预算只存在本机浏览器 localStorage |
| 日趋势 | 近 30 天每日花费柱状图(悬停看当天金额/次数/token) |
| 按模型 | 按金额排序,含服务商;第三方模型标「未知价」不计入金额 |
| 按会话 | 前 20 个最贵会话,带工作目录、token 量、是否子代理 |
| 导出 | CSV(按日 / 会话 / 模型)与 JSON(含汇总与明细),只含本机统计 |
安装
dsh plugin --profile web add @deepwhale-cn/dsh-token-cost
装好后侧栏会多一个「Token 花费」图标。
前置:系统里有 zstd(macOS 可用 brew install zstd;插件会自动找 /opt/homebrew/bin/zstd,
也可用 DSH_ZSTD_BIN 指定)。没有它是读不了 .zstd 日志的。
数据从哪来(只读)
- 默认日志根:
~/Library/Application Support/DeepWhale Desktop/dsh-home/sessions - 结构:
--<workspace>--/<sessionId>/session.v4.jsonl.zstd(zstd 多帧,追加写入) - 读取的事件(2026-10-29 用真实日志核过):
assistant/message:data.usage { inputTokens, outputTokens, cacheReadTokens, cacheWriteTokens, totalTokens },模型/服务商在data.message.sourcecompaction/summary:data.usage+data.provider/data.model
- 解压用系统 zstd 二进制(默认找
/opt/homebrew/bin/zstd、/usr/local/bin/zstd、PATH),不新增 npm 依赖。 - 解析全部在本机进程内完成,不联网、不上传;日志与导出文件都不会离开本机。
可用环境变量:
| 变量 | 作用 |
|---|---|
DSH_SESSIONS_DIR |
覆盖会话日志根目录 |
DSH_ZSTD_BIN |
指定 zstd 可执行文件路径 |
DSH_TOKEN_COST_USD_CNY |
美元→人民币汇率(默认 7.2) |
DSH_TOKEN_COST_BUDGET |
默认月度预算;≤1000 视为美元,否则视为人民币 |
价格口径(以官方定价页为准)
价格快照取自 2026-10-29 的 DeepSeek 官方定价页,单位:美元 / 百万 tokens。
| 模型 | 输入(缓存命中) | 输入(缓存未命中) | 输出 |
|---|---|---|---|
deepseek-flash(V4.1-Flash-1017)峰时 |
$0.006 | $0.30 | $1.20 |
deepseek-flash 闲时 |
$0.003 | $0.15 | $0.60 |
deepseek-v4-pro 峰时 |
$0.044 | $1.32 | $3.96 |
deepseek-v4-pro 闲时 |
$0.022 | $0.66 | $1.98 |
- 闲时价是峰时的一半:峰时 = 周一至周五
01:00–04:00、06:00–10:00UTC;其余(含周末)为闲时。 - 每条调用按发生时刻逐条判断峰/闲,再按三档累加;缓存节省 = 命中 token ×(未命中价 − 命中价)。
- 旧名
deepseek-v4-flash/deepseek-v4-flash-vision-exp按官方注释归到 Flash 价格。 - 只有
deepseek-official/deepseek-account两个服务商按官方价计;其它网关(例如agnes)标「未知价」,只统计 token、不计金额,并单独提示。 - 未扣除中国法定节假日(官方节假日全天按闲时):节假日会按峰时多算,属偏保守估算。
- 官方保留调价权利,以官方定价页为准;本插件只是某一时刻的快照,不构成账单。
没算进去的费用(已知盲区)
- 会话标题生成、Search & Fetch 等不在会话日志 usage 里的调用;
- 平台赠送余额、限时折扣、汇率波动;
- 中国法定节假日的闲时优惠(会多算,不低报)。
验证
node --check lib/index.js # 以及 lib/*.js、tests/*.mjs
node scripts/preflight-client.mjs . # 客户端 bundle 预检(模拟宿主加载/激活/渲染)
node tests/smoke.mjs # 定价 + zstd 多帧假日志端到端
node tests/http.mjs # HTTP 出口
node tests/client-render.mjs # 用真实形状的报告渲染面板,抓渲染期异常
preflight-client.mjs 是白屏事故后的强制关卡:任一客户端插件 entry 激活失败,宿主整页会显示
“Failed to load plugins”,所以发布前必须跑。
边界
- 只读:不修改、不删除、不移动任何会话日志;导出由你自己点。
- 估算非账单:与 DeepSeek 后台账单不会逐分一致,差在赠送额度、优惠、节假日、日志外调用。
- 日志格式是 DSH 的内部格式,未来版本若改结构,插件会显示「没有数据」而不是猜测。
本插件是一个工具。使用者必须遵守所在地区法律法规,对使用本项目造成的任何后果自行承担责任。
No comments yet. Be the first to write one.