편집자 노트

Token 用量统计

Token usage statistics plugin for DeepSeek Harness (DSH). It parses real provider usage data from DSH session logs (session.jsonl.zstd) and provides complete usage statistics inside the Web GUI: cumulative / today / peak tokens, longest chat duration, streak days, and a 12-month activity heatmap (daily / weekly /…

이것은 DeepSeek Harness(DSH) 플러그인입니다. 이 사이트는 GitHub README, 설치 정보, 유지보수 상태, 공개 보안 시그널을 모아 보여줍니다.

dsh-token-stats

English | 中文

DeepSeek Harness(DSH)的 Token 用量统计插件。直接解析 DSH 会话日志(session.jsonl.zstd)中的真实 provider usage 数据,在 Web GUI 内提供完整的用量统计:累计/今日/峰值 Token、最长聊天时长、连续使用天数,以及 12 个月的活动热力图(每日/每周/累计),并按模型、工作区拆分明细。

功能

统计卡片(6 张,3×2 布局)

页面顶部以 3 列 × 2 行对称展示六项核心指标,窄屏自动降为 2 列:

卡片含义
累计 Token 数输入 + 输出 + 缓存读取 + 缓存写入 的全量累计
今日 Token今天截至当前的用量,副标题含调用次数与占累计比例
峰值 Token 数单个会话的最高消耗,标注发生日期
最长聊天时长单次连续会话的最长时长(会话按 30 分钟无活动切分)
当前连续天数从今天(或昨天)往前连续有使用的天数
最长连续天数历史最长连续使用记录

「活跃日」定义:当天有任何 token 消耗即算活跃。

Token 活动热力图

GitHub 风格的 7 行日历网格(周一至周日),滚动 12 个月窗口,两个维度可自由组合:

  • 三种视图
    • 每日:每个格子 = 当天用量
    • 每周:每个格子 = 所在周的合计(整列 7 格同色,一眼看出"这一周有活动")
    • 累计:每个格子 = 截至当天的累计值(左暗右亮,形成递增渐变)
  • 时间范围:12个月 / 3个月 / 30天 切换,默认 3 个月(数据稀疏时日历不至于大片空白)
  • 悬停预览:气泡显示「8月13日 使用了 6391.7万个 Token(58 次调用)」,空格子显示「无使用」
  • 点击下钻:在每日视图点击任意日期格子,弹出当日明细弹窗——列出当天各会话的 Token 与调用次数,显示会话标题(一眼认出是哪个会话),重复标题的多个会话自动合并并标注 ×N,超过 10 条自动分页;弹窗打开时可点其他日期直接切换
  • 导出 CSV:一键导出当前范围的按日数据(日期 / Token / 调用次数),带 UTF-8 BOM,Excel 打开不乱码

消耗构成

输入 / 输出 / 缓存读取 / 缓存写入 / 推理 五项明细,完整精确数字(千分位),不做万/亿简写——查具体数值时一目了然。(缓存读取为 DeepSeek 前缀缓存命中,通常占比极高但计费远低于输入。)

按模型 / 工作区

各模型、各工作区的消耗排名,完整精确数字;可一眼看出消耗集中在哪个模型、哪个项目目录。

会话头部实时角标

对话界面标题栏右侧常驻两个胶囊:

  • 本会话 X:当前会话已用 Token,10 秒轮询刷新;点击弹出本会话明细(总计/输入/输出/缓存/推理 + 按模型拆分 + 会话标题),底部可一键打开完整统计
  • ¥余额:DeepSeek 账户余额,15 分钟轮询;点击即强制刷新余额并打开独立余额弹窗

DeepSeek 账户余额

余额共三处显示,语义各归其位:

  1. 角标余额胶囊:会话标题栏右侧,随时可见
  2. 独立余额弹窗:点击胶囊打开——大金额 + 可用状态、充值/赠送明细、刷新余额按钮、数据来源与更新时间
  3. 完整统计页余额面板:热力图下方通栏,含刷新按钮

刷新行为:点击刷新走 ?force=1 强制查询 DeepSeek 开放平台(/user/balance),按钮带「刷新中…」反馈;平时 15 分钟自动轮询;请求失败时回退到上次缓存值,不闪断。API Key 通过 DSH 凭证服务解析,仅在 host 进程内使用,绝不下发浏览器

独立统计页

http://127.0.0.1:3080/token-stats:与 GUI 内完整统计同款的深色页面(不依赖 GUI 也能直接访问),15 秒自动刷新,热力图/余额/明细/导出/下钻功能齐全。

数据来源

所有数字均来自 DSH 会话日志中记录的真实 provider usage(inputTokens / outputTokens / cacheReadTokens / cacheWriteTokens / reasoningTokens),不估算、不抓包。插件在启动时回放历史会话日志,并通过 session/event 实时捕获新用量,30 秒增量复核。

数据存储于 $DSH_HOME/token-stats/usage.jsonl$DSH_HOME 即 DSH 数据根目录,默认 ~/.dsh,也可通过 DSH_HOME 环境变量指定)。

安装

插件通过 DSH 的 profile 插件机制安装(dsh plugin 管理,与 @liustack/modlens 同机制):

  1. 在 web profile 的 package.json 添加依赖并加入 bundles 列表:
// data/profiles/web/package.json
{
  "dependencies": {
    "dsh-token-stats": "link:../../路径/dsh-token-stats"   // 或 file: 或发布到 npm 后直接写版本号
  },
  "dsh": {
    "profile": {
      "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-token-stats"]
    }
  }
}
  1. 在 profile 目录执行 pnpm install
  2. 重启 DSH(退出 → 启动)

HTTP API

端点说明
GET /token-stats/api/stats完整统计快照(卡片/热力图/明细所需全部数据)
GET /token-stats/api/balanceDeepSeek 账户余额(15 分钟缓存,?force=1 强制刷新)
GET /token-stats/api/day?date=YYYY-MM-DD指定日期的按会话用量明细(热力图下钻)
GET /token-stats/api/session/<sessionId>单个会话的用量摘要(角标/弹窗用)
GET /token-stats独立统计页(HTML)

包结构

dsh-token-stats/
├── package.json          # dsh.bundle.patch(host 挂载)+ dsh.client(浏览器半)
├── cordis.patch.yml      # 插件装载配置
├── dsh/                  # host 半:日志扫描、聚合、HTTP 路由
│   ├── index.js          # apply(ctx):启动回填 + 实时捕获 + 路由
│   ├── scan.js           # 会话日志扫描与 usage 抽取
│   ├── stats.js          # 聚合(累计/峰值/热力图/连续天数/今日/会话)
│   ├── zstd.js           # 多帧 zstd 解码(会话日志为逐帧追加压缩)
│   ├── store.js          # usage.jsonl 持久化与迁移
│   ├── home.js           # DSH 数据根目录解析
│   └── page.js           # 独立统计页
└── client/               # 浏览器半:设置页 + 会话角标 + 弹窗
    └── bundle.js         # web shell loader 格式,手写无构建步骤

许可

MIT

REPOSITORY SIGNALS

보안 및 설치 증거

이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.

출처 추적 가능

공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.

라이선스

저장소가 MIT 라이선스를 선언했습니다.

유지보수 활동

최근 180일 내 코드 업데이트가 있습니다.

설치 증거

재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.

설치 라이프사이클 스크립트

검사한 패키지 메타데이터에 설치 라이프사이클 스크립트가 선언되지 않았습니다.