htq20080119/dsh-token-stats
Token usage statistics plugin for DeepSeek Harness — per-window consumption metrics with an enable/disable switch, right in Settings.----------DeepSeek Harness
이것은 DeepSeek Harness(DSH) 플러그인입니다. 이 사이트는 GitHub README, 설치 정보, 유지보수 상태, 공개 보안 시그널을 모아 보여줍니다.
在 设置 → "Token 用量" 页面展示全部会话的 token 消耗统计,按时间窗分桶——并支持随时启停:开关状态持久化到 settings.yaml,秒级热生效,无需重启。
🛡️ 社区插件 — 本插件是 DeepSeek Harness 的独立社区维护插件,并非 DeepSeek 官方项目,与 DeepSeek / DeepSeek Harness 团队无隶属或背书关系。
✨ 功能特性
| 🪟 8 个时间窗 | 当日 · 近 3 日 · 近 7 日 · 近 15 日 · 近 30 日 · 近半年(180d)· 近一年(365d)· 全部时间 |
| 📈 每窗 9 项指标 | 总消耗、输入、输出、缓存命中(cache read)、缓存写入(cache write)、请求数、缓存命中请求数、缓存命中率 |
| 🗂️ 概览卡片 | 全部时间汇总:输入 / 输出 / 缓存命中 / 缓存写入 / 命中率 / 请求数 |
| 🎚️ 启停开关 | 页面内"停用/启用"按钮——持久化到 settings.yaml,秒级热生效 |
| 🔄 自动刷新 | 30 秒轮询 + 手动刷新按钮 |
| 📚 官方同口径 | 与内置 tokenUsage 会话投影一致的 (turn, step) 去重逻辑 |
📸 预览
截图占位——可替换为 设置 → "Token 用量" 页面的实际截图。
⚠️ 下表为示例数据,仅作展示,非真实用量。
页面包含概览卡片(全部时间汇总)与时间窗明细表格:
| 时间窗 | 总消耗 | 输入 | 输出 | 缓存命中 | 缓存写入 | 请求数 | 命中请求 | 命中率 |
|---|---|---|---|---|---|---|---|---|
| 当日 | 1.24M | 1.18M | 56.2K | 1.12M | 0 | 87 | 85 | 96% |
| 近 3 日 | 3.87M | 3.71M | 161K | 3.55M | 0 | 254 | 248 | 96% |
| 近 7 日 | 8.93M | 8.62M | 312K | 8.31M | 0 | 589 | 577 | 97% |
| 近 15 日 | 19.4M | 18.8M | 641K | 18.3M | 0 | 1,243 | 1,221 | 97% |
| 近 30 日 | 38.7M | 37.5M | 1.22M | 36.7M | 0 | 2,467 | 2,431 | 97% |
| 近半年 | 214M | 208M | 5.9M | 205M | 0 | 13,988 | 13,812 | 98% |
| 近一年 | 412M | 401M | 10.8M | 396M | 0 | 26,531 | 26,214 | 98% |
📦 安装
插件是经 web profile 加载的外部 DSH 包。
1. 让包可解析
通过 pnpm 加入 profile 的依赖:
# 本地开发(符号链接源码目录,改代码即时生效)
pnpm --dir "C:\Users\<你>\.dsh\profiles\web" add "link:<本仓库路径>"
# 或直接从 GitHub 安装(打包副本)
pnpm --dir "C:\Users\<你>\.dsh\profiles\web" add "github:<你的账号>/dsh-token-stats"
web profile 默认位于
%USERPROFILE%\.dsh\profiles\web。
2. 挂载条目
在 profile 的补丁层(cordis.patch.yml)追加:
- insert:
- id: token-stats
name: dsh-token-stats
config: {}
补丁层热监控——秒级挂载,无需重启。
🚀 使用
- 打开 设置 → "Token 用量"(先刷新一次页面以加载 client bundle)
- 查看概览卡片与时间窗表格(每 30 秒自动刷新)
- 用页面右上角的 停用 / 启用 按钮控制聚合:
| 操作 | 效果 | 持久化位置 |
|---|---|---|
| 停用 | 停止聚合,页面显示"已停用"状态 | settings.yaml → token-stats: { enabled: false } |
| 启用 | 恢复聚合与统计表格 | settings.yaml → token-stats: { enabled: true } |
开关即时生效,无需重启。
🛠️ 开发
# 冒烟测试:host fold 逻辑 + client bundle 注册
node smoke-test.mjs
| 文件 | 职责 |
|---|---|
lib/index.js | Host 半部——零第三方依赖(见架构说明) |
lib/client.js | Client bundle——经典 window.__ModuleLoader__.load({ id, factory }) 脚本;id 必须等于 loader 条目 name |
改动生效方式:host 代码受 Node ESM 缓存(按解析 URL 键控)限制——需重启 web app;client bundle 改动只需刷新页面。
🧱 架构说明
- 数据源 —
assistant/message事件的data.usage:{inputTokens, outputTokens, cacheReadTokens?}(opencode-go 网关不报cacheWriteTokens);uncachedInput = inputTokens - cacheReadTokens。 - Host 端点 —
GET /token-stats→{enabled, generatedAt, windows[]};POST /token-stats/config {"enabled": bool}经ctx.settings服务持久化到热监控的settings.yaml。 - Host 零依赖 — profile 插件解析裸导入无 fallback,故
lib/index.js不 import 任何第三方包(settings命名空间 schema 为手写、兼容 schemastery 的对象)。 package.json必须导出./package.json—dsh-client-modules通过require.resolve("<pkg>/package.json")解析 client bundle;缺该导出会被负面缓存,client bundle 404 直到重启 web app。
🤖 模型体验
无——插件从不组装或发送模型请求,只读取持久化的会话日志并提供设置页,不增加任何 prompt、消息、schema、工具或模型调用。
KV 缓存影响
无——不发起任何 provider 请求;缓存命中/写入数字仅是会话日志中网关上报的只读指标。
⚠️ 已知限制
web/deepseek-search-llm-request事件不带 usage——搜索调用的 token 不计入(与官方投影一致)。- 网关不报 cacheWrite 时该列恒为 0。
📄 许可
MIT © 2026 本源不爱onani
보안 및 설치 증거
이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.
공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.
저장소가 MIT 라이선스를 선언했습니다.
최근 180일 내 코드 업데이트가 있습니다.
재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.
검사한 패키지 메타데이터에 설치 라이프사이클 스크립트가 선언되지 않았습니다.