实时追踪 Token 消耗与成本,按调用树归集明细
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
dsh plugin --profile web add zhm20001/dsh-usage-board状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
安装兼容性检查需源码安装仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/22 15:34:58
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
查看扫描证据(共 7 处,展示前 7 条)
- 发起网络请求src/client/ui.ts:18
return globalThis.fetch(url, request) - 读取本地文件src/services/backfill.ts:74
entries = readdirSync(sessionsRoot, { recursive: true }) as string[] - 读取本地文件src/services/backfill.ts:84
st = statSync(full) - 发起网络请求src/services/balance.ts:128
this.fetcher = deps.fetch ?? ((url, init) => globalThis.fetch(url, init)) - 读取本地文件src/services/session-log.ts:44
const raw = readFileSync(path) - 写入本地文件src/services/storage.ts:257
mkdirSync(dirname(this.dbPath), { recursive: true, mode: 0o700 }) - 写入本地文件src/services/storage.ts:281
chmodSync(this.dbPath, 0o600)
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
功能亮点
- 实时追踪Token消耗
- 按调用树归集明细
- 增量回溯历史会话
展开完整介绍(145 字)↓
dsh-usage-board 是专为 DSH (DeepSeek Harness) 设计的用量与成本可视化看板插件。 插件能实时捕获会话内的 Token 消耗、Step 耗时和异常指标,支持冷启动增量回溯历史全量会话,并按 Sub-agent DAG 调用关系进行树状归集与反向明细穿透。
README
由 DeepSeek 最新模型翻译生成展开完整文档(README 剩余 1 节)
dsh-usage-board
DeepSeek Harness (DSH / Cordis) 的全功能用量监控、成本核算与诊断大盘插件。
Node Version
License
[Zero Dependency]()
📖 简介
dsh-usage-board 是专为 DSH (DeepSeek Harness) 设计的用量与成本可视化看板插件。
插件能实时捕获会话内的 Token 消耗、Step 耗时和异常指标,支持冷启动增量回溯历史全量会话,并按 Sub-agent DAG 调用关系进行树状归集与反向明细穿透。
📸 界面预览
插件通过宿主 Slot 系统在三处无缝挂载 UI(前端为轻量无状态设计 lib/client.js):侧边栏底部的 Usage Board 按钮一键唤出全屏大盘,会话详情页自带 Usage Tab 查看单会话账单。
会话页 "Usage" Tab —— 单会话账单与诊断
Session Usage Tab
树级聚合 KPI(输入 / 输出 = 思考 + 正文 / 缓存命中 / 成本)、Token 五桶构成 × 峰谷金额(零桶自动隐藏)、模型占比、请求效率与逐步明细。悬停行内 ? 可查看该桶峰 / 谷两档实付单价与金额对照(谷价 = 峰价 × ½):
Peak/off-peak rate tooltip
全屏大盘 (Overlay) —— 总览
Dashboard overview
总量 / 成本 / 缓存命中率 KPI,DeepSeek 官方余额与烧钱速率预测(含夜间/阶梯价反事实节约),84 天用量热力图与 24 小时峰谷剖面。
全屏大盘 (Overlay) —— 会话归集与 Turns 明细
Dashboard turns table
最近会话树状归集、Turn × Step 级明细(TTFT / 耗时 / 五桶 Token / 峰谷金额),一键 CSV 导出。
挂载点一览
| 挂载 Slot | 位置 | 展示内容 |
| conversation.view | 会话详情页 "Usage" Tab | 当前会话树级聚合指标、Token 五桶构成 × 峰谷成本、模型占比、Step 级耗时瀑布 |
| sidebar.footer.action | 侧边栏底部操作区 | 大盘常驻快捷开闭图标 |
| shell.overlay | 全屏监控大盘 (Overlay) | 余额与可用天数、异常与反事实节约 KPI、84 天热力图、24 小时峰谷剖面、最近会话归集、Turns 明细表及 CSV 导出 |
✨ 核心特性
- ⚡ 零运行时依赖:基于 Node.js 22.5+ 原生 node:sqlite 构建,无任何 C++ 原生编译依赖及 Worker 进程负担。
- 🏛️ CQRS 架构:DSH 会话原文件作为只读真相源 (Write Model),插件 SQLite 数据库作为可重建只读视图 (Read Model),保障会话数据安全。
- 🚀 暖/热双层读模型:
- 暖层 (SQLite):按脏分区增量汇总 daily_rollups / session_rollups,动态按最新价目表现算成本。
- 热层 (内存快照):进程内不可变快照,单次请求下发渲染就绪的主帧;支持 rev 版本号协商,无变更秒回 unchanged。
- 🌲 Sub-agent DAG 聚合分析:支持多层子代理深度调用链聚合、Step 耗时瀑布图、Token 五桶构成分析。
- 💰 成本与余额洞察:支持 DeepSeek 官方余额透传、实时额度可用天数预测、夜间/阶梯价反事实节约计算。
- 🖥️ 三处无缝 UI 挂载:原生融入 DSH Web 控制台(会话页 Tab、侧边栏入口、全屏仪表盘)。
🚀 快速上手
1. 环境准备
- Node.js >= 22.5.0
- DSH (DeepSeek Harness)
2. 作为 DSH 插件启用
1. 克隆并构建(仓库不含 lib/ 产物,必须先构建)
git clone https://github.com/zhm20001/dsh-usage-board.git
cd dsh-usage-board
npm install
npm run build
2. 将插件注册至 DSH Web Profile
dsh plugin --profile web add "$(pwd)"
3. 启动 DSH Web 宿主
dsh --profile web --port 3099
启动后访问 http://127.0.0.1:3099 即可在界面中看到用量看板。首次启动会冷启动回溯扫描全部历史会话,之后增量跟进。
⚙️ 配置说明
余额查询配置
大盘的「账户余额」组件读取 DeepSeek 官方 GET /user/balance 接口:
1. 方式一:在 DSH 的「设置 → 模型」中填入 DEEPSEEK_API_KEY。
2. 方式二:写入 ~/.dsh/.credentials.yaml(权限需设置为 0600): DEEPSEEK_API_KEY: sk-xxxxxxxxxxxxxxxxxxxxxxxx
注:未配置 Key 时余额卡片展示占位符,不影响其余本地统计功能。余额查询是本插件唯一的外网请求,其余处理均在纯本地执行。
数据与存储路径
| 类别 | 存储位置 | 说明 |
| 真相源 (Write Model) | ~/.dsh/sessions///session.jsonl.zstd | DSH 原始会话,只读 |
| 投影库 (Read Model) | ~/.dsh/data/usage.sqlite | 插件维护的 SQLite 索引与聚合库 |
💡 可安全重建:投影库可随时删除重建(建议先停用插件,再 rm ~/.dsh/data/usage.sqlite*)。下次启动 Backfill 会重扫全部历史会话重建投影;Write Model 永远不要删。
🔌 API & 嵌入式开发 (SDK)
HTTP API 端点
| 端点 | 方法 | 说明 |
| /api/usage-dashboard/snapshot?rev=N | GET | 获取大盘全量主帧。rev 命中当前版本时返回 {unchanged: true, revision} |
| /api/usage-dashboard/snapshot?refresh=1 | GET | 强制出网刷新一次 DeepSeek 实时余额 |
| /api/usage-dashboard/turns | GET | 检索 Turns 明细列表。参数:limit(默认 500、上限 500)、session_id、root_session_id(二者可同给取交集)、format=csv |
端点仅在注入 ctx.webServer 时注册(回环 same-origin 限定);未注入时引擎作为库完整可用。
作为独立库调用
先 npm run build 产出 lib/,再以依赖方式引入本包(或直接指向 lib/index.js):
import { createEngine } from 'dsh-usage-board'
// ctx 为结构化 HostContext,无需真实 Cordis 运行时 const engine = createEngine(ctx, { dbPath, sessionsRoot })
// 等待冷启动/增量 Backfill 就绪 await engine.ready
// 查询接口调用示例 const rollup = engine.query.getRollupBySession(rootSessionId) const heat = engine.query.getHeatmapData(12) const fails = engine.query.getTimelineAnomalies(100) const text = engine.query.loadTurnDetails({ sessionFilePath, turnIndex })
// 逆序平滑释放 await engine.dispose()
🛠️ 本地开发
构建 Node 端与 Client 端产物
npm run build
启动监听构建(配合 DSH 宿主的 Client HMR 热替换)
npm run dev
运行全量测试套件(基于 node --test,无外部依赖)
npm test
类型检查
npm run typecheck
📄 License
本项目基于 MIT License 开源。预览分享卡片长什么样 ↓
实时追踪 Token 消耗与成本,按调用树归集明细
相关插件 · 模型接入
这是你的仓库?认领条目