feely0208/dsh-token-cost:在 DSH 侧栏里看 token 花费与预算进度

前言

DSH 把每一次模型调用的 usage 都写进了会话日志,日志是 session.v4.jsonl.zstd,落在
~/Library/Application Support/DeepWhale Desktop/dsh-home/sessions 下,按工作区与会话分目录。
想算清这段时间花了多少钱,传统做法是自己拼一条管道:zstd -dc 解压、再用 jq 把 usage
捞出来、按时间窗聚合、再套定价表换算。日志一多,这一步基本没人会去做。

下面介绍的 feely0208/dsh-token-cost 把这件事做完了:插件读本机日志,把 token 用量和花费
做成侧栏面板,当期花费、缓存节省、模型与会话排行、预算进度都能直接看到,还能导出 CSV / JSON。
先说清楚一点:金额是本机估算,不是官方账单——按本机日志里逐次调用的 usage 与 DeepSeek
官方定价页快照计算,不含平台赠送额度、优惠和汇率波动。

这是什么

插件名是 @deepwhale-cn/dsh-token-cost,仓库 feely0208/dsh-token-cost,维护者 feely0208,
作者署名是温州深鲸智能科技有限公司,许可证 MIT。当前版本 0.1.1,包声明满足的宿主范围是
dsh >=0.1.0-rc.6 <0.3.0、node >=18。

定位一句话:把 DSH 会话日志里的 token usage 变成侧栏里的花费视图,只读本机数据,不联网、
不上传。它同时给出按模型和按会话的排行,让「钱花在哪」这个问题有可回溯的答案,而不是
只能看账单总数。

面板里有什么

区块 内容
四个窗口 今日 / 近 7 天 / 近 30 天 / 本月(按本地自然日,本月按本地 1 日起)
概览 花费(美元 + 人民币)、缓存命中节省、缓存命中率、调用次数 / token 总量
预算进度 本月花费对比预算,进度条 + 剩余;预算只存在本机浏览器 localStorage
日趋势 近 30 天每日花费柱状图(悬停看当天金额 / 次数 / token)
按模型 按金额排序,含服务商;第三方模型标「未知价」不计入金额
按会话 前 20 个最贵会话,带工作目录、token 量、是否子代理
导出 CSV(按日 / 会话 / 模型)与 JSON(含汇总与明细),只含本机统计

预算这一项值得单独说一句:预算数字只存在浏览器 localStorage 里,不改任何配置文件,也不会
同步到别处。想设默认预算,用环境变量 DSH_TOKEN_COST_BUDGET。

安装与启用

安装命令来自 README 原文:

dsh plugin --profile web add @deepwhale-cn/dsh-token-cost

装好后侧栏会多一个「Token 花费」图标,点开就是上面的面板。

前置条件只有一个:系统里有 zstd 可执行文件。没有它读不了 .zstd 日志。macOS 可以
brew install zstd;插件默认会找 /opt/homebrew/bin/zstd、/usr/local/bin/zstd,也走 PATH,
不新增任何 npm 依赖。

数据从哪来

下面是默认路径与目录结构,只读,不修改、不删除、不移动任何日志:

~/Library/Application Support/DeepWhale Desktop/dsh-home/sessions/--<workspace>--/<sessionId>/session.v4.jsonl.zstd

日志是 zstd 多帧、追加写入。插件从中读取两类事件(README 注明 2026-10-29 用真实日志核过):

  1. assistant/message:取 data.usage { inputTokens, outputTokens, cacheReadTokens, cacheWriteTokens, totalTokens },模型与服务商在 data.message.source。
  2. compaction/summary:取 data.usage,服务商和模型在 data.provider / data.model。

解析全部在本机进程内完成,不联网、不上传;导出文件也不会离开本机。可用环境变量:

变量 作用
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

计算规则:

  1. 闲时价是峰时的一半;峰时 = 周一至周五 01:00–04:00、06:00–10:00 UTC,其余(含周末)为闲时。
  2. 每条调用按发生时刻逐条判断峰 / 闲,再按三档累加。
  3. 缓存节省 = 命中 token ×(未命中价 − 命中价)。
  4. 旧名 deepseek-v4-flash / deepseek-v4-flash-vision-exp 按官方注释归到 Flash 价格。
  5. 只有 deepseek-official / deepseek-account 两个服务商按官方价计;其它网关(例如 agnes)标「未知价」,只统计 token、不计金额,并单独提示。
  6. 未扣除中国法定节假日(官方节假日全天按闲时),所以法定节假日会按峰时多算,属于偏保守估算。
  7. 官方保留调价权利,插件只是某一时刻的快照,不构成账单。

验证与发布前检查

README 给出的验证命令:

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」。package.json 里 prepublishOnly 也指向同一个脚本,所以
发布前必须跑。

适用场景与注意

适合这几类人:想知道「这两天到底花了多少、花在哪个模型和哪个会话上」的 DSH 使用者;想盯
本月预算的;想验证缓存命中到底省了多少的人。对只想看官方账单的人来说,面板里的金额不够
精确,直接用 DeepSeek 后台账单更合适。

注意事项:

  1. 插件以当前 dsh 进程的权限运行,会读本机会话日志目录。安装前应当先检查源码与许可证(MIT)。
  2. 日志格式是 DSH 的内部格式,未来版本若改结构,插件会显示「没有数据」而不是猜测。
  3. 已知盲区:会话标题生成、Search & Fetch 等不在会话日志 usage 里的调用不会计入;平台赠送余额、
    限时折扣、汇率波动也不在口径里。

结尾

这个插件的价值不在于让计费更精确,而在于让本机已有的日志产出一个能日常看一眼的视图:
当期花了多少、缓存省了多少、钱花在哪个会话上。数据全程留在本机,导出与否由使用者自己点。

目录页:https://www.skillhub.cn/plugins/feely0208/dsh-token-cost
GitHub:https://github.com/feely0208/dsh-token-cost

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

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

小夜