前言¶
DeepSeek Harness(DSH)在单条会话里会展示本轮、本会话的 token 统计,但用量往往分散在几十个会话里:这个月一共花了多少、哪一天突然拉高、缓存读占了多少、父会话和子代理各烧了多少,Host 自带界面没有一张跨会话的总表。
社区插件 dsh-token-bi(维护者 361533652)在 DSH Desktop / Web 客户端里增加全局面板「Token 账单」,从会话日志里折叠 provider 上报的用量,并按日与 Host 的 tokenUsage 投影(@deepseek-ai/dsh-token-meter)对齐,避免和会话内数字对不上。分类为客户端插件;当前 GitHub 星标为 0,许可证 MIT(package.json 版本 0.1.0)。
下面介绍它做什么、怎么装、界面怎么用,以及数据来源和限制。
这是什么¶
dsh-token-bi 是 DSH 的 token 消耗看板:把散落在各会话里的用量汇总成每日柱图、按小时节奏、模型与工作区拆分、父子会话调用树,以及单会话逐轮时间线。
插件只读 DSH 的会话事件与持久日志,不写库、不改会话;依赖 Host 的 webServer 提供 HTTP 接口,纯 TUI profile 下不会激活。
核心功能¶
入口在左侧栏全局面板(与「插件」「自动化任务」同级),不绑定单个会话。
顶部指标¶
| 指标 | 含义 |
|---|---|
| 累计 token | 当前时间窗口内四类 token 总和 |
| 今日消耗 | 本地时区当天总和 |
| 会话 | 窗口内会话数;副标题为正在运行的个数 |
| 轮次 | 去重后的 turn 数 |
| 缓存命中占比 | cacheRead / 总量,通常较高,反映上下文复用 |
四类桶为:inputTokens、outputTokens、cacheReadTokens、cacheWriteTokens,总量为四者之和。
图表与会话表¶
- 每日消耗:堆叠柱状图(输入、缓存读、缓存写、输出)。
- 最近 7 天节奏:按小时聚合的折线。
- 模型分布:按
provider/model拆分。 - 工作区分布:按会话
cwd分组;超过 8 个时折叠并显示被折叠部分合计。 - 会话明细:主表;展开一行可拉取该会话逐轮时间线(每轮三段式条形;极长会话最多显示最近 60 轮,总量不受影响)。
- 调用树:父会话下挂子会话;深浅色区分「本会话自用」与「子会话合计」。父会话数字不包含子会话,整棵子树需叠加查看。
右上角时间窗口:7 天 / 30 天 / 全部。切换会向 Host 重新取数并按日重算,不是只过滤前端已有数据。
导出 CSV:导出当前窗口内的会话列表,UTF-8 BOM,便于 Excel 打开。
安装与启用¶
前置条件¶
- DSH Desktop 或
dshCLI(Web 界面) - Node.js ≥ 22.15(会话日志为 zstd 压缩,需要 Node
zlib的 zstd 支持)
从本地目录安装(README 记载的当前可用方式)¶
先把仓库放到本机,再用 link: 软链安装(改仓库代码无需重装):
git clone https://github.com/361533652/dsh-token-bi.git
dsh plugin --profile desktop add "link:/绝对路径/dsh-token-bi"
Windows 示例:
dsh plugin --profile desktop add "link:E:\gitbub-project\dsh-token-bi"
安装后完全退出并重启 DSH Desktop(不是刷新页面);客户端 bundle 路径表在进程启动时构建一次。
验证¶
重启后左侧栏应出现「Token 账单」,紧挨「插件」。若未出现,依次检查:
- 设置 → 插件 → 已安装插件 中是否有「Token 账单」且开关为开
dsh --profile desktop --dump-config输出是否含id: token-bi- Host 日志(Windows:
%APPDATA%\DSH Desktop\logs\host\)中搜索token-bi是否有激活失败
加载时浏览器控制台(经 Host 日志)可能出现 [token-bi] factory、[token-bi] apply、[token-bi] slot:xxx,用于区分未下载、未激活或未注册成功。
配置¶
无配置项。 时间窗口与筛选均在界面操作。profile 中仅插入插件条目:
- insert:
- id: token-bi
name: dsh-token-bi
典型用法¶
- 安装并重启 Desktop 后,打开左侧 Token 账单。
- 在右上角选择 7 天 / 30 天 / 全部,观察顶部累计与今日消耗、缓存命中占比。
- 用每日柱图定位用量突增的日期,用「最近 7 天节奏」看高峰时段。
- 在「模型分布」「工作区分布」里看哪条模型线、哪个
cwd占主导。 - 在会话明细中展开一行,查看逐轮
input / output / cacheRead / cacheWrite;有子代理时切换到调用树对比父子分层。 - 需要表格分析时,点 导出 CSV 导出当前窗口会话列表。
需要程序化取数时,插件在 Host 注册同源路由(浏览器默认使用;参数含时区偏移与窗口):
GET /api/dsh-token-bi/report?offset=<分钟>&days=<窗口>&refresh=1
GET /api/dsh-token-bi/session?id=<会话 id>&offset=<分钟>
days 为 0 或 all 表示全部;refresh=1 跳过 10 秒报告缓存。
数据从哪来、怎么算¶
数据源按会话 id 合并,活跃会话优先:
| 来源 | 作用 |
|---|---|
ctx.sessions |
当前打开会话,内存事件,最新 |
ctx.sessionQuery |
冷启动持久日志,未打开的历史会话 |
不直接读 .jsonl.zstd 文件,走 DSH 公开服务。
计量规则对齐 Host:
- 只统计 provider 上报的用量(
assistant/message的usage,或 stream 最后一个type: 'usage'chunk),不估算。 - 同一
(turn, step)后到的样本替换先到的,避免重试重复累加。 - 四桶分开记,总量为四者之和。
事件时间按浏览器传入的 getTimezoneOffset() 落到本地时区日期。单会话按 (会话 id, revision) 缓存;整份报告缓存 10 秒。
适用场景与注意¶
适合谁:长期用 DSH 做智能体开发、并行子代理、多工作区切换,需要回答「本月总量」「哪天变贵」「缓存读是否主导」「哪个目录在烧 token」的开发者。
运行与信任:插件以当前 DSH 进程权限读取本机会话存储;数据只覆盖本机。安装前请自行查看 源码 与 MIT 许可证,社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,生态理念是「一切皆插件」。
已知限制(摘自 README):
- 仅统计上报了 usage 的步;无 usage 的 provider 不可见。
- 统计为日志口径,被压缩的历史消息仍计入会话总量。
- 子会话独立计费,父会话总量不含子会话。
- 需要 Web 界面与
webServer;不做成本金额估算。
结尾¶
dsh-token-bi 补上 DSH 缺的一层:跨会话、可对账 Host 的 token 看板——日柱、小时节奏、模型与工作区、调用树与逐轮时间线,安装后从左侧「Token 账单」即可使用。