dsh-dashboard
Verified@weibaohui/dsh-dashboard · v0.1.6 · MIT · Web UI
dsh 插件 · 使用量仪表盘:离线扫描会话日志,统计每日/每周/每月 token、估算费用、模型/工具/技能/命令榜、输出速度、工作时段与质量指标;gridstack+ECharts 卡片可拖拽编排,支持自定义公式与 AI 编排(提示词往返导入)。
Install
dsh plugin add @weibaohui/dsh-dashboard Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Readme
@weibaohui/dsh-dashboard
使用量仪表盘:离线扫描本机全部 dsh 会话日志,把每天/每周/每月的 token 用量、估算费用、模型/工具/技能/命令榜、输出速度、工作时段与质量错误做成可编排的 Dashboard——gridstack 拖拽卡片 + ECharts 图表 + GitHub 同款日历热力图,支持自定义公式、AI 编排整页配置,不监听任何运行时事件、全部统计在本地完成。
效果演示

![]() |
![]() |
![]() |
| 概览:四统计卡 + 热力图 + 趋势 + 模型榜 | Token 与费用:趋势/构成/命中率/明细 | 模型与质量:速度/错误率/明细/重试榜 |
![]() |
![]() |
![]() |
| 命令与技能:四类调用榜 | 工作时段热力图 + 会话明细 | 专项洞察 + 错误码分类 + 聚簇 |
![]() |
![]() |
|
| 输入与时长:次数/长度/运行时长 | 会话下钻:单会话完整画像 |
核心功能
- 六个出厂预设页:概览(四统计卡 + 52 周热力图 + token 趋势 + 模型榜)、Token 与费用、模型与质量、命令与技能、工作时段与会话、错误分析——装上即有完整 Dashboard
- 深度错误分析:供应商 × 错误码分类表(限流/配额、服务端 5xx、超时、空响应、传输——宿主重试策略自带分类学)、错误聚簇 Top(归一化计数,如「429 请求频率过高」×162)、错误样本表、异常日排行(回合错误率)、工具报错榜
- 专项洞察(7 张独立卡,每专项一张最合身的图型):异常日错误率(横向条形 + 中位参照虚线,点条下钻当日)、Token 异常日(×中位数倍数条形,×1 基线)、重试风暴(供应商 × 重试码堆叠条)、慢工具耗时榜、命令失败率(绿→黄→红严重度条形)、错误聚簇矩形树图(面积 ∝ 次数,按错误类别着色)、会话榜单合并表(费用/失败/输入/时长/压缩五榜合一可排序,行点击下钻会话);旧版 11 区合一
insights卡保留兼容,卡片编辑器与 AI 编排目录同步收录新卡型 - 三级下钻:热力图点某天 → 当日明细(会话/工具/技能/命令/错误/小时热度);模型榜点某模型 → 模型画像(逐日趋势/速度/重试/费用/Top 会话);会话行点某行 → 会话画像(按天分解/模型分布/工具统计/错误样本)
- 输出速度精确计量:每条 assistant 消息内嵌流式 chunk 时序(delta 时间戳数组),解码窗口首尾相减得 tokens/s——按模型/按日出 p50 级精度,而非粗糙估算
- 估算费用:内置常见模型占位价格表,按模型 × in/out/缓存读写单价换算,UI 明示「估算」并列出未定价模型;价格表可视化编辑
- 可编排:gridstack 拖拽/缩放、加卡片、建页/改名/删页,布局与卡片配置即 JSON 自动持久化
- 22 种图类:堆叠柱、矩形树图(项目→模型构成)、旭日图、桑基流向图、主题河流、雷达(模型质量五维)、平行坐标(会话多维)、箱线图(速度分布)、K 线(每日速度区间)、直方图(输入长度分布)、费用预算仪表盘
- 自定义公式:卡片支持安全表达式(Pratt 解析器,禁 eval)——
pct(cacheReadTok, cacheReadTok + inTok)、perSec(decodeTok, decodeMs),序列函数ma(x,n)移动平均、delta(x)环比 - AI 编排:描述需求 → 生成带指标目录与 JSON Schema 的提示词 → 交给任意 agent 会话 → 返回 JSON 一键导入,宿主按 Schema + 指标白名单双校验,坏配置进不来
- 入口可选:默认左侧栏 Global panels 最上方(完整主面板形态);⚙ 设置里可切换为设置页内 / 两者都显示
- 明暗主题跟随:按官方约定读取
body[data-ds-dark-theme]/html[data-ds-theme-source]主题属性,MutationObserver 属性监听即时跟随 dsh 切换主题(纯事件驱动,无轮询;matchMedia 兜住系统深浅),整套 UI 与全部图表实时重着色,无需刷新、无设置项 - 性能自律:多帧 zstd 逐帧解压(结构化扫帧,不用一次性解压 API 防静默截断)、mtime 增量扫描日常秒级、事实表内存缓存 + storage 持久化、零 npm 运行时依赖
安装
dsh plugin --profile web add @weibaohui/dsh-dashboard -w
装完重启 dsh web 即生效,启动后自动增量扫描 ~/.dsh/sessions。入口:左侧栏最上方 📊 仪表盘(⚙ 设置里可切换为设置页内 / 两者)。
使用
- 装上即有六个出厂预设页:概览 / Token 与费用 / 模型与质量 / 命令与技能 / 工作时段与会话 / 错误分析,页签直接切换
- 编辑布局:进入编辑模式拖拽/缩放卡片、加卡片、新建页/改名/删页,改动自动保存
- 下钻:热力图点某一天、模型榜点某个模型、会话表点某一行、洞察条目点击——逐级从总览定位到单个会话
- AI 编排:设置 → AI 编排新页面 → 描述需求生成提示词 → 交给任意 dsh agent 会话 → 把返回 JSON 粘回导入
- 费用:默认按内置价格表估算;设置 → 编辑价格表按模型调整单价(每 M token,含缓存读写);⚙ 设置里可设月预算,Token 与费用页的预算仪表盘实时显示达成率
- 扫描:启动自动增量扫描(按文件 mtime 跳过);设置里可手动增量重扫 / 全量重扫
- 自定义公式:卡片编辑器填公式(优先于指标),支持
pct(a,b)、perSec(tokens,ms)、序列级ma(x,n)、delta(x) - 输入与时长分析:输入次数/字符量趋势、平均输入长度、会话运行时长排行、子代理调用量
页面 → 板块
| 预设页 | 卡片 |
|---|---|
| 概览 | 今日费用/tokens/活跃会话/平均速度四卡 · GitHub 同款热力图 · 每日 token 趋势 · 模型榜 |
| Token 与费用 | 每日费用趋势 · 费用构成饼图 · 缓存命中率(公式卡) · 按模型明细表 |
| 模型与质量 | 输出速度趋势(按模型) · 回合错误率 · 模型质量明细 · 重试榜 |
| 命令与技能 | shell 命令榜 · skill 调用榜 · 工具调用榜 · 斜杠命令榜 |
| 工作时段与会话 | 星期 × 小时热力图 · 最近会话表 · 回合与错误趋势 · 项目榜 |
| 错误分析 | 专项洞察 · 错误趋势 · 供应商 × 错误码 · 错误样本与聚簇 · 工具报错榜 |
| 输入与时长 | 输入次数/运行时长统计卡 · 输入趋势 · 平均输入长度 · 直方图 · 会话明细 |
卡片配置 schema(页面 JSON)
页面配置即 JSON(gridstack 布局 + 卡片定义),存宿主 storageDomain;手排、AI 排都是改这份 JSON。
{
id: 'overview', title: '概览', cols: 12,
layout: [{ i: 'ov-today-cost', x: 0, y: 0, w: 3, h: 2 }, …],
cards: {
'ov-today-cost': {
type: 'stat', // stat|line|bar|pie|table|calendarHeatmap|punchcard|sessions
// errorSamples|retryCodes|insights|stack|treemap|sunburst
// sankey|themeRiver|radar|parallel|boxplot|candle|histogram|gauge
title: '今日估算费用',
query: {
measures: ['cost'], // 指标名(见 /api/catalog 指标目录)
granularity: 'day', // day | week | month
range: 'today', // today | 7 | 30 | 90 | 365 | all
groupBy: '', // model|tool|skill|cmd|slash|project|session|''
scope: 'all', // all 含子代理 | top 仅顶层会话
project: '', // 按项目名过滤
},
options: { unit: 'USD', top: 8, stack: true },
},
},
}
指标目录(measures)
msgs 模型响应数 · inTok/outTok/cacheReadTok/cacheWriteTok/totalTok · turns/turnsError 等 · retries/retryExhausted · toolCalls/toolErrors/toolMs · llmMs/decodeMs/decodeTok · speed 输出速度 · sessions/skills/cmds/slashCmds · cost 估算费用 · errorRate 回合错误率
公式
算子 + - * / % ( ),数字字面量,除零得 0
行级 pct(a,b) = a/b*100 perSec(tokens, ms) = 每秒速率
序列 delta(x) = 环比差 ma(x, n) = n 期移动平均
示例 pct(cacheReadTok, cacheReadTok + inTok) 缓存命中率
perSec(decodeTok, decodeMs) 输出速度 tok/s
pct(turnsError, turns) 回合错误率 %
指标 → 数据源
| 指标 | 日志事件 | 说明 |
|---|---|---|
| token 用量 | assistant/message 的 usage |
inputTokens 按请求累计,与账单同口径;部分 provider 另报 cacheRead/Write |
| 模型 / 速度 | 同上 message.source + stream[].dt |
逐 chunk delta 时序首尾相减得解码窗口;速度 = decodeTok/decodeMs |
| LLM 重试分类 | llm/retry |
宿主自带错误码:RATE_LIMIT/SERVER/TIMEOUT/EMPTY_RESPONSE/TRANSPORT + 原始 message + delayMs |
| 回合错误 | turn/end 的 reason.kind/error.message |
completed/error/aborted/interrupted/max-tokens/user 七种 + 错误文本归类 |
| 工具 / 报错 | tool/call + tool/result(callId 配对) |
调用数、耗时、isError 分类(权限/不存在/命令失败/超时…) |
| skill 调用 | tool/call name=skill |
arguments.name 计数 |
| shell 命令 | tool/call name=bash |
arguments.command 首词分类,只存类别 + 计数不存原文 |
| 工作时段 | 全事件 time |
本地时区 星期 × 小时 168 格热度 |
| 会话 | session 头 + turn/*、user/message |
每项目会话数/回合数;delegationDepth 区分子代理 |
实现说明
离线扫描器(host) 查询层 展示层(client)
───────────────────── ──────────────── ─────────────────
~/.dsh/sessions/**/*.zstd /api/catalog 指标目录 gridstack 拖拽网格
↓ 结构化扫帧 + 逐帧 zstdDecompressSync /api/cube 立方体聚合 ECharts 八类 + 三专项卡片
事件流 ──fold──▶ 事实表(会话×日) /api/summary /sessions calendar 热力图 / punchcard
│ └─▶ storage 域持久化 /api/errors /insights 公式求值器(Pratt 解析)
▼ mtime 增量 /api/day|model|session 下钻 settings.section + 侧边栏入口
FactsById 内存缓存 /api/pages /pricing /config 布局+卡片 JSON 持久化
- 扫描器:会话日志是「多帧 zstd 拼接容器」(宿主每批次 append 一帧),node:zlib 的一次性解压与解压流都只解第一帧——必须结构化扫帧(按帧格式跳步,不解压块)后逐帧
zstdDecompressSync;按文件 mtime 增量,130 个文件全量 4s - 事实表:每行 = 会话 × 本地日,聚合出全部榜单与趋势;
storageDomain(域dsh_dashboard)持久化 + 内存缓存;存储域打开失败(如重启窗口期被占用)自动退化内存模式并在/api/status标注 - host:
inject ['webServer','connection','storageDomain'],全部路由走connection.requestRejection信任栅栏;配置(页面/价格表/入口)与事实同域分表 - client:
slots双入口挂载——sidebar.panellist(order -100 置顶图标)+main主面板(variant:'panel',JS 钉高使 wrap 自身滚动),settings.section(variant:'settings',跟随弹窗滚动);ECharts + gridstack 由 esbuild 构建期内联,React 是宿主平台模块 - 响应头:全部 API 带
Cache-Control: no-store,保证写后读一致
HTTP API(宿主)
| 路由 | 说明 |
|---|---|
GET /dsh-dashboard/api/status |
扫描状态/进度/存储模式/usage 覆盖率 |
POST /dsh-dashboard/api/scan |
触发扫描 { full?: bool } |
GET /dsh-dashboard/api/catalog |
指标目录 + 卡片类型 + 公式说明 |
GET /dsh-dashboard/api/cube |
立方体聚合 ?granularity&range&groupBy&scope&project |
GET /dsh-dashboard/api/summary |
今日/7 天/30 天/累计汇总 |
GET /dsh-dashboard/api/sessions |
会话明细行(按最近活动排序) |
GET /dsh-dashboard/api/heat |
星期 × 小时热度(168 格) |
GET /dsh-dashboard/api/errors |
错误专项:分类/聚簇/趋势/样本 |
GET /dsh-dashboard/api/insights |
专项洞察(异常日/最贵会话/慢工具/命令失败率…) |
GET /dsh-dashboard/api/day/:date |
单日下钻(会话/工具/错误/小时热度) |
GET /dsh-dashboard/api/model/:model |
模型下钻(逐日趋势/错误码/Top 会话) |
GET /dsh-dashboard/api/session/:id |
会话下钻(完整单会话画像) |
GET /dsh-dashboard/api/projects |
项目列表 |
| `GET | PUT /dsh-dashboard/api/pages` |
POST /dsh-dashboard/api/pages/validate |
单页校验(AI 导入用) |
POST /dsh-dashboard/api/pages/import |
校验 + 导入一个页面 |
POST /dsh-dashboard/api/pages/reset |
恢复出厂预设页 |
| `GET | PUT /dsh-dashboard/api/pricing` |
| `GET | PUT /dsh-dashboard/api/config` |
GET /dsh-dashboard/api/ai/prompt |
AI 编排提示词生成 |
开发
npm run check # 语法检查(src + client + formula)
npm test # 20 项离线测试(fold 分类/聚合/公式求值/下钻/校验)
npm run build:client # esbuild 打包 echarts + gridstack + formula → client/bundle.js
link 安装的实例改完源码:host 改动重启 dsh web,client 改动 npm run build:client 后刷新页面即生效。
隐私
全部统计在本地完成;bash 命令只保留「首词分类 + 计数」,不落命令原文;错误样本截断 200 字符且仅本地存储。
联系我 :飞书群

版本兼容性
本插件与 DeepSeek Harness(@deepseek-ai/dsh)的版本对应关系:
| 插件版本 | 适配 dsh 版本 | 备注 |
|---|---|---|
| 0.1.2 | 0.1.7-rc.2 | 布局编辑交互完善:8 向缩放手柄(边框/四角方向光标)、标题移动光标、保存布局按钮,当前验证版本 |
| 0.1.1 | 0.1.7-rc.2 | 新增输入/时长/子代理统计与 11 种新图类(堆叠柱/树图/桑基/河流/雷达/平行坐标/箱线/K线/直方/仪表) |
| 0.1.0 | 0.1.7-rc.2 | 首个版本 |
发版约定:每次发布新版本时,请在上表追加一行,记录该插件版本实际验证所用的
@deepseek-ai/dsh版本。package.json的engines.dsh声明最低支持版本;本表记录实际验证版本,二者配合使用。
License
MIT







