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

Token 用量看板 Gnatnaituy/dsh-token-usage

DeepSeek Harness
Gnatnaituy38 天前有提交已提供中文文档扫描:含敏感能力

在设置里查看各模型每日 Token 消耗与占比

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Gnatnaituy/dsh-token-usage
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 10 处,展示前 10 条)
  • 发起网络请求
    lib/client.js:478
    return fetch(SUMMARY_ROUTE, { headers: { accept: 'application/json' } })
  • 发起网络请求
    lib/client.js:522
    fetch(RESCAN_ROUTE, { method: 'POST', headers: { accept: 'application/json' } })
  • 读取本地文件
    lib/store.js:93
    text = await readFile(this.ledgerPath, 'utf8')
  • 写入本地文件
    lib/store.js:144
    await mkdir(this.#dir, { recursive: true })
  • 写入本地文件
    lib/store.js:145
    await appendFile(this.ledgerPath, body, 'utf8')
  • 读取本地文件
    lib/store.js:219
    const info = await stat(path)
  • 读取本地文件
    lib/store.js:228
    buffer = await readFile(path)
  • 读取本地文件
    lib/store.js:264
    parsed = JSON.parse(await readFile(this.cachePath, 'utf8'))
  • 写入本地文件
    lib/store.js:284
    await mkdir(this.#dir, { recursive: true })
  • 写入本地文件
    lib/store.js:285
    await writeFile(this.cachePath, `${JSON.stringify(cache)}\n`, 'utf8')
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 查看各模型Token消耗
  • 统计今日7天30天用量
  • GitHub风格用量日历

DeepSeek Harness 插件:在设置里加一页 token 用量,从本地会话日志汇总各服务商、各模型的 token 消耗(今日 / 7 天 / 30 天 / 全部),带 GitHub 风格用量日历和分模型明细。

README

由 DeepSeek 最新模型翻译生成
dsh-token-usage DeepSeek Harness 的 Token 用量统计插件:在「设置」里新增一个 Token 用量 页面,展示 - 总用量:跨所有模型供应商、所有模型的 token 汇总(今日 / 近 7 日 / 近 30 日 / 全部),以及输入、输出、缓存读、缓存写、推理的分项; - 用量日历:GitHub 贡献图风格的热力图,每天一格,悬停查看当日 token 明细与请求数; - 按供应商分组的模型用量:每个供应商一张表,列出每个模型今日、近 7 日、近 30 日的用量与占比。 数据来自 Harness 自己的会话日志(assistant/message 事件的 provider 上报用量),另外通过 session/event 实时记录,无需任何模型调用或第三方计费接口。
展开完整文档(README 剩余 1 节)
dsh-token-usage

DeepSeek Harness 的 Token 用量统计插件:在「设置」里新增一个 Token 用量 页面,展示

- 总用量:跨所有模型供应商、所有模型的 token 汇总(今日 / 近 7 日 / 近 30 日 / 全部),以及输入、输出、缓存读、缓存写、推理的分项;
- 用量日历:GitHub 贡献图风格的热力图,每天一格,悬停查看当日 token 明细与请求数;
- 按供应商分组的模型用量:每个供应商一张表,列出每个模型今日、近 7 日、近 30 日的用量与占比。

数据来自 Harness 自己的会话日志(assistant/message 事件的 provider 上报用量),另外通过 session/event 实时记录,无需任何模型调用或第三方计费接口。

安装

本机开发安装(软链 + 热挂载,无需重启 DSH Desktop):

node tools/install-into-profile.mjs # 安装
node tools/install-into-profile.mjs --dry-run # 只看会做什么
node tools/install-into-profile.mjs --uninstall

脚本会做三件事(幂等):

1. 把本仓库软链进 profile 的 node_modules/dsh-token-usage;
2. 在 profile 的 package.json 里登记 link: 依赖;
3. 在 profile 的 cordis.patch.yml 里插入一行 Loader 条目(id: token-usage / name: dsh-token-usage),由 DSH 的配置 HMR 热挂载。

装完等一两秒,刷新浏览器页面,打开 设置 → Token 用量 即可。

通过 bundle 安装(发布/市场场景)

本包自带 cordis.patch.yml(dsh.bundle.patch)。把包加入 profile 的 dsh.profile.bundles 也可以,但不要同时既加 bundle 又把行写进 cordis.patch.yml:两处会 insert 同一条目 id,Loader 会报 duplicate loader entry id。二选一即可。

数据存放

插件只写自己的目录 /dsh-token-usage/:

| 文件 | 内容 |
| records.jsonl | 追加式 JSONL 账本,一行一条用量记录(去重键 sessionId:seq) |
| scan-cache.json | 每个会话日志的 {size, mtimeMs} 快照,增量重扫只读有变化的文件 |

启动时异步扫描一次 /sessions 下所有 .jsonl.zstd(多帧 Zstandard 结构扫描,正在写入的撕裂尾帧也能容错读取),与实时事件流汇入同一账本,天然幂等去重。

架构

lib/index.js host 半(Cordis 插件) ├─ session/event 监听 → 实时记录 assistant/message 用量 ├─ UsageStore(lib/store.js) 账本:加载 / 去重 / 追加 / 增量回扫 ├─ 路由 GET /dsh-token-usage/summary 汇总快照(JSON) │ GET /dsh-token-usage/status 账本状态 │ POST /dsh-token-usage/rescan 强制全量重扫 lib/core.js 纯聚合:事件折叠、窗口(今日/7/30/全部)、日历、按供应商分组 lib/session-scan.js 多帧 Zstandard 帧扫描 + 会话日志抽取 lib/client.js browser 半:设置页 UI(模块加载器 CJS 格式,无构建步骤) tools/install-into-profile.mjs 安装 / 卸载 test/ 纯逻辑单元测试 + client 冒烟测试(无浏览器、无 harness)

页面只读 host 的汇总路由,不自己做任何统计,所以页面与账本永不分叉;页面上的「重新扫描」按钮对应 POST /rescan。

开发

npm test # node --test test/(core + session-scan + client 冒烟)
node tools/install-into-profile.mjs --dry-run

改 lib/client.js 后刷新页面即生效(模块系统按文件 mtime/大小算 revision,重新拉 bundle)。

client 半要守 React 的 hook 规则:CalendarCard 自己用 hook,所以必须写
h(CalendarCard, props) 挂载,不能写成 CalendarCard(props)。后者会把它的 hook
追加到 TokenUsageSection 的 hook 链表上——第一次渲染(loading 占位)看不出来,等 fetch 回来第二次渲染就抛 React error #310,整个设置页内容变空白。
test/client-smoke.test.mjs 里的严格 hook 调度器按 React 的规则比较同一组件前后两次渲染的 hook 数量,会复现这个错误。

改 host 半(lib/index.js 等)后需要重启 DSH Desktop:模块热重载默认关闭(@deepseek-ai/dsh-hmr 的行是 root: [],只监视 profile 配置),本包通过软链挂在 profile 之外,文件事件也不会被监视到。想让 host 半也热重载,可在 profile 补丁里把 hmr 行的 config.root 指到本仓库路径。

harness home 的判定

新的 DSH Desktop 把用户数据放在 ~/.dsh,旧的 Electron 版放在 ~/Library/Application Support/dsh-desktop/harness。插件按下面的顺序取第一个存在 sessions 目录*的候选作为 harness home,所以同一台机器上装了两套 DSH 也不会读错账本:
1. ctx.get('dshHomePath')() —— harness 自己的 home 解析服务(与 harness 完全同源);
2. $DSH_HOME;
3. ~/.dsh;
4. 旧 Electron 目录(~/Library/Application Support/dsh-desktop/harness)。

前三个都不存在 sessions 时才退回第 4 个,因此老部署依旧可用;判定结果可在 GET /dsh-token-usage/status 的 ledgerPath / sessionsRoot 里核对。

隐私与边界

- 只读 /sessions 里的会话日志,只写插件自己的目录;从不删除或改写任何数据。
- 汇总口径与 DSH 持久日志一致:只有 provider 上报了 usage 的 assistant/message 才计为一条;assistant/attempt、重试事件不带 usage,不重复计数。
- 没有供应商目录信息时,供应商 id 会做标题化显示;归属不明的记录归到「未标注」。
- 日历配色跟随当前主题(深色/浅色自适应)。
预览分享卡片长什么样 ↓Gnatnaituy/dsh-token-usage
分享 · DeepSeek Harness Hub
Gnatnaituy/dsh-token-usage

在设置里查看各模型每日 Token 消耗与占比

这是你的仓库?认领条目

回到顶部