🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

Token 用量统计 1148281964/dsh-token-stats

DeepSeek 客户端
114828196479 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

采集真实用量并估算费用,悬浮球实时查看

27.5/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/1148281964/dsh-token-stats.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 79 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 28 处,展示前 24 条)
  • 读取密钥环境变量
    lib/index.js:48
    const PERSIST_DIR = process.env.DSH_TOKEN_STATS_DIR
  • 读取密钥环境变量
    lib/index.js:49
    ? process.env.DSH_TOKEN_STATS_DIR
  • 读取密钥环境变量
    lib/index.js:81
    if (process.env.DSH_TOKEN_STATS_PRICES) {
  • 读取密钥环境变量
    lib/index.js:82
    const ext = JSON.parse(process.env.DSH_TOKEN_STATS_PRICES);
  • 写入本地文件
    lib/index.js:149
    mkdirSync(PERSIST_DIR, { recursive: true });
  • 读取本地文件
    lib/index.js:222
    text = readFileSync(PERSIST_FILE, "utf8");
  • 写入本地文件
    lib/index.js:343
    appendFile(PERSIST_FILE, line, "utf8").catch((err) => {
  • 读取本地文件
    lib/index.js:361
    text = readFileSync(PERSIST_FILE, "utf8");
  • 请求外部主机openrouter.ai
    lib/index.js:397
    const resp = await fetch("https://openrouter.ai/api/v1/models", {
  • 发起网络请求
    lib/index.js:397
    const resp = await fetch("https://openrouter.ai/api/v1/models", {
  • 写入本地文件
    lib/index.js:441
    writeFileSync(tmp, rows.map((r) => JSON.stringify(r)).join("\n") + "\n", "utf8");
  • 写入本地文件
    lib/index.js:442
    renameSync(tmp, PERSIST_FILE);
  • 读取本地文件
    backfill-history.mjs:37
    if (!existsSync(LEDGER)) return [];
  • 读取本地文件
    backfill-history.mjs:39
    for (const line of readFileSync(LEDGER, "utf8").split("\n")) {
  • 读取本地文件
    backfill-history.mjs:69
    if (existsSync(MARKER) && !FORCE) {
  • 读取本地文件
    backfill-history.mjs:70
    const m = JSON.parse(readFileSync(MARKER, "utf8"));
  • 读取本地文件
    backfill-history.mjs:82
    if (existsSync(SESSIONS_ROOT)) {
  • 读取本地文件
    backfill-history.mjs:83
    for (const projectDir of readdirSync(SESSIONS_ROOT)) {
  • 写入本地文件
    backfill-history.mjs:158
    mkdirSync(LEDGER_DIR, { recursive: true });
  • 写入本地文件
    backfill-history.mjs:159
    writeFileSync(MARKER, JSON.stringify({ importedAt: Date.now(), importedCount: 0, boundaryTs }, null, 2));
  • 写入本地文件
    backfill-history.mjs:166
    if (existsSync(LEDGER)) renameSync(LEDGER, backup);
  • 写入本地文件
    backfill-history.mjs:167
    mkdirSync(LEDGER_DIR, { recursive: true });
  • 写入本地文件
    backfill-history.mjs:168
    writeFileSync(LEDGER, all.map((r) => JSON.stringify(r)).join("\n") + "\n", "utf8");
  • 写入本地文件
    backfill-history.mjs:169
    writeFileSync(MARKER, JSON.stringify({ importedAt: Date.now(), importedCount: imported.length, boundaryTs, backup }, null, 2));
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
涉及外部主机:openrouter.ai

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 采集真实用量
  • 估算费用
  • 悬浮球实时查看

DeepSeek Harness 全局 token 用量统计插件 | 真实用量追踪、持久化账本、费用估算(OpenRouter 定价)、可拖拽悬浮按钮与详情面板。

README

由 DeepSeek 最新模型翻译生成
dsh-token-stats 全局 Token 用量统计插件(DeepSeek Harness / DSH Web)。 从每一次 llm/stream 调用采集真实 usage(非估算),构建跨重启持久的 JSONL 账本,按供应商 / 模型 / 会话 / 日期聚合,提供估算费用(OpenRouter 实时价格)、缓存命中率、成功率、首字延迟等指标,并通过可拖动的悬浮按钮、居中大屏弹窗和模型工具 token_stats 展示。 运行截图 1. 设置页 · 全局统计 设置页-全局统计 2. 右下角悬浮球 —— 实时展示 token 统计,支持「全局 / 当前会话」切换,可拖动 右下角悬浮球 - 全局统计 全局统计 - 当前会话统计(与会话底部官方统计对齐) 当前会话统计 当前会话统计-对齐 3. 展开明细 —— 大屏弹窗;右上角可手动从 OpenRouter 拉取最新模型价格并重算全部历史费用 展开明细-上 展开明细-下 功能特性 - 真实用量采集:waterfall 包装 llm/stream,记录每次成功调用的输入 / 输出 / 缓存读 / 缓存写 / 推理 tokens,失败与取消调用单独计数(成功率口径)
展开完整文档(README 剩余 1 节)
dsh-token-stats

全局 Token 用量统计插件(DeepSeek Harness / DSH Web)。

从每一次 llm/stream 调用采集真实 usage(非估算),构建跨重启持久的 JSONL 账本,按供应商 / 模型 / 会话 / 日期聚合,提供估算费用(OpenRouter 实时价格)、缓存命中率、成功率、首字延迟等指标,并通过可拖动的悬浮按钮、居中大屏弹窗和模型工具 token_stats 展示。

运行截图

1. 设置页 · 全局统计

设置页-全局统计

2. 右下角悬浮球 —— 实时展示 token 统计,支持「全局 / 当前会话」切换,可拖动

右下角悬浮球

- 全局统计

全局统计

- 当前会话统计(与会话底部官方统计对齐)

当前会话统计

当前会话统计-对齐

3. 展开明细 —— 大屏弹窗;右上角可手动从 OpenRouter 拉取最新模型价格并重算全部历史费用

展开明细-上

展开明细-下

功能特性

- 真实用量采集:waterfall 包装 llm/stream,记录每次成功调用的输入 / 输出 / 缓存读 / 缓存写 / 推理 tokens,失败与取消调用单独计数(成功率口径)
- 跨重启持久账本:每次调用逐条落盘(/data/token-stats/daily.jsonl),启动 / 热重载时从账本重建全部维度,数字只增不减
- 多维聚合:按供应商、模型、会话、日期(当月 / 近 31 天趋势)分布
- 费用估算:内置价格表 + 一键从 OpenRouter 拉取最新价格并重算历史费用(DSH_TOKEN_STATS_PRICES 环境变量可覆盖单价)
- 缓存命中率 / 成功率 / 平均耗时 / 首字延迟(TTFT)等指标
- 可拖动悬浮球:右下角 FAB,位置持久化,展开面板支持「全局 / 当前会话」切换
- 居中大屏弹窗:KPI 卡片、请求占比环形图、趋势、供应商 / 模型表格、近期调用明细(含单次缓存命中率、首字/耗时)
- 当前会话跟随:通过 DOM 探测 UI 选中的会话行([role=treeitem][aria-selected=true])+ host 会话目录标题匹配,自动跟随 UI 切换(执行中/暂停会话均可),失败时回退到最近活跃会话
- 模型工具:token_stats(支持可选 sessionId 参数),模型可直接查询统计
- 历史回扫:backfill-history.mjs 可从 ~/.dsh/sessions 的多帧 zstd 会话文件回扫插件安装前的调用(幂等,自动去重)

安装

方式一:官方 CLI(推荐)——从 GitHub 或 npm 安装:

dsh plugin --profile web add github:/dsh-token-stats
或
dsh plugin --profile web add dsh-token-stats

包内 cordis.patch.yml(dsh.bundle.patch 声明)会让 CLI 自动把 loader 行插入 profile,重启 Web GUI 生效。

方式二:手动放置——将包放入 profile 的 packages/ 目录(如 C:\Users\\.dsh\profiles\web\packages\dsh-token-stats),并在 cordis.yml 的 loader 列表加入:

- id: token-stats
name: dsh-token-stats

重启 Harness 即可。开发期也可用 dsh-super-injector 热注入(免重启)。

该包为纯 JavaScript,无 prepare 构建脚本,github: 安装无需 allowedBuilds 配置。

使用

- FAB 悬浮球(右下角):点击展开面板,可拖动;面板右上角「⛶」打开居中大屏弹窗;「全局 | 当前会话」切换统计范围
- 设置页:设置 → Token 统计,包含同样的面板与大屏弹窗入口
- 大屏弹窗:「↻ 更新价格」从 OpenRouter 拉取最新模型价格并重算全部历史费用;KPI、环形图、趋势(当月/近31天)、表格、明细
- 模型工具:对话中调用 token_stats({"sessionId": "..."} 可选)

配置

| 环境变量 | 说明 |
| DSH_TOKEN_STATS_DIR | 账本目录覆盖(默认 /data/token-stats/) |
| DSH_TOKEN_STATS_PRICES | 价格覆盖 JSON:{"": {"input":0.27,"cacheRead":0.07,"cacheWrite":0.27,"output":1.1}}(USD/1M tokens) |

价格表默认值来自 OpenRouter 公开模型列表(查询日期见 lib/index.js 注释),可通过面板按钮或环境变量校正。

HTTP API

| 端点 | 说明 |
| GET /token-stats/api/query | 统计快照(?sessionId= 查单会话) |
| GET /token-stats/api/sessions | 会话目录(id + 标题),供前端跟随 UI 会话 |
| POST /token-stats/api/refresh-prices | 从 OpenRouter 拉取最新价格并重算账本费用 |

所有端点校验 Origin(仅本机)、HEAD 不返回 body。

历史回扫(可选)

插件安装前的调用不会自动出现。可用回扫脚本从历史会话文件补录:

node backfill-history.mjs # 正式导入(幂等)
node backfill-history.mjs --dry-run # 预览
node backfill-history.mjs --force # 强制重跑

仅补录「成功且带 usage」的调用;耗时 / 首字延迟无法回补;费用按当前价格表重算。导入前自动备份账本。

已知限制

- 浏览器端无「UI 当前会话 id」官方接口:当前会话跟随基于 DOM 探测 + 标题匹配,会话列表不可见或标题歧义时回退到最近活跃会话
- 会话维度的分布(供应商/模型/日期)基于保留窗口(最近 500 条)聚合,总量 totals 为完整账本
- 费用为估算值(按模型单价 × 用量),实际结算以你的网关/厂商账单为准
- 统计口径为真实 usage(计费口径:输入 = 未缓存 + 缓存读 + 缓存写),与 DSH 内置 token-meter 的估算口径不同

License

MIT

发布到社区

1. 推送到 GitHub 仓库
2. 给仓库打 dsh-plugin topic(GitHub → repo → About → Topics),即可被 dsh-plugin 生态 与社区插件市场(如 dsh-plugin-market)搜索发现
3. (可选)发布 npm:npm publish --access public
4. (可选)发 Release:npm pack 后把 dsh-token-stats-.tgz 附到 GitHub Release
预览分享卡片长什么样 ↓1148281964/dsh-token-stats
分享 · DeepSeek Harness Hub
1148281964/dsh-token-stats

采集真实用量并估算费用,悬浮球实时查看

回到顶部